关于FFMPEG调用avcodec库解码H264数据失败的问题探究及解决方案

如题,最近公司遇到了一个关于流媒体解码的问题:

平板电脑(安卓5.0以上)将本身的屏幕数据(H264)发送至PC端,PC端将接收到的数据转发给一个班级(60人)的所有平板电脑上,让电脑与所有的平板电脑都同步显示播放发送端平板的桌面,简称“屏幕广播”。

遇到的问题是,在特定的PC机上,会出现PC播放数据黑屏,但是所有的平板(60个)都正常播放屏幕数据。

先粗略分析一下,PC使用的数据与平板使用的数据是完全一样的,因为平板的数据是PC发送出去的,因此先判断数据层面上没有问题,那就只能是PC端的代码有问题。

然后我开始查PC端的代码,PC的播放客户端是用c#开发的,核心是用C++调用了FFMPEG中的avcodec工具类,然后封装成了DLL给c#使用,工具类中主要使用其中的av_parser_parse2函数来获取流媒体数据中的图片,然后传递给c#写的UI层用于显示。

代码逻辑很简单,那就着手找是哪里出的问题吧:

首先先看一下c#写的UI层有没有问题,打了断点,跟踪了数据,发现问题出现在c#在调用中间层的工具类时,一直都没有接收到图片数据,所以就一直处于黑屏状态,那也就是说,问题精确到了工具类里面。

继续查找问题,既然没有返回图片数据,那就看看解码器在解码数据的时候是不是出现了什么问题,我先跟踪到解码出图片的代码:

ret = avcodec_de
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值