Ошибка mkvmerge "форматы не совпадают" при добавлении файлов OGA
3670
Laurent S
мы используем mkvmerge для объединения загруженного пользователем звука в один файл (все это делается из кода на веб-сайте django).
Командная строка выглядит так mkvmerge -o /path/to/output.webm -w /file/to/concat1.oga + /file/to/concat2.oga(может быть сотни файлов, но это не проблема).
Обычно это работает хорошо, за исключением нескольких файлов, и мы пытаемся выяснить проблему с ними, чтобы мы могли улучшить наш код.
Ошибка, которую мы получаем: 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.
Два файла являются действительными файлами ogg / vorbis, как показано в результате вывода 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
и ogginfo /path/to/file2.oga дает мне:
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
Единственное отличие, которое я вижу, это битрейт, который, исходя из моего понимания формата vorbis, не должен быть проблемой.
Любые идеи о том, что проблема может быть?
Исходный отчет об ошибке находится по адресу https://code.ductus.us/ticket/127#comment:4 вместе с копией файлов, если вы хотите воспроизвести.
Laurent S 12 лет назад
0
1 ответ на вопрос
1
Laurent S
Вот решение проблемы, если кому-то интересно.
Проблема в том, что формат webm выглядит более требовательным, чем matroska, в отношении потока vorbis, который он может содержать. Документацию практически невозможно найти по этому поводу (даже официальные спецификации webm только намекают на наличие ограничений по битрейту, http://www.webmproject.org/code/specs/container/#demuxer-and-muxer-guidelines ).
Но исходный код mkvmerge на самом деле упоминает, что «кодовые книги Vorbis разные, такие треки не могут быть объединены без перекодирования» в случае моих файлов. (grep для приведенной выше строки в источнике для более подробной информации)
Так что это отвечает на вопрос: я должен перекодировать все это.