¿Cual seria la mejor forma de automatizar esta tarea para crea video musical?...

Iniciado por Eleкtro, 30 Enero 2014, 05:32 AM

0 Miembros y 1 Visitante están viendo este tema.

Eleкtro

Hola!

Tengo unas cuantas pistas de audio (archivos mp3) y quiero juntar todas las pistas de audio en 1 único archivo para añadirlo como pista de audio del video que quiero crear (para subirlo a youtube).

El problema es que no tengo "el video", es decir, me gustaría saber si me pueden ayudar a encontrar loops de animaciones DE TEMÁTICA ROCK para añadirlo como pista de video a mi video de youtube... ya que por más que intento buscar loops de videos no encuentro nada, ni de música en general, ni de rock, lo único que he encontrado gratis es esto :S http://www.youtube.com/watch?v=IPpzNQjaDsY , y los demás que encontré, son de pago.

También me gustaría saber si conocen una herramienta simple, algo que no sea tan pesado y profesional como el Sony Vegas o Adobe after effectssólamente para realizar la tarea de unir una pista de audio junto a un loop de video infinito... es decir, si tengo una pista de audio de 60 minutos, y un video de 2 minutos, ¿como puedo hacer un loop infinito de ese video para que ocupe los 60 minutos de duración de audio sin requerir el uso de utilidades que precisen mucha RAM?

Gracias por leer,
Saludos!








Kurono90

Hola

Para unir todos los audio .mp3 de forma automatizada podrías intentar usar FFMPEG, antes tendrías copiarlas o moverlas a una nueva carpeta y desde el CMD listarlas y luego redireccionarlas a un archivo de texto que quede de la siguiente forma:

C:\Users\Elektro\Music\Para_unir\Canción 1.mp3
C:\Users\Elektro\Music\Para_unir\Canción 2.mp3
C:\Users\Elektro\Music\Para_unir\Canción 3.mp3

Etc...

Despues la prompt del CMD ejecutas el ffmpeg.exe para concatenar todas las canciones ingresando como entrada el archivo .txt que creaste con la lista. Este proceso nunca lo probé porque nunca necesité hacerlo pero acá te dejo una pagina de la wiki de FFMPEG que explica justamente sobre esto.
Esta es la única forma que se me ocurre para automatizar lo mas posible la unión de las canciones.

Con respecto al video, lamentablemente no conozco una buena pagina para bajar loops de video para usar de fondo de forma gratuita, la mejor que vi fue una llamada Movietool pero no hay muchos loops con temática de musica y menos del genero Rock.

En lo sí puedo ayudarte es sobre como hacer el loop de video sin necesidad de programas pesados como los que mencionaste, esto se puede hacer fácilmente con un editor de video muy particular llamado Avisynth (y potente frameserver), particular porque se maneja a base de scripts y no de forma gráfica.

Espero que conozcas algo de Avisynth y si no, no importa, te explico brevemente lo necesario para que logres hacerlo:


1- Descargas e instalas el Avisynth

2- Descargas un video para usar como Loop (supongamos que dura exactamente 2 minutos como dijiste) y tomas nota del tiempo que dura el audio con todas las canciones unidas (supongamos que dura 60 minutos).
Por lo tanto, sabemos que el video deberá repertirse unas 30 veces para igualar la duración del audio

3- Abrís un bloc de notas y escribís lo siguiente:

DirectShowSource("C:\Users\Elektro\Videos\Fondo\Tu_Video_futuro_loop.mp4")
Loop(30)


NOTA: En la primer linea cargaste el video al script a traves de DirectShowSource, aunque lo mas recomendable es cargarlo a través de un filtro como ffms2. De todas formas funcionará igual  ::)
          En la segunda linea le estas indicando cuantas veces se repetirá el video (el video completo)

Luego guardas el bloc de notas pero con extensión .avs en vez de la clásica .txt.

4- Te descargas un buen programa para convertir videos, uno que acepte script .avs como entrada y luego lo convertís a x264 o el codec que quieras. Te recomiendo el MeGUI, excelente programa para estos menesteres.
Cargas el .avs y conviertes, una vez convertido el video (ahora durará 60 minutos) desde el mismo MeGUI podes unirle la pista de audio al video. Vas al menú Tools > Muxer y ahí elegís a que contenedor multiplexar, si a .mkv o .mp4.


Acá te dejo una muestra de como quedó un loop (de 1 minuto aprox) con el video que pusiste de ejemplo que estaba en youtube (duraba exactamente 3 seg 970 ms y lo repetí 20 veces en el loop):

http://www2.zshares.net/cq5q266qekvf

Si queres lo descargas y ves mas o menos como te quedaría con este proceso.

Saludos  :)

Eleкtro

@Kurono90

Perdona por tardar en contestar.

Muchas gracias por la ayuda y el detalle que te has tomado de extender las explicaciones, sin duda es genial.

Lo de la unión de los archivos MP3 era cosa facil para mi, no pedí ayuda para eso, me sabe mal que te hayas molestado tanto en explicarme eso, no era necesario la verdad :P

