Sincronice audio por separado con video+audio de cámara defectuoso, recomendaciones NLE gratuitas

Mi caso de uso, en caso de que los detalles ayuden a las personas a entender lo que estoy buscando: mi hermano necesita algunos videos de él cantando mientras toca el piano, para enviarlos como una audición para una cena con teatro. Para este trabajo, ya conoció al director musical, por lo que esta no es una primera impresión, pero obviamente queremos que luzca y sobre todo suene bien. No me imagino poniendo ningún efecto de video o títulos / créditos. (Suponemos que los metadatos deben ser metadatos, como el título de la página web o el nombre del archivo, y almacenados en los metadatos del contenedor del video, no grabados en el video). Por lo tanto, el objetivo de estos videos es verlos en una computadora, probablemente a través de YouTube, no en DVD. o transmitir.

Usamos una cámara digital para grabar video, pero la calidad del audio no es lo suficientemente buena. Grabamos audio al mismo tiempo con un micrófono analógico conectado a su computadora portátil (con Audacity), pero debe sincronizarse manualmente. Más detalles sobre los detalles en la parte inferior, para cualquiera que tenga curiosidad. Los relojes de la cámara y de la computadora portátil no están del todo de acuerdo sobre la duración de un segundo : la cámara en realidad graba a aproximadamente 29.981 fps, cuando cree que está grabando a 30 fps (con el audio sincronizado).

Así que tengo 4 videos, de 7 a 22 minutos de duración, y 4 proyectos de audacity con mejor audio para cada video (que puedo exportar a wav o flac), pero no sincronizados. Resultado deseado: un archivo por canción, con el audio de audacity alterado lo menos posible

Necesito:

  • alinear el inicio de cada audio externo (wav o flac) con el audio sincronizado pero con mal sonido que viene en el mismo archivo que cada video
  • estire el audio externo o el clip de la cámara a+v para que también se alineen al final
  • descartar el audio que vino con el archivo de video (o silenciarlo y guardarlo como referencia para que pueda regresar y corregir la alineación si noto un problema, sin comenzar desde cero).
  • seleccione el rango de tiempo de la "buena toma" de cada canción.
  • exportar estos segmentos no superpuestos de mis videos fuente, un archivo de salida por canción. (Los videos fuente más largos tienen varias canciones)
  • codifique cada canción con ffmpeg / x264 / libfdk-aac y cárguela en youtube, y/o péguela en mi sitio web con una etiqueta de video HTML5. La exportación desde NLE en un formato sin pérdidas que puedo enviar a ffmpeg está bien.

Sé lo que estoy haciendo con el contenedor ffmpeg / x264 / libfdk-aac / flac / libmp3lame / mp4 para hacer los archivos finales para poner en youtube y/o en mi sitio web; No necesito ayuda con esa parte.

Hice la parte de sincronización a/v del problema para el primer video, como prueba de concepto antes de grabar más:

Con audacia, cargué el audio de la cámara .MOV y descubrí que necesitaba desplazar la pista del micrófono externo a la izquierda en 5,34563 s para alinearla con la pista de la cámara. Hice eso y corté la parte antes de cero segundos. Luego, al final, descubrí que la pista de la cámara tenía que desplazarse a la derecha 0,43144 s para alinearse con la pista del micrófono externo a 11 m: 30 s. Así que tuve que hacer que el video fuera 0.431 segundos más largo para permanecer sincronizado con el audio. Exporté la pista del micrófono externo desplazada y recortada a un archivo .flac desde audacity, después de usar el filtro de reducción de ruido.

Luego le di eso a ffmpeg:ffmpeg -i session2-shifted.flac -an -i P1000669-sess2.MOV -shortest -c:a libmp3lame -q:a 1 -c:v libx264 -preset fast -crf 18 -filter:v "setpts=690.43144*PTS/690,transpose=2:passthrough=portrait" -r "30 * 690 / 690.43144" -movflags +faststart out.mp4

(Solo tenía el codificador AAC no muy bueno incorporado de ffmpeg en la compilación de Windows de ffmpeg que puse en la computadora portátil de mi hermano, de ahí el audio mp3 para una prueba).

Así que mi salida es un mp4 de 29.981 fps, con sincronización A/V de principio a fin. (29.981 está cerca de NTSC 30/1.001 ~= 29.976, pero eso es solo una coincidencia). Debería poder volver a ejecutar eso con salida sin pérdidas (o -codec copy), y luego cortar las secciones que quiero. Ya sea con un NLE, o tenga en cuenta una hora de inicio/finalización, y useffmpeg -ss [start] -to [stop] -i session2-synced.mp4 -x264 -blah -blah song1.mp4

