在 Opus 代码的网站上,有一个例子演示比特率可扩展性。此示例旨在“演示逐渐改变比特率时发生的情况”。
我觉得这个功能很有意义。对于一个文件,比如有音乐前奏和结尾的播客,这些部分的比特率可能比文件的中间(也是最长的)部分(只有语音)更高。或者,在流媒体中,比特率可能会根据网络拥塞情况而变化。
然而,我从未见过如何创建这种比特率可扩展性的演示;在利巴普斯,也不在FFmpeg。
我做了一个实验,将播客分成三部分。第一部分和第三部分我以高比特率编码到 Opus。第二部分我以低比特率编码。然后我使用 FFmpeg 将文件连接在一起。
ffmpeg -i "concat:1.opus|2.opus|3.opus" -c copy joined.opus
文件大小符合预期(|1.opus| + |2.opus| + |3.opus| ≈ |joined.opus|
)。文件播放正常,我可以看到(使用mpv --term-status-msg='${audio-bitrate}'
)比特率在预期的时间下降和上升。然而,这感觉像是黑客行为。比特率变化是突然的,而不是 Opus 示例网页中声称的“渐进的”。我不知道这对流媒体来说会如何。
创建具有比特率可扩展性的 Opus 文件的“正确”方法是什么?