Ошибка mkvmerge «форматы не совпадают» при добавлении файлов OGA

3

мы используем 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, не должен быть проблемой.

Любые идеи о том, что проблема может быть?

Лоран С
источник
Исходный отчет об ошибке находится по адресу code.ductus.us/ticket/127#comment:4 вместе с копией файлов, если вы хотите воспроизвести.
Лоран С.

Ответы:

2

Вот решение проблемы, если кому-то интересно.

Проблема в том, что формат webm кажется более требовательным, чем matroska, в отношении потока vorbis, который он может содержать. Документацию практически невозможно найти по этому поводу (даже официальные спецификации webm только намекают на наличие ограничений по битрейту, http://www.webmproject.org/code/specs/container/#demuxer-and-muxer-guidelines ).

Но исходный код mkvmerge на самом деле упоминает, что «кодовые книги Vorbis разные, такие треки не могут быть объединены без перекодирования» в случае моих файлов. (grep для цитируемой выше строки в источнике для более подробной информации)

Так что это отвечает на вопрос: я должен перекодировать все это.

Лоран С
источник