ffmpeg转发或存文件视频出现马赛克

everything_at_once 2018-08-29 01:59:29
ffmpeg av_read_frame 循环接收AVPacket,然后将pakcet数据包分音视频放入两个队列,然后两个线程分别读取音视频队列的AVPacket,调用av_interleaved_write_frame发送packet,输出到实时流或本地文件,但是视频会出现马赛克,

测试发现,如果不转发音频数据AVpacket,只发视频AVPacket,视频就就是正常的,各位遇到过这种情况么?
...全文
411 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
rightorwrong 2018-09-03
  • 打赏
  • 举报
回复
试试保存到本地文件看,是否还花屏
everything_at_once 2018-09-03
  • 打赏
  • 举报
回复
谢谢大家,问题解决了,首先队列只设置了一个,音视频数据均在队列中,然后另一个线程读取,解码在编码在av_interleaved_write_frame,这样是正常的
后来在初始阶段执行avio_alloc_context注册了output的write数据回调函数,进行socket发送和文件读写,这样更方便。
qprevf 2018-08-31
  • 打赏
  • 举报
回复
av_interleaved_write_frame不是线程安全的,你2个线程同时掉,有问题吧。参见同时掉write函数写同一文件, 数据会乱序。

2,541

社区成员

发帖
与我相关
我的任务
社区描述
专题开发/技术/项目 多媒体/流媒体开发
社区管理员
  • 多媒体/流媒体开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