Tengo un par de archivos ogg vorbis, todos codificados con las mismas propiedades que quiero concatenar en un solo archivo.
Sé que el formato ogg vorbis admite la concatenación simple de múltiples archivos como:
$ cat file1.ogg file2.ogg > output.ogg
Pero lamentablemente no todos los reproductores son capaces de comprender archivos creados de esa manera, por ejemplo, mi reproductor de audio móvil y evitaría comprar uno nuevo. Otros programas que no lo entienden son gstreamer. Ese método tampoco funciona si los archivos de entrada ogg tienen todos la misma identificación de flujo.
Además, dado que me gustaría tirar los archivos originales y solo mantener la versión concatenada, me gustaría que la concatenación se realice sin pérdidas, como la cat
solución.
También quiero evitar concatenar los archivos en un formato sin pérdidas, como flac, ya que esto aumentaría innecesariamente el tamaño del archivo. Si eso estuviera bien, podría conservar los archivos ogg originales y usaría menos espacio.
Parece que ffmpeg a veces puede hacerlo usando el demuxer concat :
$ cat inputs.txt
file 'in1.ogg'
file 'in2.ogg'
$ ffmpeg -f concat -i inputs.txt -c copy out.ogg
Si miro el hexdump sin procesar de mis archivos de entrada, entonces puedo encontrar los paquetes vorbis exactamente representados en el archivo de salida. Así que supongo que realmente no ocurre una nueva codificación.
Pero esto no parece funcionar en todos los archivos de entrada. A veces (no estoy seguro de qué provoca esto), ffmpeg daría la advertencia:
Non-monotonous DTS in output stream 0:0; previous: 5011328, current: 5011200; changing to 5011329. This may result in incorrect timestamps in the output file.
Y luego escucharía una "brecha" muy leve entre dos archivos. Por lo tanto, esto ciertamente no es una solución global.
Como no pude encontrar uno, intenté escribir mi propia herramienta en esta pregunta de stackoverflow .
¿Hay alguna manera de concatenar múltiples archivos ogg vorbis pero sin volver a codificarlos y con una sola secuencia por salida? ¿Qué herramienta es capaz de hacer ese trabajo?