Índice general
Buscar
Mensajes nuevos
Sus mensajes
Mensajes sin respuesta
Temas activos

Registrarse
Identificarse

 

Lista de Usuarios
El equipo

 

FAQ
FAQ BBcodes
Términos de uso
Política de Privacidad


 



 


Clan - Sudamérica

Series TV

Matar o Morir

ForajidosDeLeyenda

El_desván_del_verdugo


 

Tutorial: Sincronizar audio de diferentes fps con ffmpeg (GUI Windows)

loboritmo
Género:
Mensajes: 1
Temas: 1
Registrado: Sab, 21 Ago 2021, 18:34
2

Tutorial: Sincronizar audio de diferentes fps con ffmpeg (GUI Windows)

Mensaje por loboritmo »

Hola a todo aquel que lea esto:

No frecuento el foro pero aquí descubrí, gracias a los tutoriales de gorgin (muchas gracias por tu altruismo), como sincronizar audios de vídeos a diferentes FPS. Por esto me parece lo propio mostrar aquí lo que he descubierto en los últimos meses y transmitir este conocimiento adquirido. Intentaré no enrollarme mucho y ser claro incluso para aquellos que no sepan nada de edición de audio y vídeo con ffmpeg.

En mayo cambié el ordenador y decidí instalar Linux en lugar de Windows. Los programas que hasta ese momento estaba utilizando eran solo de Windows por tanto tenía que buscar substitutos y en Linux, para la edición de audio y vídeo, ffmpeg no tiene rival. Así que me puse a leer poco a poco la documentación de ffmpeg y con ayuda de google fui haciéndome una idea de su funcionamiento.

En Windows utilizaba MeGUI para editar los audios de 25fps a 24 o 23.976 fps de una manera sencilla y si no me sincronizaba a la primera lo dejaba (me parece admirable lo de ponerse a cortar y pegar y demás arreglos que hacen en este foro).

Ffmpeg es un programa que se utiliza en el terminal con lineas de comandos por eso creo que sería mejor iniciarse con una GUI. Esta GUI se llama “FFmpeg Batch AV Converter” y es gratuita, de código abierto y está alojada en sourceforge. Es para sistemas operativos Windows.


Con este programa se pueden hacer múltiples cosas pero yo me centraré más en la sincronización del audio aunque para familiarizarnos algo con las opciones que utiliza ffmpeg os explicaré algunas cosas básicas de otros parámetros. Cualquiera que quiera ampliar más sobre los filtros y opciones que tiene ffmpeg puede mirar la extensa documentación de su web.

En la imagen he numerado lo que me parece destacable para lo que nos compete:
1- Con el asistente podemos elegir de una manera guiada el tipo de codec de vídeo y audio y configurar sus parámetros. En la sección donde elegimos los parámetros de audio podemos seleccionar normalizar el audio y también ralentizarlo/acelerarlo (este es el que nos interesa). La secuencia de comandos de lo que hayamos elegido lo podemos ver en los parámetros (3).
2- Aquí podemos elegir el perfil de entre los que vienen por defecto (fijaros en los parámetros utilizados por los diferentes perfiles) o los que hayamos guardado nosotros. Al final del asistente (1) nos da la opción de guardar el perfil que hayamos creado.
3- Parámetros: aquí está la configuración que hayamos elegido y cuyos valores podemos modificar de forma manual si quisiéramos cambiar o añadir algo.
4- Formato de salida (mkv, avi, mp3, flac,...).
5- Ajustar el audio si es necesario adelantarlo o atrasarlo.
6- Podemos elegir hasta 3 perfiles múltiples de los almacenados o escribirlos manualmente y ejecutarlos de forma secuencial, uno detrás del otro. En nuestro caso si queremos, por ejemplo, un video a 23.976, otro a 23.975 y otro último a 23.920 fps.
7- Cortar en un momento específico.
8- Por si queremos unir los vídeos con sus correspondientes pistas de audio y subtítulos. Desde aquí se pueden configurar parámetros para codificar las pistas de forma individual (aunque en vídeos con varias pistas de audio no he conseguido codificar cada pista con diferente bitrate).
Que cada uno trastee y descubra por si mismo que mas puede hacer con este programa.

Parámetros:
Vamos a tomar como referencia algunos perfiles para explicar ciertos parámetros que considero importantes. Aconsejaría estudiar un poco los parámetros de los diferentes perfiles, poco a poco os daréis cuenta que es bastante fácil entender algunos parámetros al ver como se utilizan.

-map 0 -c:v copy -c:a aac -cutoff 20K -b:a 256K -ac 2
  • -map 0 → Indica que sean codificadas todas las pistas, es decir, todas las pistas de audio y subtítulos. De no estar presente este parámetro ffmpeg, por defecto, solo codificará la pista de vídeo con mayor resolución, el audio con mayor nº de canales y el primer subtitulo que encuentre. En la documentación podéis ver como mapear las pistas para elegir cuales codificar y como.
  • -c:v → comienzo de los parámetros de vídeo. Para el audio sería –c:a y los subtítulos –c:s.
  • -c:v copy → copia video.
  • -c:a aac -cutoff 20K -b:a 256K -ac 2 → codec de audio aac; -cutoff 20K establece la frecuencia Cutoff (no se muy bien lo que hace); –b:a 256k establece el bitrate; –ac 2 establece el nº de canales.
-c copy
  • Hace una copia pero solo del video, del audio con más canales y el primer subtítulo que encuentre. Si no se le especifica que copie ffmpeg por defecto codifica el video a h264 y el audio a AAC
