您的位置:首页 > 其它

ffmpeg写mp4时不断打印:Error parsing ADTS frame header!

2016-01-28 08:38 2683 查看
当去掉这一句:

//avcodec_copy_context(out_stream->codec,oc);        就会导致这个问题发生!

 

执行:avcodec_copy_context(out_stream->codec,oc);后

av_dump_format(ofmt_ctx, 0, out_filename,1);

Output #0, mp4, to 'test.mp4':

   Stream #0:0: Video: h264, yuv420p,1920x1080, q=2-31, 1200 kb/s, 25 tbn, 25 tbc

Stream #0:1:Audio: aac, 32000 Hz, mono, s16, 32 kb/s

 

经过修改,当我即使不执行这一句,也可以打印:

Output #0, mp4, to 'test.mp4':

   Stream #0:0: Video: h264 (mpeg4), yuv420p,1920x1080, q=2-31, 1200 kb/s, 25 tbn, 25 tbc

Stream #0:1:Audio: aac, 32000 Hz, mono, s16, 32 kb/s

但一样会有这个问题打印出来。后来发现,

AVBitStreamFilterContext* aacbsfc = av_bitstream_filter_init("aac_adtstoasc");

这个针对audiostream的filter,如果用于video stream,就会发生这个现象。

修改一下就可以了。

#if USE_AACBSF

       if(stream_index==1)

              av_bitstream_filter_filter(aacbsfc,out_stream->codec, NULL, &pkt.data, &pkt.size, pkt.data, pkt.size,0);

#endif
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: