Herramientas de usuario

Herramientas del sitio


informatica:software:ffmpeg

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
  • -v error: solo mostrar información extra si hay error.
  • -hide_banner: ocultar información sobre la compilación de FFmpeg
  • -print_format: formato en el que presentar la información.
  • -show_streams: solo mostrar información de los streams.

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:

  • H.264 (AVC, MPEG-4)
  • H.265 (HEVC)
  • AAC
  • MP3
  • OGG

Para saber los formatos de ficheros:

ffmpeg -formats

Ejemplos de formatos:

  • AVI
  • Matroska (MKV)
  • Ogg

Convertir vídeos a MP4

ffmpeg -i example.mov -f mp4 -vcodec libx264 -preset fast -profile:v main -acodec aac example.mp4 -hide_banner
  • -f mp4: indicamos que el archivo de salida tendrá el formato mp4
  • -vcodec libx264: códec de vídeo a usar (libx264 es el codificador de vídeo H264)
  • -preset fast: perfil a usar con el códec libx264. Están disponibles ultrafast, superfast, veryfast, faster, fast, medium, slow, slower o veryslow. Las preconfiguraciones lentas producen una mejor calidad de vídeo en menos espacio, pero llevará más tiempo el procesado.
  • -profile:v main: indicamos al codificador cierto perfil para usar opciones avanzadas para mejorar la compresión. Están disponibles baseline, main, high, high10, high422 y high444
  • -acodec aac: códec de audio a emplear. En este caso aac codec.
  • -hide_banner: si queremos ocultar la información sobre el proceso de ffmpeg.

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"
  • -t indica la duración. Se puede indicar en segundos o en formato hh:mm:ss.

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"
  • vcodec
  • map
  • f
  • segment_time: duración de los segmentos en segundos.

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
  • ss: indica desde dónde se hace el corte (mm:ss)
  • to: indica hasta dónde se hace el corte (mm:ss)

Casos de uso

  • Procesamiento de vídeo:
    • Rotar
    • Extracción de frames
    • Extracción de segmentos
    • Extracción de audio
    • Extracción de subtítulos
    • Conversión de colores
    • Reducción de tamaño
    • Conversión de formatos
      • Convertir GIF en vídeo
  • Procesamiento de audio:
    • Compresión de vídeo
    • Normalización
    • Ganancia
    • Remuxing
  • Empaquetado de vídeo
    • HLS
    • MPEG-DASH
    • RTMP

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
  • -c:v libx264: usaremos el códec de vídeo H.264
  • -c:a aac: usaremos el código de audio AAC
  • -f alsa -i hw:1,0: micrófono (comprobar con arecord -l).
  • -ar: frecuencia de muestreo del audio (en Hz)
  • -ac: número de canales de audio
  • -b:v: bitrate de vídeo
  • -preset: opciones para la compresión. Indicamos ultrafast que apenas realizará compresión.
  • -tune: ajustamos para que se reduzca la latencia (retraso).

Los protocolos más habituales para streaming son:

  • RTMP
  • HLS
  • DASH
  • UDP
  • RTP
  • RTSP

Recursos

informatica/software/ffmpeg.txt · Última modificación: por tempwin