Tabla de Contenidos

ffmpeg

FFplay

Con la instalación de FFmpeg se incluye FFplay, un sencillo reproductor multimedia que suele usarse para probar filtros de FFmpeg.

ffplay -vf "drawtext=text='Vacaciones 2023':y=h-text_h-10:x=(w/2-text_w/2):fontsize=20" video.mkv

Durante la reproducción:

Acción Tecla
Alterna pantalla completa F
Pausa/reanuda la reproducción Space
Alternar silenciar M
Salir Q, Esc
Avanzar fotograma a fotograma S

ffprobe

La instalación de FFmpeg también incluye la herramienta ffprobe que permite obtener información de archivos multimedia.

ffprobe video.mp4

Ejemplo de salida:

Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'bbb_sunflower_1080p_60fps_normal.mp4':
  Metadata:
[...]
    title           : Big Buck Bunny, Sunflower version
    artist          : Blender Foundation 2008, Janus Bager Kristensen 2013
[...]
  Stream #0:0[0x1](und): Video: h264 [...]
[...]
  Stream #0:1[0x2](und): Audio: mp3 [...]
[...]
  Stream #0:2[0x3](und): Audio: ac3 [...]

Si queremos obtener la información en formato JSON:

ffprobe -v error -hide_banner -print_format json -show_streams video.mp4

Soporte de códecs y formatos

Para saber qué códecs soporta la compilación de ffmpegque tengamos en nuestro sistema:

ffmpeg -codecs

Ejemplos de códecs:

Para saber los formatos de ficheros:

ffmpeg -formats

Ejemplos de formatos:

Convertir vídeos a MP4

ffmpeg -i example.mov -f mp4 -vcodec libx264 -preset fast -profile:v main -acodec aac example.mp4 -hide_banner

Grabar streaming

ffmpeg -i rtsp://usuario:contraseña@servidor.com:443/stream -vcodec copy prueba.mp4

Ejemplo para cámara Foscam:

ffmpeg -t 00:10:00 -i "rtsp://user:pass@192.168.0.3:443/videoMain" -vcodec copy -acodec copy foscam.mkv

Duración de la grabación

ffmpeg -t 00:10:00 -i rtsp://usuario:contraseña@servidor.com:443/stream -vcodec copy "prueba-$(date +%F).mp4"

Grabación de segmentos

Para hacer cortes en una grabación continua:

ffmpeg -i rtsp://ip.cam/unicast -vcodec copy -map 0 -f segment -segment_time 30 -segment_format mp4 "video-%03d.mp4"

El anterior comando creará ficheros de 30 segundos con el formato video-xxx.mp4, donde xxx va desde 000 hasta 999.

Edición

Cortar fragmento

Si queremos cortar un trozo de cierto vídeo sin realizar una recodificación:

ffmpeg -i video.mp4 -ss 02:00 -to 10:00 -c copy resultado.mp4

Casos de uso

Webcam

Para ver el fichero asociado con la webcam:

v4l2-ctl --list-devices

Para ver los formatos soportados por la webcam:

v4l2-ctl --list-formats-ext --device /dev/video0

Grabar un fragmento

El siguiente comando activará la webcam y grabará durante 10 segundos. El resultado se almacenará en el fichero 10seconds_of_webcam.webm.

ffmpeg -f v4l2 -framerate 25 -video_size 640x480 -t 10 -i /dev/video0 10seconds_of_webcam.webm

Streaming

Para hacer streaming del vídeo de la webcam y el audio del micro, suponiendo que además tenemos un servidor RTMP (el que se encargará de hacer la transmisión):

ffmpeg -f v4l2 -i /dev/video0 -f alsa -i hw:1,0 -c:v libx264 -pix_fmt yuv420p -framerate 15 -g 30 -b:v 500k -c:a aac -b:a 128k -ar 44100 -ac 2 -preset ultrafast -tune zerolatency -f flv rtmp://localhost:1935/live/foo

Los protocolos más habituales para streaming son:

Recursos