这是一个很简单的小程序,但也让我这个初学者折腾了好几天,走算是入门了,总结下学习的过程,希望能够初学者能有所帮助。
看源代码,首先得让让它跑起来。看了ffmpeg提供源码api-example.c,很好的入门程序,虽然对视频编解码十分顺利,但是源码提供的音频解码是有问题的,mp2文件不能正常的解码,这是很让人沮丧,特别是对一个初学者来说。
在对源程序进行单步调试的过程中,问题定位在了这个语句上:
avcodec_decode_audio3(in_ast_cctx, (int16_t *)outbuf, &out_size, &packet);再看前面看看,有这样两行语句。
/* decode until eof */
avpkt.data = inbuf;
avpkt.size = fread(inbuf, 1, AUDIO_INBUF_SIZE, f);这两行代码的意思很明确,就是将待解码数据数据放入avpkt.data这个缓冲区中,通过avcodec_decode_audio3对其进行解码。这些看起来都很合理,但问题出在哪里呢?
且看video_decode_example函数中这段话:
/* NOTE1: some codecs are stream based (mpegvideo, mpegaudio)
and this is the only method to use them because you cannot
know the compressed data size before analysing it.
BUT some other codecs (msmpeg4, mpeg4) are inherently frame
b

这篇博客记录了作者在使用ffmpeg将AAC音频转换为WAV格式过程中遇到的问题和解决方法。初学者在尝试解码mp2文件时遇到了困难,发现源代码中的音频解码存在问题。通过查找资料,作者了解到需要处理AAC帧的同步字,并找到了相关文章和代码示例作为参考,最终成功实现转换。
最低0.47元/天 解锁文章
3268





