Nous utilisons mkvmerge pour concaténer l'audio téléchargé par l'utilisateur dans un seul fichier (tout cela se fait à partir de code dans un site Web Django).
La ligne de commande ressemble à mkvmerge -o /path/to/output.webm -w /file/to/concat1.oga + /file/to/concat2.oga
(il peut y avoir des centaines de fichiers, mais ce n'est pas le problème).
Cela fonctionne généralement bien, sauf avec quelques fichiers, et nous essayons de résoudre le problème avec ceux-ci afin d'améliorer notre code.
L'erreur que nous obtenons est:
Error: The track number 0 from the file '/path/to/file1.oga' cannot be appended to the track number 0 from the file '/path/to/file2.oga'. The formats do not match.
Les deux fichiers sont des fichiers ogg / vorbis valides, comme le montre le résultat de ogginfo:
Processing file "/path/to/file1.oga"...
New logical stream (#1, serial: 32b21854): type vorbis
Vorbis headers parsed for stream 1, information follows...
Version: 0
Vendor: Xiph.Org libVorbis I 20101101 (Schaufenugget)
Channels: 1
Rate: 22050
Nominal bitrate: 45.111000 kb/s
Upper bitrate not set
Lower bitrate not set
User comments section follows...
ENCODER=libsndfile
TITLE=Tape1
Vorbis stream 1:
Total data length: 8453 bytes
Playback length: 0m:01.532s
Average bitrate: 44.126101 kb/s
Logical stream 1 ended
et ogginfo /path/to/fichier2.oga me donne:
Processing file "/path/to/file2.oga"...
New logical stream (#1, serial: 46c1e760): type vorbis
Vorbis headers parsed for stream 1, information follows...
Version: 0
Vendor: Xiph.Org libVorbis I 20101101 (Schaufenugget)
Channels: 1
Rate: 22050
Nominal bitrate: 58.000000 kb/s
Upper bitrate not set
Lower bitrate not set
User comments section follows...
TITLE=Tape2
Vorbis stream 1:
Total data length: 12121 bytes
Playback length: 0m:01.787s
Average bitrate: 54.234588 kb/s
Logical stream 1 ended
La seule différence que je peux voir est le débit binaire, qui, d'après ma compréhension du format vorbis, ne devrait pas être un problème.
Des idées sur ce que le problème peut être?
Réponses:
Voici une solution au problème, si quelqu'un est intéressé.
Le problème est que le format webm semble être plus difficile que matroska en ce qui concerne le flux vorbis qu'il peut contenir. Il est pratiquement impossible de trouver de la documentation à ce sujet (même les spécifications officielles de WebM suggèrent seulement qu’il existe des contraintes sur le débit, http://www.webmproject.org/code/specs/container/#demuxer-and-muxer-guidelines ).
Mais le code source de mkvmerge mentionne en réalité que "Les manuels de code Vorbis sont différents; de telles pistes ne peuvent pas être concaténées sans recodage" dans le cas de mes fichiers. (grep pour la chaîne citée ci-dessus dans la source pour plus de détails)
Donc, cela répond à la question: je dois ré-encoder le tout.
la source