在 Ogg/Opus 上寻找

Seeking on Ogg/Opus

我有 ogg-opus 音频文件,每个文件都包含一个轨道 (mono) 和固定采样率 (16kHz)。我正在尝试对它们进行搜索以进行流式传输。例如,我想知道字节偏移量以部分下载文件(使用 HTTP 范围)并只播放前 10 秒,或者说从第 10 秒到第 15 秒。也就是说,我需要在任何给定的位置获取字节偏移量时间位置。

在这种情况下,有没有办法不用 loading/decoding 整个文件?

我认为没有确定特定时间所需的确切字节偏移量的确切方法,但是 libopus.op_pcm_seek() could be used for decoding once you have the bytes. Between the varying bit rates, page sizes, and packet durations of Opus files, some guesswork and dynamic calculations seem to be required. I'm attempting to do the same thing and a few people have asked me to implement it in OpusStreamDecoder. You could look at its underlying opus_chunkdecoder.c 以及概述如何实现此目的的特定功能请求:

https://github.com/AnthumChris/opus-stream-decoder/issues/1