Mencoder es un programa codificador de vídeo, que nos permite dividir un fichero multimedia (p.ej: AVI) en varios ficheros AVI más pequeños.
Vamos a dividir el fichero de vídeo manteniendo los mismos códecs de vídeo y audio.
Mencoder también acepta otros formatos diferentes del AVI, también podremos cortarlos, pero el resultado serán ficheros en formato AVI.
SEPARAR UN FICHERO EN DOS PARTES
P.ej: Vamos a separar el fichero foo.avi en foo1.avi(duración 600 segundos) y el resto en foo2.aviSiguiendo las indicaciones de la página man de mencoder, podríamos utilizar las siguientes opciones:
$ mencoder foo.avi -o foo1.avi -oac copy -ovc copy -endpos 600
$ mencoder foo.avi -o foo3.avi -oac copy -ovc copy -ss 600
opciones de mencoder:
foo.avi
es el fichero de entrada-o foo1.avi
indica el fichero de salida-oac copy
significa que usemos el mismo códec de audio-ovc copy
significa que usemos el mismo códec de vídeo-endpos <[[hh:]mm:]ss[.ms]|size[b|kb|mb]>
Para en el instante o la posición del byte determinados.
Ejemplos:
-endpos 56
# Para a los 56 segundos.-endpos 01:10:00
# Para en 1 hora y 10 minutos.-ss 10 -endpos 56
# Para en 1 minuto y 6 segundos.$ mplayer -endpos 100mb
# Para la reproducción despés de leer 100MB del fichero de entrada.$ mencoder -endpos 100mb
# Codifica sólo 100 MB.Entonces,
-endpos 600
indica que codifique los primeros 600 segundos de vídeo.-ss <time>
Salta al instante de tiempo determinado.
Ejemplos:
-ss 56
# Salta al segundo 56.-ss 01:10:00
# Salta 1 hora y 10 minutos.Podríamos usar tramas en lugar de tiempo o tamaño:
-frames <número>
Reproduce/convierte sólo las primeras <número> tramas, y termina.
DIVIDIR UN FICHERO EN TRES PARTES O MÁS
Si queremos dividir el fichero en más de dos ficheros, debemos usar --ss junto con -endpos.
P.ej: Separar foo.avi en foo1.avi(300 segundos de duración), foo2.avi(100 segundos) y el resto en foo3.avi
$ mencoder foo.avi -o foo1.avi -oac copy -ovc copy -endpos 300
$ mencoder foo.avi -o foo2.avi -oac copy -ovc copy -ss 300 -endpos 100
$ mencoder foo.avi -o foo3.avi -oac copy -ovc copy -ss 400
*** SIN EMBARGO NO VA A FUNCIONAR!!! ***
Si simplemente dividiremos el fichero multimedia AVI especificando segundos o número de tramas, obtenemos una división imprecisa. El resultado no es una división en el punto exacto que le indicamos a mencoder, y las partes no encajarán bien entre sí.
Eso ocurre porque las divisiones con mencoder deberían usar las tramas clave como referencia.
Una trama clave o I-frame es una trama que puede ser decodificada por sí misma, independiente de las tramas adyacentes.
Por suerte mplayer nos permite detectar las I-frames. Leemos la página de manual de mplayer acerca del filtro de vídeo framestep.
$ man mplayer
framestep=I|[i]step
Reproduce sólo cada n tramas o cada intra trama (trama clave).
Si llamas al filtro con I (mayúscula) como parámetro, entonces sólo las tramas clave son renderizadas.
En los DVDs implica generalmente una de cada 12 ó 15 tramas(IBBPBBPBBPBBPBB).
En los AVI, indican cada cambio de escena, o según el valor de keyint (ver -lavopts keyint=valor si usamos MEncoder para dividir el vídeo).
Cuando se encuentra una trama clave, se imprime la cadena 'I!' seguida de una nueva línea, mostrando así el tiempo(en segundos) y el número de trama de la trama clave. (Esta información nos será útil para dividir el AVI.).
Probamos el filtro de vídeo framestep:
$ mplayer -vf framestep=I foo.avi
Movie-Aspect is 1.88:1 - prescaling to correct movie aspect. VO: [xv] 512x272 => 512x272 Planar YV12 I! A: 12.0 V: 12.0 A-V: 0.000 ct: 0.008 301/301 1% 0% 0.4% 1 0 $ I! A: 15.0 V: 15.0 A-V: 0.000 ct: 0.008 377/377 1% 0% 0.4% 1 0 $ I! A: 27.0 V: 27.0 A-V: 0.000 ct: 0.008 677/677 2% 0% 0.5% 1 0
Muestra después de V:, el tiempo de vídeo en segundos.
DIVIDIR EN DOS PARTES, BASÁNDONOS EN EL TAMAÑO Y UTILIZANDO CORRECTAMENTE LAS I-FRAMES.
P.ej: Queremos dividir el fichero AVI en dos partes, una parte de 300 MB de tamaño
Ejecutamos mplayer para averiguar dónde están siguadas las I-frames:
$ mplayer -framedrop -endpos 300mb -vf framestep=I foo.avi
Avanzamos cerca del final y obtenemos:
I! A:2360.0 V:2360.0 A-V: 0.000 ct: 0.042 59000/59000 3% 0% 0.8% 0 0 I! A:2362.8 V:2362.8 A-V: 0.000 ct: 0.042 59072/59072 3% 0% 0.8% 0 0
IMPORTANTE: Los datos de la I-frame aparecen antes de I!.
Así que la última I-frame aparece a los 2360.0 segundos.
Usaremos el tiempo de vídeo en segundos de esta última I-frame: 2360.0
$ mencoder foo.avi -o foo1.avi -endpos 2360.0 -ovc copy -oac copy
$ mencoder foo.avi -o foo2.avi -ss 2360.0 -ovc copy -oac copy
NOTA:
Algunas veces obtengo este error al codificar un archivo de vídeo:
1 duplicate frame(s)!
Este problema se resuelve cambiando el códec de audio:
-oac mp3lame
(Ésto cambiará el tamaño del fichero multimedia)
http://darkmind2007.blogspot.com/2011/04/mencoder-1-duplicate-frames.html
REFERENCIA
$ man mencoder
TRADUCIDO DE
Split a Media Video File (AVI, FLV,...) using Mencoder and MplayerPUEDE QUE TAMBIÉN LE INTERESE:
Cómo UNIR dos ficheros .AVI usando MENCODER
No hay comentarios:
Publicar un comentario