comandos_ffmpeg_utiles
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
comandos_ffmpeg_utiles [2021/03/23 18:23] – busindre | comandos_ffmpeg_utiles [2022/07/16 22:45] (current) – busindre | ||
---|---|---|---|
Line 88: | Line 88: | ||
<code bash> | <code bash> | ||
- | **Transformar vídeo en fichero de audio / Extraer audio**. | + | **Transformar vídeo en fichero de audio / Extraer |
<code bash># Extraer el audio sin codificar, por lo tanto el fichero tendrá el formato original (mp3, ogg, etc) y la extensión no juega ningún papel relevante. | <code bash># Extraer el audio sin codificar, por lo tanto el fichero tendrá el formato original (mp3, ogg, etc) y la extensión no juega ningún papel relevante. | ||
ffmpeg -i input-video.avi -vn -acodec copy solo_audio.ogg | ffmpeg -i input-video.avi -vn -acodec copy solo_audio.ogg | ||
# Extraer audio codificando para cambiarlo de formato, por ejemplo en mp3 sin perdidas de calidad con respecto al original. | # Extraer audio codificando para cambiarlo de formato, por ejemplo en mp3 sin perdidas de calidad con respecto al original. | ||
- | ffmpeg -i sample.avi -q:a 0 -map a sample.mp3</ | + | ffmpeg -i sample.avi -q:a 0 -map a sample.mp3 |
+ | |||
+ | # Eliminar todos los streams de audio. | ||
+ | ffmpeg -i input.avi -map 0 -map -0:a -c copy output_si_sonido.avi | ||
+ | |||
+ | # Eliminar todos los streams de audio excepto algunos (el número 3 y 6 para el ejemplo). | ||
+ | ffmpeg -i input.avi -map 0 -map -0:a:3 -map -0:a:6 -c copy output_con_dos_streams.avi | ||
+ | |||
+ | # Dejar solo el stream número 10. (-map 0 -map -0:a:9 Selecciona todos y luego habilita el stream de audio número 9). | ||
+ | ffmpeg -i input.avi -map 0 -map -0:a:9 -c copy output_sonido_concreto.avi | ||
+ | </ | ||
**Cambiar entre formatos de vídeo sin perder calidad**. | **Cambiar entre formatos de vídeo sin perder calidad**. | ||
Line 137: | Line 147: | ||
ffmpeg -i " | ffmpeg -i " | ||
- | # Empaquetando el streaming en un contenedor MKV intentando solventar problemas con las marcas de tiempo. | + | ## Empaquetando el streaming en un contenedor MKV intentando solventar problemas con las marcas de tiempo. |
# Error: Non-monotonous DTS in output stream 0:1; previous: 1530923, current: 1530900; changing to 1530923. This may result in incorrect timestamps in the output file. | # Error: Non-monotonous DTS in output stream 0:1; previous: 1530923, current: 1530900; changing to 1530923. This may result in incorrect timestamps in the output file. | ||
ffmpeg -i " | ffmpeg -i " | ||
- | </ | + | |
+ | # Error: Non-monotonous DTS in output stream 0:1; previous: 1530923, current: 1530900; changing to 1530923. This may result in incorrect timestamps in the output file. (Opción 2). | ||
+ | ffmpeg -i " | ||
**Reducir tamaño de ficheros (y resolución) de vídeo controlando la calidad (bitrate)**. | **Reducir tamaño de ficheros (y resolución) de vídeo controlando la calidad (bitrate)**. | ||
Line 205: | Line 217: | ||
ffmpeg -y -i 1080_video.mkv -vf scale=3840: | ffmpeg -y -i 1080_video.mkv -vf scale=3840: | ||
</ | </ | ||
+ | |||
+ | **Convertir Videos / películas de DVD, Bluray o imagenes ISO a un solo fichero de vídeo**. | ||
+ | |||
+ | Los discos DVD o Bluray tienen el vídeo dividido en ficheros más pequeños, por ejemplo DVD usa de vídeo " | ||
+ | |||
+ | <code bash># Se monta una imagen de DVD en el directorio /mnt/test/ y se identifican qué ficheros contienen la película, que normalmente son los que más tamaño tienen. | ||
+ | mount -o loop Evangelion.iso | ||
+ | |||
+ | du -h / | ||
+ | 10K / | ||
+ | 10K / | ||
+ | 90K / | ||
+ | 90K / | ||
+ | 159M / | ||
+ | 1, | ||
+ | 1, | ||
+ | 1, | ||
+ | 1, | ||
+ | 195M / | ||
+ | 18K / | ||
+ | 18K / | ||
+ | 100K / | ||
+ | 15M / | ||
+ | |||
+ | cat / | ||
+ | |||
+ | |||
+ | # Mostrar la información sobre los Streams que componen el fichero. En este caso interesa el Stream 0:1 (Vídeo de la película) y el 0:2 (idioma castellano). | ||
+ | # Se usa " | ||
+ | ffmpeg -probesize 4G -analyzeduration 4G -i $HOME/ | ||
+ | ... | ||
+ | Stream # | ||
+ | Stream # | ||
+ | Side data: | ||
+ | cpb: bitrate max/ | ||
+ | Stream #0:2[0x80]: Audio: ac3, 48000 Hz, 5.1(side), fltp, 448 kb/s | ||
+ | Stream #0:3[0x83]: Audio: ac3, 48000 Hz, 5.1(side), fltp, 448 kb/s | ||
+ | Stream #0:4[0x21]: Subtitle: dvd_subtitle | ||
+ | Stream #0:5[0x22]: Subtitle: dvd_subtitle | ||
+ | Stream #0:6[0x20]: Subtitle: dvd_subtitle | ||
+ | Stream #0:7[0x23]: Subtitle: dvd_subtitle | ||
+ | |||
+ | |||
+ | # Se genera el fichero mkv dependiendo del idioma que queramos. | ||
+ | ffmpeg -i $HOME/ | ||
+ | ffmpeg -i $HOME/ | ||
+ | |||
+ | Se podrían incluir subtitulos si se quisiera también usando las opciones de mapeo. En este caso no se conoce qué idioma tienen los subtitulos o los streams de audio, por lo que lo mejor es hacer un par de pruebas hasta que sean identificados y podamos crear el fichero como se crea conveniente, | ||
**Cambiar de formato múltiples archivos usando ffmpeg**. | **Cambiar de formato múltiples archivos usando ffmpeg**. | ||
Line 233: | Line 293: | ||
ffmpeg -i video.mpg -ab 26k -f flv video1.flv</ | ffmpeg -i video.mpg -ab 26k -f flv video1.flv</ | ||
- | **Transformar avi en mpeg y limitar el fichero resultante a un tamaño determinado** (2 Gbytes). | + | **Transformar |
<code bash> | <code bash> | ||
- | **Unir fichero de video con fichero de audio**. | + | **Unir |
<code bash> | <code bash> | ||
Line 265: | Line 325: | ||
**Agregar subtítulos mediante un fichero srt a un vídeo**. | **Agregar subtítulos mediante un fichero srt a un vídeo**. | ||
<code bash> | <code bash> | ||
+ | |||
+ | Eliminar subtitulos y cualquier otra cosa que no sea audio y vídeo. | ||
+ | <code bash> | ||
**Estabilizar videos grabados con temblores (dos pasos). Adaptar valor de " | **Estabilizar videos grabados con temblores (dos pasos). Adaptar valor de " | ||
Line 273: | Line 336: | ||
**Convertir video 3D en 2D** / **Elegir idioma**. | **Convertir video 3D en 2D** / **Elegir idioma**. | ||
+ | |||
+ | Los ficheros que contienen varios idiomas y/o subtítulos ocupan más espacio. Si se quiere eliminar todo lo que no es de interés, se puede usar la opción map de ffmpeg par aincluir en el fichero resultanto únicamente los " | ||
+ | <code bash># Mostrar streams de un fichero con ffmpeg. | ||
+ | ffmpeg -i film.mkv 2>&1 | grep Stream | ||
+ | Stream #0:0: Video: h264 (High), yuv420p(progressive), | ||
+ | Stream #0:1(spa): Audio: ac3, 48000 Hz, 5.1(side), fltp, 384 kb/s | ||
+ | Stream #0:2(jpn): Audio: ac3, 48000 Hz, 5.1(side), fltp, 384 kb/s (default) (forced) | ||
+ | Stream #0:3(spa): Subtitle: ass (default) (forced) | ||
+ | Stream #0:4: Attachment: ttf | ||
+ | Stream #0:5: Attachment: ttf | ||
+ | Stream #0:6: Attachment: ttf | ||
+ | |||
+ | # Eliminar los subtítulos y el idioma japones, dejando unicamente dos Streams, el vídeo y el idioma español. | ||
+ | ffmpeg -i film.mkv -map 0:0 -map 0:1 -q:v copy -c:a copy film.mkv_only_spa_audio.mkv | ||
+ | # Si se quisiera codificar en mp3 el Stream del audio se ejecutaría el siguiente comando. | ||
+ | # ffmpeg -i film.mkv -map 0:0 -map 0:1 -q:v copy -c:a libmp3lame film_only_spa_audio_mp3.mkv</ | ||
Los videos en 3D al reproducirlos de manera estándar, sin implementar el 3D, muestran dos " | Los videos en 3D al reproducirlos de manera estándar, sin implementar el 3D, muestran dos " | ||
Line 397: | Line 476: | ||
Cuando un vídeo se reproduce bien en el sistema operativo con aplicaciones tipo mplayer, VLC, etc pero este tiene problemas al reproducirse en un dispositivo supuestamente compatible con el formato, como una smart TV. Una posible solución es que ffmpeg genere un nuevo fichero a partir del original (en el ejemplo se respeta la calidad de audio y vídeo). | Cuando un vídeo se reproduce bien en el sistema operativo con aplicaciones tipo mplayer, VLC, etc pero este tiene problemas al reproducirse en un dispositivo supuestamente compatible con el formato, como una smart TV. Una posible solución es que ffmpeg genere un nuevo fichero a partir del original (en el ejemplo se respeta la calidad de audio y vídeo). | ||
<code bash> | <code bash> | ||
+ | |||
+ | ** Girar / Rotar un vídeo** | ||
+ | |||
+ | Depende del dispositivo de grabación y su uso los vídeos pueden ser grabados en vertical (90° o 270°) u horizontal (0° o 270°). Los 0° se considera cuando se filma en horizontal, teniendo la parte del micrófono a la derecha y la parte del altavoz en la izquierda. Los valores de rotación son incluidos como metadatos en los vídeos. | ||
+ | |||
+ | Si simplemente se ha grabado un vídeo con un dispositivo móvil y el giroscopio ha provocado que la filmacion incluya información sobre rotación que dificulta su visualización. La solución es borrar el metadato concreto para que pueda reproducirse en el dispositivo. En casos donde hay un vídeo horizontal grabado desde un celular y debe verse en horizontal en otro dispositivo, | ||
+ | |||
+ | Para transformar un vídeo de horizontal a vertical (o al contrario) se deben modificar los valores de rotación y luego cambiar el alto y ancho del vídeo. Lo primero que debe hacerse es obteber información sobre la rotación del vídeo y su resolución. | ||
+ | <code bash># Rotación de 90.00 y resolución 1280x720. | ||
+ | ffmpeg -i fichero.MOV 2>&1 | grep " | ||
+ | |||
+ | Stream # | ||
+ | displaymatrix: | ||
+ | |||
+ | Eliminar rotación. | ||
+ | <code bash> | ||
+ | |||
+ | Rotar el vídeo usando la opción transpose. Se pueden usar números o bien los nombres cclock_flip, | ||
+ | < | ||
+ | |||
+ | 0 cclock_flip En sentido contrario a las agujas del reloj y en sentido vertical (por defecto). | ||
+ | 3 clock_flip | ||
+ | 1 clock En el sentido de las agujas del reloj. | ||
+ | 2 cclock | ||
+ | |||
+ | <code bash> # Rotación de 90° a la derecha. | ||
+ | ffmpeg -i fichero_sin_rotacion.mov -vf " | ||
+ | # Rotación de 180° a la izquierda. | ||
+ | ffmpeg -i fichero_sin_rotacion.mov -vf " | ||
+ | # Rotación de 180° a la derecha. | ||
+ | ffmpeg -i fichero_sin_rotacion.mov -vf " | ||
+ | </ | ||
+ | |||
+ | Si ahora se usa " | ||
+ | |||
**Streaming básico con ffmpeg / mplayer**: https:// | **Streaming básico con ffmpeg / mplayer**: https:// |
comandos_ffmpeg_utiles.1616520229.txt.gz · Last modified: 2021/03/23 18:23 by busindre