有没有工具来修复OPUS文件流?

时间:2017-11-29 14:40:42

标签: opus repair

Opus 音频编解码器格式[和 OGG 作为其容器]开始获得牵引力,这很棒。然而,这也意味着日常问题浮出水面。今天我的是一个损坏的文件,问题是是否有工具来修复流。

实际的流可能是由一个损坏的编码器创建的,即:

  Encoded with Gagravarr.org Java Vorbis Tools v0.8 20160217

和opusinfo正确抱怨:

**WARNING: Invalid header page in stream 1, contains multiple packets**
New logical stream (#1, serial: 000052c9): type opus
**WARNING: Implausibly low preskip in Opus stream (1)**
Encoded with Gagravarr.org Java Vorbis Tools v0.8 20160217
Opus stream 1:
        Pre-skip: 0
        Playback gain: 0 dB
        Channels: 1
        Original sample rate: 16000Hz
        Packet duration:   60.0ms (max),   60.0ms (avg),   60.0ms (min)
        Page duration:     60.0ms (max),   60.0ms (avg),   60.0ms (min)
        Total data length: 12231171 bytes (overhead: 13.9%)
        Playback length: 60m:49.920s
        Average bitrate: 26.81 kb/s, w/o overhead: 23.08 kb/s
Logical stream 1 ended

哪个好。但是虽然数据明显存在,但opusdec决定强制正确:

Decoding to 48000 Hz (1 channel)
Extra packets on initial header page. Invalid stream.

并绝对拒绝处理该文件,这不是非常有用。

我的问题是:用户应该如何抢救/修复/修复损坏但可抢救的文件?那有(FOSS)代码吗?在xiph中有一些隐藏的功能吗?

1 个答案:

答案 0 :(得分:3)

请向编码器的上游报告警告和错误。 opusinfo和opusdec的观点是抱怨让人们修复他们的软件并停止制作损坏的文件。除了额外的数据包和未设置的跳过前值,60 ms的数据包持续时间可能不是你想要的。

xiph的opus-tools软件包中没有修复程序。您可以尝试使用类似ffmpeg in.opus -acodec copy out.opus的内容来重新启动它,这可能会纠正错误的分页。没有好方法可以纠正丢失的预跳过值。