-c:v copy -aspect 2.35 -c:a copy -c:s mov_text -movflags faststart
  • -c:v copy -aspect 2.35 → Copia pero cambiando el ratio de aspecto a 2.35 (otros ejemplos: -aspect 720:540; -aspect 16:9; -aspect 4:3).
  • -c:a copy → Copia de la pista de audio con mas canales (o la primera que encuentre si tienen el mismo).
  • -c:s mov_text → convierte subtítulos al formato mov_text apropiado para contenedores mp4. Ffmpeg convierte subtítulos de formato texto a texto (ass, srt, mov_text,...) y de imagen a imagen (PGS, idx, sub). Para imagen a texto necesitas un programa externo que tenga OCR (Subtitle Edit).
  • -movflags faststart → con mp4 mueve los metadatos al principio. Esto es importante si queremos que el vídeo se vea en streaming. Por defecto los metadatos estarían al final. Estos metadatos contienen información como la duración, los capítulos, idiomas, etc Al estar delante se descargan al principio y puedes,por ejemplo, avanzar en el vídeo sin tener que descargarlo antes por completo (creo que esta es la opción “Optimizar para web” en Handbrake). Esto me soluciono el problema que tenía con el streaming desde un canal de Telegram.
Con esto y examinando los parámetros de los perfiles que vienen con el programa creo que es suficiente para empezar a crear vuestras propias configuraciones. También utilizar el asistente para crear diferentes configuraciones y examinar como se forman la linea de comandos ayuda mucho a ir entendiendo como interaccionar con ffmpeg.

Centrémonos ahora en el filtro de audio atempo con el que podemos acelerar y ralentizar el audio.

Si utilizamos el asistente para crear un perfil de audio en formato flac, con canales y muestreo por defecto (source), VBR a 0 (mayor tamaño) y modificamos “Acelerar/ralentizar” al 1% obtenemos la siguiente linea de comandos:

-vn -c:a flac -compression_level 0 -filter:a atempo=1.01
  • -vn → indica que no se procese el vídeo (si esto no estuviera la codificación tarda más). Para audio usaríamos–an y para los subtitulos, –sn
  • -c:a flac -compression_level 0 → formato flac sin ninguna compresión
  • -filter:a atempo=1.01 → filtro de audio atempo que en este caso acelera el audio, es decir, el archivo final sera mas corto
Hasta aquí todo bien, pero... ¿como obtener los valores de -atempo para sustituir a MeGUI?

Con MeGUI podía cambiar solo de 25 a 24 o 23.976 (24000/1001=23.976023976...) fps tanto en una dirección como en otra.

Para situarnos:
  • atempo > 1 Se acorta el audio
  • atempo < 1 Se alarga el audio

Para pasar de 25 a 24
atempo=24/25=0.96
-vn -c:a flac -compression_level 0 -filter:a atempo=0.96

De 25 a 23.976
atempo=23.976/25=0.95904
-vn -c:a flac -compression_level 0 -filter:a atempo=0.95904

De 24 a 23.976
atempo=23.976/24=1.001001001....
-vn -c:a flac -compression_level 0 -filter:a atempo=1.001001001

De 22.5 a 24.2
-atempo=22.5/24.2= 0.92975206...
-vn -c:a flac -compression_level 0 -filter:a atempo=0.92975206



Como podréis observar, con este método desaparecen las limitaciones de MeGUI de solo poder pasar de 25 a 24 o 23.976 y viceversa.

Para entender bien esto hice algunas pruebas y conseguí arreglar el audio de pelis en las que, aun utilizando los valores estándar de MeGUI, todavía se desincronizaban apenas unos segundos.

Explico el proceso para hacerme entender mejor. Partía de, por ejemplo, la siguiente linea de comandos (fijaros ahora que ffmpeg hace la división y no yo como en los ejemplos anteriores)

-vn -c:a flac -compression_level 0 -filter:a atempo=23.976/25

Si no cuadraba el audio lo ajustaba al principio y comprobaba si en la parte final se atrasaba o adelantaba, y así ver si necesitaba alargar o acortar. Que tenia que acortarlo (atempo>1) repito el comando anterior pero con 23.977, 23.978, etc. Que tenia que alargarlo (atempo<1) entonces lo repetía con 23.975, 23.974, etc

Se puede afinar tanto como quieras → atempo=23.97455/25

Con la opción de esta GUI de perfiles múltiples (6) podemos cambiar los fps de una tirada con 3 perfiles diferentes configurados con distintos fps.

Por último decir que en las pruebas que hice he utilizado las 2 formas descritas de asignarle un valor a atempo, dependiendo de cual me resultara mas practica. Cuando salto de 25 a los otros valores hago que ffmpeg haga la división (por ejemplo 23.974/25). Para un audio que solo varia unos segundos, al tener que partir de 1, me es mejor escribir el valor (por ejemplo alargarlo unos segundos 1.00095). Es cosa de ir tanteando pues no es lo mismo un vídeo de 1 hora que de 2, etc

Y hasta aquí el tutorial. Espero haberme explicado lo suficientemente bien y sino pues google y la documentación de ffmpeg. Yo es lo que hago.

Este ha sido el primer post que he escrito en mi vida. Espero que haya salido bien y que se pueda leer de una manera clara. En caso contrario mis disculpas.

Un cordial saludo a esta gran comunidad.
Última edición por totiyeah el Dom, 09 Jul 2023, 22:20, editado 1 vez en total.
Razón: poner imágenes en spoil
Estos usuarios agradecieron al autor loboritmo por el mensaje (total 3):
totiyeah, hipolismata, robertklaus
Valoración: 0.83%
 
Responder

Volver a “Tutoriales”