Hice que mi hermano aplaudiera al principio Y al final de cada video mientras se grababa el sonido externo, por lo que tenemos marcas de sincronización que deberían ser visualmente obvias en la forma de onda de los últimos 3 videos. (Alinear el primero fue un poco complicado, me alegro de haber hecho uno a mano antes de grabar el resto).

Estoy buscando recomendaciones de software para hacer todo eso de manera más rápida/fácil que el proceso manual que utilicé.

Yo uso GNU/Linux, mi hermano usa Windows. Idealmente, hay un NLE que es bueno para este caso de uso y es multiplataforma, así puedo mostrarle a mi hermano cómo cortar segmentos de un video más largo que graba en su teléfono o algo así, con el mismo software que aprendo a usar. . Solo me interesa el software de código abierto. No estoy interesado en invertir tiempo en aprender algo que no es de código abierto. (Y no voy a gastar dinero en eso cuando ya puedo hacer lo que necesito con audacity y ffmpeg). Sin embargo, no omita una buena sugerencia solo por falta de soporte multiplataforma, por favor.

Hay muchas opciones en GNU/Linux e incluso se ha preguntado en Ask Ubuntu .

Sé lo que se supone que puede hacer un NLE, pero no he usado uno antes. (Solo ffmpeg / mencoder con tiempos de inicio / parada cubrieron las cosas mínimas que he hecho antes).

Soy consciente de que, por lo general, las personas estiran y corrigen el tono del audio para que se ajuste al video, pero confío más en el reloj de la computadora portátil que en el reloj de la cámara. Y quiero mantener la manipulación del audio al mínimo. Aunque ya necesito una eliminación de ruido / 60 Hz bastante seria en el audio del micrófono externo, por lo que no es una calidad súper alta prístina. Así que estoy dispuesto a considerar una solución que amplíe/corrija el tono del audio en lugar de hacer videos fps no estándar.

Ya probé pitivi, pero la visualización de la forma de onda de audio no era muy visible, por lo que probablemente aún tendría que sincronizar con audacia. Como se instaló desde el paquete Ubuntu 14.04, no se puede exportar con x264 y el único códec sin pérdidas es Dirac. (sin ffvhuff...) La exportación de dirac sin pérdidas es inaceptablemente lenta, así que ese es otro gran inconveniente. (Me encantan los códecs de código abierto / sin patentes como VP9, ​​pero no quiero que nadie tenga problemas para reproducir los videos, así que voy con video H.264 y audio AAC de alta tasa de bits. ¿O YouTube acepta VP9? cargas?)

También he usado avidemux, pero IIRC no funciona bien en los contenedores modernos. Definitivamente no le gusta leer códecs con marcos b de contenedores modernos, por lo que es prácticamente un callejón sin salida. (h.264 en mkv o mp4, ¿alguien?) Puede hacer audio desde un archivo externo, pero no muestra formas de onda para sincronizar.

Esta pregunta es similar a otras que se han hecho antes:

La primera pregunta tiene una respuesta que es más o menos lo que estoy buscando: http://auxmic.com/ , pero eso es solo para Windows y no dice nada sobre cómo maneja la desviación del reloj en la entrada. Podría intentarlo, ya que es un problema. lo suficientemente simple como para funcionar bien con WINE en Linux. Todavía necesitaría usar algo más para eliminar la buena toma de cada canción de los videos.

Ninguna de las otras respuestas tiene sugerencias útiles, tal vez porque las preguntas no fueron lo suficientemente específicas.

Para aquellos curiosos sobre lo que realmente usé:

La cámara era una Panasonic Lumix FZ28 en un trípode, quizás a 2 m del sujeto, lo suficientemente alto como para obtener una buena vista de las teclas del piano y su rostro. Graba 1280x720 o 640x480 MJPEG + 16kHz mono PCM en un contenedor MOV, en tarjetas SD. La calidad del video es bastante buena, con suficiente luz. A 720p, puede durar poco menos de 12 minutos antes de alcanzar el tamaño máximo de archivo de 2 GB para FAT32 y detenerse. (22 Mbit/s más o menos, obviamente necesita ser xcodificado para el uso final). El escalador de video en la cámara es malo e introdujo algunas bandas feas de efectos de aliasing o algo en la pared que colgaba detrás de mi hermano cuando grabamos en 640x480 (11Mb /s MJPEG). Usamos 640x480 de todos modos para permitir que la cámara funcionara por más tiempo, ya que cada disparo por separado requiere trabajo manual para sincronizar A/V. Además del tiempo para seleccionar un punto de inicio/finalización y exportar un archivo.

