附加 oga 文件时,mkvmerge 出现错误“格式不匹配”

附加 oga 文件时,mkvmerge 出现错误“格式不匹配”

我们使用 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 格式的理解来看,这应该不是问题。

对于该问题可能是什么,您有什么想法吗?

答案1

如果有人感兴趣的话,这里有一个解决这个问题的方法。

问题是,webm 格式似乎比 matroska 更挑剔,因为它可以包含 vorbis 流。几乎不可能找到有关此内容的文档(即使官方的 webm 规范也只暗示了比特率的限制,http://www.webmproject.org/code/specs/container/#demuxer-and-muxer-guidelines)。

但是 mkvmerge 的源代码实际上提到,对于我的文件,“Vorbis 码本不同;如果不重新编码,这些轨道无法连接”。 (在源代码中 grep 上面引用的字符串以获取更多详细信息)

所以这回答了这个问题:我必须重新编码整个内容。

相关内容