Herramientas de usuario

Herramientas del sitio


informatica:software:ffmpeg

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anteriorRevisión previa
Próxima revisión
Revisión previa
informatica:software:ffmpeg [2021/01/24 19:19] – [Grabación de segmentos] tempwininformatica:software:ffmpeg [2025/02/05 13:20] (actual) – [FFplay] tempwin
Línea 1: Línea 1:
 ====== ffmpeg ====== ====== ffmpeg ======
 +
 +===== FFplay =====
 +
 +Con la instalación de FFmpeg se incluye FFplay, un sencillo reproductor multimedia que suele usarse para probar filtros de FFmpeg.
 +
 +<code>
 +ffplay -vf "drawtext=text='Vacaciones 2023':y=h-text_h-10:x=(w/2-text_w/2):fontsize=20" video.mkv
 +</code>
 +
 +Durante la reproducción:
 +
 +^ Acción                         ^ Tecla     ^
 +| Alterna pantalla completa  | <key>f</key>  |
 +| Pausa/reanuda la reproducción  | <key>space</key>  |
 +| Alternar silenciar  | <key>m</key>  |
 +| Salir  | <key>q</key>, <key>Esc</key>  |ffprobe gathers information from multimedia streams and prints it in human- and machine-readable fashion. 
 +| Avanzar fotograma a fotograma  | <key>s</key>  |
 +
 +===== ffprobe =====
 +
 +La instalación de FFmpeg también incluye la herramienta ''ffprobe'' que permite obtener información de archivos multimedia.
 +
 +<code>
 +ffprobe video.mp4
 +</code>
 +
 +Ejemplo de salida:
 +
 +<code>
 +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 [...]
 +</code>
 +
 +Si queremos obtener la información en formato JSON:
 +
 +<code>
 +ffprobe -v error -hide_banner -print_format json -show_streams video.mp4
 +</code>
 +
 +  * ''-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:
 +
 +<code>
 +ffmpeg -codecs
 +</code> 
 +
 +Ejemplos de códecs:
 +
 +  * H.264 (AVC, MPEG-4)
 +  * H.265 (HEVC)
 +  * AAC
 +  * MP3
 +  * OGG
 +
 +Para saber los formatos de ficheros:
 +
 +<code>
 +ffmpeg -formats
 +</code>
 +
 +Ejemplos de formatos:
 +
 +  * AVI
 +  * Matroska (MKV)
 +  * Ogg
  
 ==== Convertir vídeos a MP4 ==== ==== Convertir vídeos a MP4 ====
Línea 30: Línea 109:
  
 <code> <code>
-ffmpeg -t 00:10:00 -i rtsp://usuario:contraseña@servidor.com:443/stream -vcodec copy prueba.mp4+ffmpeg -t 00:10:00 -i rtsp://usuario:contraseña@servidor.com:443/stream -vcodec copy "prueba-$(date +%F).mp4"
 </code> </code>
  
Línea 49: Línea 128:
  
 El anterior comando creará ficheros de 30 segundos con el formato ''video-xxx.mp4'', donde ''xxx'' va desde 000 hasta 999. 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:
 +
 +<code>
 +ffmpeg -i video.mp4 -ss 02:00 -to 10:00 -c copy resultado.mp4
 +</code>
 +
 +  * ''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:
 +
 +<code>
 +v4l2-ctl --list-devices
 +</code>
 +
 +Para ver los formatos soportados por la webcam:
 +
 +<code>
 +v4l2-ctl --list-formats-ext --device /dev/video0
 +</code>
 +==== 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''.
 +
 +<code>
 +ffmpeg -f v4l2 -framerate 25 -video_size 640x480 -t 10 -i /dev/video0 10seconds_of_webcam.webm
 +</code>
 +
 +==== 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):
 +
 +<code>
 +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
 +</code>
 +
 +  * ''-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).
 +
 +  * [[https://www.baeldung.com/linux/ffmpeg-webcam-stream-video|How to Stream Video From Webcam to Network Using FFmpeg]]
 +
 +Los protocolos más habituales para streaming son:
 +
 +  * RTMP
 +  * HLS
 +  * DASH
 +  * UDP
 +  * RTP
 +  * RTSP
 ====== Recursos ====== ====== Recursos ======
  
Línea 58: Línea 221:
   * http://www.bugcodemaster.com/article/extract-images-frame-frame-video-file-using-ffmpeg   * http://www.bugcodemaster.com/article/extract-images-frame-frame-video-file-using-ffmpeg
   * http://www.bugcodemaster.com/article/get-information-video-file-using-ffmpeg   * http://www.bugcodemaster.com/article/get-information-video-file-using-ffmpeg
 +  * [[https://gist.github.com/steven2358/ba153c642fe2bb1e47485962df07c730|FFmpeg cheatsheet]]
informatica/software/ffmpeg.1611512356.txt.gz · Última modificación: por tempwin