Fusionar archivos WAV en C#
merge (5)
Sí, puede agregar los datos del segundo wav (excluyendo sus encabezados) como sais Jon B, pero también debe modificar el encabezado del primer archivo para indicar la nueva longitud; de lo contrario, algunos reproductores de audio se detendrán al final del primer parte.
Para la concatenación dinámica, ya que no conoce el tamaño del wav total al principio, puede poner una longitud falsa en el encabezado del primer archivo, como poner una duración de 10 horas, por ejemplo.
Entonces, el reproductor de audio solo debe esperar hasta que agregue cada dato. Funciona para ffmpeg al menos
Tengo 2 archivos wav que quiero hacer / combinar / fusionar en un archivo con las dos pistas de sonido.
¿Hay alguna API para esa tarea o algunos comandos de inn incorporados en .NET que pueda usar de alguna manera genial para hacer esta tarea posible?
Muchas gracias por la ayuda. :)
La manera directa sería interpretar los encabezados del archivo wav, extraer las muestras e intercalar las muestras de ambos archivos en una nueva secuencia de muestra que escriba en un nuevo archivo wav. También puede agregar los valores de muestra de ambos archivos fuente wav muestra por muestra para ''mezclar'' ambos archivos en una sola pista. El formato de archivo wav no es tan complicado, por lo que no debería ser demasiado difícil escribir este código. Además, hay muchos proyectos de código abierto que contienen código para leer y escribir archivos wav. Tenga en cuenta que las cosas pueden ser un poco más complicadas de ambos archivos fuente wav tienen diferentes tasas de muestreo. Verifique esto para obtener una descripción del formato wav.
Si no me equivoco, puede anexar los bytes del segundo archivo al final del primero. Si hay datos de encabezado, querrá excluirlos (ver aquí )
Tenga en cuenta que puede escuchar un clic o pop entre los dos clips, ya que no habrá mezcla. Probablemente puedas evitar esto al desvanecerse (reduciendo gradualmente los valores de los últimos ms al valor central).
Si solo necesita hacer esto una vez, su mejor opción es usar algún software específico para la tarea. Praat o audacity harán esto (unir o fusionar dos pistas).
Praat también se puede programar para que sea posible crear una secuencia de comandos de Praat y luego llamar a Praat y al script desde una aplicación .Net.
Robar
Lo siento, quizás estaba un poco confuso. No quiero fusionarlos para que jueguen sincrónicamente. Quiero agregar las pistas al final de cada una para que toquen una y otra en el mismo archivo.
Pero creo que encontré la respuesta en este hilo.
Funciona perfectamente y está utilizando la técnica que Jon B mencionó anteriormente.