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/04/05 20:18] – 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 207: | 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 235: | 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 267: | 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 415: | 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.1617646690.txt.gz · Last modified: 2021/04/05 20:18 by busindre