El micrófono era solo un micrófono de escritorio de computadora Labtec barato que teníamos por ahí. Captó una gran cantidad de interferencias de 60 Hz, incluso cuando su cable no estaba cerca de los cables de alimentación de las luces y el piano digital. (Incluso con la computadora portátil con batería). La función de eliminación de ruido de Audacity hace un buen trabajo eliminando los 60 Hz y el silbido de fondo. Tener el micrófono colocado justo encima del piano captó mucho del sonido de golpear físicamente las teclas del piano. Si hubiéramos tenido tiempo antes de que regresara a la escuela, habría usado algo como soporte de micrófono para colocar el micrófono más lejos de las teclas del piano y no en contacto físico con el cuerpo del piano digital.

Hice un proyecto separado en Audacity para cada archivo de video, ya que el desplazamiento de A/V sería diferente para cada uno. Podría haber hecho un gran proyecto de audacia, pero no creo que hubiera ayudado en nada, excepto tal vez poder ajustar la reducción de ruido / paso alto (para tal vez reducir el ruido de las teclas del piano) ajustes de filtro y luego aplicarlo a todo a la vez.

Por cierto, ¿es "deriva del reloj" el término correcto para la desincronización con el tiempo debido a fuentes grabadas con relojes de diferentes velocidades? Acabo de inventar esa terminología, pero creo que probablemente haya un término establecido.
Hice esta pregunta en softwarerecs y la respuesta también fue Kdenlive.
@sebix, gracias, pero como dije, kdenlive no maneja pistas tan largas que una deba estirarse para que coincida con la otra, así como la alineación en un punto, para mantenerse sincronizado en toda la duración. Es por eso que no marqué mi propia respuesta como aceptada. :/
Esa es también la restricción con la que estoy luchando. Tal vez en algún momento estoy tan molesto por eso, que empiezo a mejorar la situación...

Respuestas (3)

Probé kdenlive, así que publicaré mis hallazgos al respecto como respuesta. No funcionó del todo, por lo que no voy a marcar esto como la solución aceptada.

kdenlive importa fácilmente mis clips en mjpeg+pcm y flac. Y parece que puede exportar a través de ffmpeg, que es lo que quiero.

Tiene una función para "establecer una referencia de audio" y, para otras pistas, "alinear el audio con la referencia". Eso es perfecto, alinear el audio mediante programación es mucho mejor que arrastrar cosas manualmente para alinear las formas de onda a simple vista. Sin embargo, no parece manejar la deriva del reloj en absoluto. En mi toma de 23 minutos, tuvo una sincronización perfecta a los 4 minutos. Fue un toque fuera de sincronización al principio, y tal vez 0.5 segundos fuera de sincronización en la marca de 19 minutos. (No tengo un buen punto de sincronización después de eso, ya que esa toma alcanzó el límite de tamaño de archivo de 2 GB, xD)

La visualización de la línea de tiempo de KDENlive está en h:mm:ss.frames, no en fracciones decimales de segundo, lo que me confundió al principio. Estaba pensando que había estirado una pista, pero no, no fue así.

Es fácil saber que hay un problema dejando ambas pistas de audio sin silenciar, aunque eso revelará problemas demasiado pequeños para notarlo visualmente. (En mis pistas más largas, como esta, la deriva eventualmente se vuelve lo suficientemente grande como para ser un problema para la sincronización AV visual).

Lo comprobé manualmente en audacity: con el inicio de ambas pistas alineadas, están separadas por 0,68 segundos en la misma marca de sincronización de 19 minutos. Así que podría hacer mi alineación en kdenlive manualmente, pero su herramienta automática para hacerlo desafortunadamente no admite la corrección de la desviación del reloj mediante el estiramiento.

kdenlive muestra las formas de onda de audio muy bien, especialmente. si va a configurar->línea de tiempo->altura de la pista: aumente a 80 o 100 píxeles. Buena interfaz de usuario para acercar la línea de tiempo.

Si termino haciendo la sincronización AV con audacia antes de exportar, podría usar kdenlive para el resto del proceso. Tendré que ver qué tan fácil es hacer varios videos a partir de segmentos de una sola línea de tiempo.

Prueba la edición de video de Blender.

