我发现使用av_seek_frame()搜索FLAC文件并不适用于ffmpeg。将FLAC解码为原始PCM工作正常,但是一旦调用av_seek_frame(),下一次调用av_read_frame()将返回-1,即文件结束。
我深入研究了源代码,发现了以下原因:在FLAC中搜索是在libavformat / utils.c中的av_seek_frame_generic()函数中实现的。这个函数基本上做的是在循环中调用av_read_frame()并检查数据包时间戳与期望的搜索位置。
它不能与FLAC一起使用的原因是FLAC数据包不包含任何时间戳,因为FLAC解码器使用一些通用读取器,它总是从流中提取1024字节的硬编码大小的数据包。 / p>
我没有使用最新版本的ffpmeg而是较旧的版本,但由于FLAC播放工作正常我不想切换到最新版本,因为这对我来说意味着重要的工作因为我已经适应了这个ffmpeg的版本符合我的特定需求。这就是为什么我想问一个问题,如果有人知道如何在这个旧版本的ffmpeg中修复FLAC(具体来说,它是2010年的0.6版本)。
谢谢!
答案 0 :(得分:1)
似乎在0.6中根本不支持它,因为该版本中没有FLAC解析器。我现在从0.8开始使用FLAC解析器并将其与0.6版合并。所以它现在工作正常。