Manipulación de ficheros AVI
Esta receta es (o será) un compendio de pequeños trucos y utilidades para manipular ficheros AVI usando los programas libres habituales en un sistema GNU.
En realidad pienso ir apuntando aquí las soluciones que vaya encuentrando a problemas que me surjan. Se admiten sugerencias para ir incorporando a la receta.
Obtener información
Información tal como el formato del flujo de video, el bitrate o los canales y formato de las pistas de audio. Se puede conseguir con tcprobe
(del paquete transcode
). El ejemplo siguiente tiene un flujo de video en formato XVID y dos pistas de audio.
$ tcprobe -i video.avi [tcprobe] RIFF data, AVI video [avilib] V: 25.000 fps, codec=XVID, frames=206466, width=640, height=272 [avilib] A: 48000 Hz, format=0x55, bits=0, channels=2, bitrate=128 kbps, [avilib] 345110 chunks, 132158240 bytes, VBR [avilib] A: 32000 Hz, format=0x55, bits=0, channels=2, bitrate=96 kbps, [avilib] 220407 chunks, 99103424 bytes, VBR [tcprobe] summary for video.avi, (*) = not default, 0 = not detected import frame size: -g 640x272 [720x576] (*) frame rate: -f 25.000 [25.000] frc=3 audio track: -a 0 [0] -e 48000,0,2 [48000,16,2] -n 0x55 [0x2000] (*) bitrate=128 kbps audio track: -a 1 [0] -e 32000,0,2 [48000,16,2] -n 0x55 [0x2000] (*) bitrate=96 kbps length: 206406 frames, frame_time=40 msec, duration=1:35:38.640
También se puede obtener esta información con ffmpeg
, aunque no con tanto detalle:
$ ffmpeg -i video.avi Input #0, avi, from 'video.avi': Duration: 02:17:38.6, start: 0.000000, bitrate: 1434 kb/s Stream #0.0, 25.00 fps(r): Video: mpeg4, yuv420p, 640x272 Stream #0.1: Audio: mp3, 48000 Hz, stereo, 128 kb/s Stream #0.2: Audio: mp3, 32000 Hz, stereo, 96 kb/s
Trocear un fichero AVI
Con avisplit
del paquete transcode
. Se pueden definir los trozos por su duración (1:30 en el ejemplo):
O por su tamaño:
Concatenar ficheros AVI
Utilizando avimerge
del paquete transcode
.
Extraer el audio
Es decir, demultiplexar la pista de audio de un fichero AVI.
Lo haremos con mencoder
(del paquete del mismo nombre).
Eso lo extrae en el formato original. Se puede recodificar cambiando copy
por alguno de los codecs soportados. La lista de codecs se obtiene con:
Si el avi original tiene varias pistas de audio puedes elegir una con la opción -aid n
.
Con ffmpeg
Con mencoder
Se supone que se hace así, pero no funciona. Si sabes porqué, deja un comentario.
Extraer el video
Con ffmpeg
Con mencoder
Extraer video y audio a la vez
Esto es útil si el fichero de partida tiene varias pistas de audio y en el resultado sólo quieres una:
Recodificar un video
La razón más habitual para recodificar un fichero es disminuir el bitrate, es decir, conseguir que ocupe menos espacio, en detrimento de la calidad, claro.
- -b: bitrate para el video (kb/s)
- -ab: bitrate para el audio (kb/s)
- -ar: frecuencia de muestreo del audio (Hz)
- -acodec: codec de audio
Arreglar un índice roto
Multiplexar varias pistas de audio en un mismo fichero AVI
Vamos a suponer que tenemos tres ficheros: un .avi que sólo tiene la imagen y dos .mp3 con el audio en español y en inglés.
lovestory-v.avi lovestory-es.mp3 lovestory-en.mp3
Vamos a montarlo de modo que le primer canal de audio sea el español y el segundo el inglés:
$ avimerge -i lovestory-v.avi -p lovestory-es.mp3 -o lovestory-es.avi $ avimerge -i lovestory-es.avi -p lovestory-en.mp3 -o lovestory.avi
Esto se puede repetir para cualquier número de pista de auido. Los ficheros de audio que se indican con -p
pueden ser tanto .mp3 como .avi. En caso de ser .avi obviamente el flujo de imagen se ignora.
La mayoría de los reproductores libres soportan esto, incluidos mplayer, totem, xine, etc. En el caso de mplayer
puedes elegir el canal de audio con -aid
y el número de pista empezando en 1. Por ejemplo, el siguiente comando elige la pista de audio en inglés para el caso anterior.
Convertir a AVI
Referencias
- transcode command examples
- mplayer
man ffmpeg
man mplayer
- “19 cosas útiles que puedes hacer con ffmpeg ":http://mundogeek.net/archivos/2008/10/10/19-cosas-utiles-que-puedes-hacer-con-ffmpeg/
- 19 ffmpeg commands for all needs
- http://www.cuadernoderuta.es/unir-y-convertir-formatos-de-video-mpg-avi-asf-en-ubuntu/
- Using ffmpeg to manipulate audio and video files