Si el video y el audio se grabaron al mismo tiempo, será fácil sincronizarlos, solo asegúrese de que la velocidad de fotogramas de su video esté configurada correctamente en Blender y que marque la sincronización en el editor de video (en la parte inferior al lado de la línea de tiempo y reproducir, detener, etc... botones.

No se asuste por la complejidad de Blender, no va a usar ninguna de las otras funciones, solo va a usar la edición de video y eso es bastante sencillo.

Gracias, lo probaré si dices que hace lo que estoy buscando. Licué un poco de texto en 3D como hace 15 años, recuerdo que pensé que la interfaz de usuario era ordenada. :)
Ok, cargué mi video con un audio externo en Blender, pero aún no vi nada sobre alinearlos automáticamente en función de la similitud del audio. O estirar una pista para alinearla con los otros dos puntos de sincronización dados. Esta respuesta no responde a ninguno de los detalles de mi pregunta, especialmente la parte sobre cómo lidiar con relojes no sincronizados. (es decir, la parte que hace que la sincronización no sea trivial, aunque las cosas se grabaron al mismo tiempo...) Tal vez Blender pueda hacer cosas, seguiré hurgando. Pero esta respuesta no me señaló ningún lugar útil.
No necesita estirar nada si establece la velocidad de fotogramas correcta para el video que va a cargar. No hay magia, obviamente tienes que saber aproximadamente el momento en que el audio coincide con la imagen, a partir de ahí puedes ajustar el cuadro exacto con el tiempo exacto de audio. Una vez que haya sincronizado un solo cuadro, todo el video se sincronizará (suponiendo que haya configurado la velocidad de cuadros de video correcta y presionó el botón sync-av)
Vuelva a leer mi pregunta. Mis dos dispositivos de grabación no están de acuerdo en cuánto dura un segundo (porque uno es una cámara Lumix, ni siquiera una DSLR). Ese es todo el punto de la pregunta. Si tengo que usar algo más para calcular el desplazamiento y el estiramiento de la sincronización A/V, también podría conectarlo a una línea de comando ffmpeg. (Sin embargo, Blender podría estirar el video configurando un FPS personalizado).
Además, la exportación de blender a h.264 con x264 es muy inflexible, por lo que tendría que exportar a sin pérdidas y transcodificar. La única opción es ABR, no CRF, y ni siquiera parece haber una opción predeterminada de uso de CPU x264 (de ultrarrápido a medio a muy lento).

La siguiente respuesta es la metodología de cómo sincronizar una grabación de audio externa con su video. Este método asume que tanto sus grabaciones de audio como de video se graban a la misma velocidad de tiempo.

Antes de grabar cada escena, debe hacer un fuerte sonido de aplauso que tanto la entrada de audio de su cámara de video como la grabadora de audio externa puedan captar al mismo tiempo. Por lo general, se utiliza un badajo o aplausos para este propósito. Un badajo es una pizarra enmarcada o una pizarra blanca con información de la escena que es grabada por la cámara de video y tiene un brazo que se levanta y se aplaude para hacer el sonido necesario. El aplauso, cuando se graba, crea un pico en el audio tanto del audio de la cámara de video como del audio de la grabadora de sonido externa. Estos picos se ilustran en la vista de forma de onda de los sonidos con picos más grandes si el sonido es lo suficientemente alto. Cuando alinea estos dos picos de forma de onda en su línea de tiempo, el video y el sonido externo se alinean y sincronizan perfectamente.

Si graba su audio y video en una configuración sin interrupciones y sin detener la cámara y la grabadora de audio, no es necesario que tenga varios aplausos durante la grabación, uno solo servirá. Sin embargo, deberá asegurarse de que cuando edite partes no deseadas, elimine las partes de video y audio externo al mismo tiempo; de lo contrario, su audio y video externos dejarán de estar sincronizados.

Una vez que haya alineado su audio y video; en lugar de eliminar el audio del video, silencie la pista de audio del video. Si el software de edición de video que está utilizando no le permite silenciar la pista de audio en su video, entonces tiene un problema de software y es posible que desee buscar un programa diferente. He estado buscando en OpenShot.org. Parece ser un editor de video multiplataforma de código abierto con todas las funciones que estoy descargando actualmente y aún no he probado.

Esto debería ayudarlo a refinar y simplificar su producción de video.

S T.

Cuando alinea estos dos picos de forma de onda en su línea de tiempo, el video y el sonido externo se alinean y sincronizan perfectamente. Correcto, ese es el proceso manual que describí. La pregunta era sobre qué software le brinda una interfaz de usuario que puede hacer lo que describe. (Y (preferiblemente en mi caso) puede escalar la velocidad de fotogramas del video en lugar de estirar el audio con corrección de tono). IIRC, terminé usando ffmpeg con una velocidad de fotogramas personalizada y compensada. Esto fue único para mí, ayudar a mi hermano a hacer un video de audición, así que no seguí buscando otro software.
Puedes probar los siguientes programas. Serif MoviePlus starter Edition - freeserifsoftware.com Las capturas de pantalla de OpenShot en OpenShot.org también parecen tener esta función. Actualmente lo estoy descargando para revisar. scott