我有 ogg-opus 音频文件,每个文件包含单个轨道(单声道)和固定采样率(16kHz)。我正在尝试对它们进行流式传输搜索。例如,我想知道部分下载文件(使用 HTTP Range)的字节偏移量并仅播放前 10 秒,或者说从第 10 秒到第 15 秒。也就是说,我需要获取任何给定的字节偏移量时间位置。
在这种情况下,有没有办法在不加载/解码整个文件的情况下做到这一点?
最佳答案
我不相信有一种确切的方法可以确定特定时间所需的确切字节偏移量,但是 libopus.op_pcm_seek()
一旦你有了字节就可以用于解码。在 Opus 文件的不同比特率、页面大小和数据包持续时间之间,似乎需要一些猜测和动态计算。我正在尝试做同样的事情,有些人要求我在 OpusStreamDecoder 中实现它。你可以看看它的底层opus_chunkdecoder.c
以及具体的功能请求,概述了如何实现这一点:
关于audio - 在 Ogg/Opus 上寻找,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52873339/