La idea de tener que usar el avisynth para la tarea junto a un conversor de video te lo agradezco pero no me agrada mucho la idea porque yo lo que reálmente quería evitar era tener que especificar la cantidad de loops (como muestras en el script de AviSynth) porque voy a usar Audios de duración indeterminda y también Videos de duración indeterminada;

así que me puse a indagar una solución alternativa y descubrí que en el AfterEffects, existe una opción para hacer un Loop infinito de la pista de video hasta la duración total de la pista de audio, sin necesidad de especificar la cantidad de veces que el video tiene que repetirse, el problema es que no hay manera de automatizar el aplicado de efectos en el AfterEffects (al menos, que yo sepa) y además es necesario la recompresión del video (o al menos, eso creo);

y al final decidí usar el VirtualDubMod y copiar la pista de video (CTRL+C, CTRL+V, más sencillo imposible) hasta que dure lo mismo que la pista de audio, y al menos, esto no requiere recompresión y es un programa que consume escasos recursos, pero tengo el mismo problema... no veo modo de automatizar esta tarea con el VDubMod, así que estoy igual que como empecé.

¿No sabrás si el FFMPEG soporta la inserción de un script AviSynth? (en la documentación oficial no veo parámetros para esto, pero son infinitos y quizás se me ha pasado),
porque se me acaba de ocurrir que sería un procedimiento muy facil de automatizar desde la consola:

1. Desarrollar una mini-aplicación para medir la duración de la pista de Video y la de audio (o en su defecto usar MediaInfo CLI para obtener la duración) y hacer los cálculos necesarios.
2. Escribir de forma automática el script de AviSyth usando el valor adecuado en el parámetro "Loop()" (según los cálculos obtenidos en el primer paso).
3. Muxear las pistas usando FFMPEG, usando el script de avisynth para repetir el bucle del video (si es necesario la recompresión para hacer el loop pues bueno, no me importaría de esta manera).

PD: Solo necesitaría ayuda para saber como es la sintaxis adecuada para usar AviSynth en FFMPEG (si fuese posible usarlo)


Un saludo!








Kurono90

No hay problema  ;D, de todas formas quizá le sirva a alguien que busque justo hacer eso con los mp3  :)

Lamentablemente para esta tarea creo que será casi indispensable que re-comprimas... tanto con After effects como con Avisynth, lamentablemente no conozco un método que permita hacer ese tipo de edición sin compresión exceptuando a VirtualDub o Avidemux, aunque con estos últimos deberías hacer lo del Ctrl+C y Ctrl+V manualmente como lo hiciste.

Y si hubiese una forma de hacer el loop desde el contenedor, el único que se me ocurre lo suficientemente avanzado/moderno sería el MKV pero me fije en el MKVMerge y no encontré la opción (al menos desde su GUI), pero de todas formas como tenes pensado subir el video a Youtube y este procesa el video, seguramente pasaría por alto ese dato de la cabecera del mkv y te quedaría el video de la duración original. Lo más seguro será re-comprimirlo.

Bueno, acabo de confirmar que FFMPEG sí tiene soporte activado para Avisynth en la compilación para Windows de Zeranoe, así que podes descargar el FFMPEG (versión Static) desde ACÁ. Te recomiendo que uses la versión 32 bits de FFMPEG si instalaste Avisynth 32 bits, no se puede usar al menos de forma directa, el avisynth y algún encoder con distinta arquitectura.

Acabo de hacer una sencilla prueba cargando el script .avs y quedo perfecto  ;D

Con respecto a la sintaxis correcta para Avisynth en este caso, constaría de solo 2 lineas, una para cargar el video y la siguiente para especificar la cantidad de loops que hará.

DirectShowSource("C:\Users\Elektro\Videos\Fondo\Tu_Video_futuro_loop.mp4")
Loop(30)


La linea que deje en el mensaje anterior (y que puse arriba) funciona y es correcta, aunque para cargar el video se recomienda usar el filtro FFMS2 que indexa el contenido y es menos propenso a errores imprevistos, no es obligatorio usarlo y en la mayoría de los casos DirectShowSource es suficiente para la carga pero bueno, te dejo otra alternativa por si en algún momento te falla.

Tenes que descargar el filtro desde Github, actualmente va por la versión 2.19 y bajas el archivo .7z, al descomprimirlo copias los archivos ffms2.dll y ffmsindex.exe a la carpeta Plugins de Avisynth que se encuentra en:

C:\Program Files (x86)\AviSynth 2.5\plugins

Y después el código cambia ligeramente, ademas al momento de la compresión se te generará un pequeño archivo de unos cuantos KBs de extensión .ffindex que será el índice que generó sobre el video, luego de la compresión lo borras tranquilamente. Ahora el video el script te quedaría así:

FFVideoSource("C:\Users\Elektro\Videos\Fondo\Tu_Video_futuro_loop.mp4")
Loop(20)


Eso es todo, siempre usas uno de estos 2 métodos para cargar el video y no deberías tener problemas.  ::)

Saludos