c++ - 如何使用 ffmpeg 提取 Xing/LAME 帧?

标签 c++ c ffmpeg mp3 lame

使用已经使用 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/

相关文章:

linux - ffprobe 报告一些错误的元数据,但仅当输入通过管道传入时

html - 如何从 HTML 输入中读取数据并将该数据本地写入文件以供将来访问

c++ - 当代码在 Visual Studio C++ 中正常工作时出现 MSB6006 错误

c - 这个使用 realloc 的 C 代码有什么错误?

ffmpeg - 未定义对 `x264_encoder_open_125' 的引用

java - 你能用Android Java写一个记录特定应用程序屏幕的应用程序吗?

c++ - 将 C/C++ 代码从 Linux 移植到 Windows 的最佳环境

c++ - 如何在 Windows C++ 中处理事件

c - 如何在结构本身内部使用结构指针

c++ - 错误 C2143 : syntax error : missing '{' before '*'