首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将mp4转换为mpeg2-ts在音频包上崩溃

将mp4转换为mpeg2-ts在音频包上崩溃
EN

Stack Overflow用户
提问于 2013-06-11 19:45:11
回答 1查看 442关注 0票数 0

我已经编写了一些C代码,将包含H264编码的视频和AAC编码的音频的mp4文件写入分段的.ts文件。

代码可以在这里看到:http://pastebin.com/JVdgjM9G

问题是代码在音频包上阻塞。因为我要从h264转换,所以我必须使用"h264_mp4toannexb“,它是我最终为视频帧工作的。然而,一旦程序到达第一个音频包(下面的流1),它就会崩溃。

示例输出:

代码语言:javascript
复制
Output #0, mpegts, to 'testvideo':
    Stream #0.0: Video: libx264, yuv420p, 1280x720, q=2-31, 1416 kb/s, 90k tbn, 23.98 tbc
    Stream #0.1: Audio: libfaac, 48000 Hz, stereo, 127 kb/s
First chunk: testvideo-00001.ts
Read frame, keyframe: 1, index: 0
Did bitfilter fun!
Read frame, keyframe: 0, index: 0
Did bitfilter fun!
(...this repeats several more times, truncated for space...)
Did bitfilter fun!
Read frame, keyframe: 0, index: 0
Did bitfilter fun!
Read frame, keyframe: 1, index: 1
base(54516) malloc: *** error for object 0x7fd2db404520: pointer being freed was not allocated
*** set a breakpoint in malloc_error_break to debug
Abort trap: 6

我尝试更改代码以在音频流上运行过滤器(使用audio_stream->codec而不是video_stream->codec),但这只是给出了过滤器的错误。

当我尝试调用av_interleaved_write_frame(output_context, &packet);时,问题发生了-对于过滤的视频数据包,没有问题,但它完全阻塞了音频数据包。不过,我有点不明白为什么,所以任何帮助都是感激的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-06-13 16:58:44

事实证明,位过滤器操作之后的av_free_packet调用实际上是在释放视频数据包。删除该调用会导致代码正确运行!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17043280

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档