¡Esta es una revisión vieja del documento!
Tabla de Contenidos
ffmpeg
FFplay
Con la instalacció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 disponiblesultrafast,superfast,veryfast,faster,fast,medium,slow,sloweroveryslow. 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 disponiblesbaseline,main,high,high10,high422yhigh444-acodec aac: códec de audio a emplear. En este casoaac 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"
-tindica la duración. Se puede indicar en segundos o en formatohh: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"
vcodecmapfsegment_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
Info más detallada:
v4l2-ctl --info --device /dev/video0
Ejemplo de salida:
river Info: Driver name : uvcvideo Card type : TOSHIBA Web Camera - FHD: TOSHI Bus info : usb-0000:00:14.0-7 Driver version : 6.5.7 Capabilities : 0x84a00001 Video Capture Metadata Capture Streaming Extended Pix Format Device Capabilities Device Caps : 0x04200001 Video Capture Streaming Extended Pix Format Media Driver Info: Driver name : uvcvideo Model : TOSHIBA Web Camera - FHD: TOSHI Serial : 0x0001 Bus info : usb-0000:00:14.0-7 Media version : 6.5.7 Hardware revision: 0x00008373 (33651) Driver version : 6.5.7 Interface Info: ID : 0x03000002 Type : V4L Video Entity Info: ID : 0x00000001 (1) Name : TOSHIBA Web Camera - FHD: TOSHI Function : V4L2 I/O Flags : default Pad 0x01000007 : 0: Sink Link 0x02000010: from remote pad 0x100000a of entity 'Extension 4' (Video Pixel Formatter): Data, Enabled, Immutable
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
