使用已经使用 ffmpeg 进行音频处理的程序,我想提取并解析 Xing/LAME 风格的 mp3 帧。
(与其他 mp3 元数据不同,xing/lame 元数据存储在流中的虚拟 mp3 文件中)
对我来说不幸的是,av_seek_frame()
似乎只支持查找文件中包含实际音频的第一帧。即使我使用字节查找模式将其查找为 0,我最终也会在文件中位于 LAME/Xing 帧之后的位置。如果我只是打开文件并开始读取帧而不进行查找,情况也是如此。
能否说服 ffmpeg 读取我想要的帧?并且,LAME/Xing 数据是否可能跨越多个帧?
最佳答案
无论如何,找到了一个可行的解决方案...使用TagLib,可以直接从文件引用中获取文件指针,并搜索:
{ 0xFF、0xFB、0x90、0x64、0x00、0x00、0x00、0x00、0x00、 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
查找标签。容易多了。
关于c++ - 如何使用 ffmpeg 提取 Xing/LAME 帧?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6811269/