我有ogg-opus音频文件,每个文件包含一个音轨(单声道)并具有固定的采样率(16kHz)。我正在尝试对它们实施流式搜索。例如,我想知道字节偏移量以部分下载文件(带有HTTP Range)并仅播放前10秒,或者说从第二个10秒播放到第二个15。也就是说,我需要获取任意给定的字节偏移量时间位置。
在这种情况下,有没有一种方法无需加载/解码整个文件?
答案 0 :(得分:2)
我不认为有确切的方法可以确定特定时间所需的确切字节偏移量,但是一旦有了这些字节,libopus.op_pcm_seek()
可以用于解码。在Opus文件的不同比特率,页面大小和包持续时间之间,似乎需要一些猜测和动态计算。我正在尝试做同样的事情,一些人要求我在OpusStreamDecoder
中实现它。您可以查看其基础opus_chunkdecoder.c
和特定的功能请求,其中概述了如何实现此功能: