(亲身经历)freeswitch/ffmpeg出现“concealing * DC, * AC, * MV errors in P frame”的一种情况排查

本文主要是介绍(亲身经历)freeswitch/ffmpeg出现“concealing * DC, * AC, * MV errors in P frame”的一种情况排查,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

最近用freeswitch做视频会议的时候,报这样一个错误,例如“concealing 9 DC, 9 AC, 9 MV errors in P frame”,导致视频画面花屏;起初也和大家网上各种搜,最终无果;

本人环境:WINDOWS 10 64位,freeswitch-1.10.1,ffmpeg的版本为4.1.0

关键点:抓包结合代码分析

分析过程:

1. 出现这个问题的时候比较懵,一时半会儿不知如何下手,这种时候一般手段,抓个包看下,分析一下问题;

上面是我的包,发现看不出问题,这个时候需要结合代码,在代码中打印出错的帧的seqnumber,从而定位到该地方;此处我是在freeswitch工程中打印的,如果是各位在用ffmpeg解码的话,也需要在相应的地方打印“SEQ=? SIZE=?”,这样能够快速的定位到哪些包是错误包;

2. 在我的排查过程中,发现,总是出现SIZE=4096时,出现以上错误,这个4096是我这边的buf_size,难道正好撑满了,哪有那么巧的事?这个时候,我想到了是否是读取数据不完整,超出了缓存区长度呢?

3. 继续跟踪和定位代码,最终找到填充这个buf缓存的代码段,发现在recv_from数据的时候,一次读取的长度是根据这个4096来的,我最终将这个4096改成了,4096*2,则问题解决;

结论: 如果你遇到跟我类似的错误,那么别慌,沉住气,慢慢打印日志和跟踪代码;我这边只是提供一种我遇到的情况,请检查你的程序中缓存这个264包的缓存区是否不够大??代码在接收RTP包时,是否够存呢???

此外:如有其他情况,也可以留言告诉我哦。

这篇关于(亲身经历)freeswitch/ffmpeg出现“concealing * DC, * AC, * MV errors in P frame”的一种情况排查的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/243900

相关文章

hdu 3065 AC自动机 匹配串编号以及出现次数

题意: 仍旧是天朝语题。 Input 第一行,一个整数N(1<=N<=1000),表示病毒特征码的个数。 接下来N行,每行表示一个病毒特征码,特征码字符串长度在1—50之间,并且只包含“英文大写字符”。任意两个病毒特征码,不会完全相同。 在这之后一行,表示“万恶之源”网站源码,源码字符串长度在2000000之内。字符串中字符都是ASCII码可见字符(不包括回车)。

zoj 3228 ac自动机

给出一个字符串和若干个单词,问这些单词在字符串里面出现了多少次。单词前面为0表示这个单词可重叠出现,1为不可重叠出现。 Sample Input ab 2 0 ab 1 ab abababac 2 0 aba 1 aba abcdefghijklmnopqrstuvwxyz 3 0 abc 1 def 1 jmn Sample Output Case 1 1 1 Case 2

D4代码AC集

贪心问题解决的步骤: (局部贪心能导致全局贪心)    1.确定贪心策略    2.验证贪心策略是否正确 排队接水 #include<bits/stdc++.h>using namespace std;int main(){int w,n,a[32000];cin>>w>>n;for(int i=1;i<=n;i++){cin>>a[i];}sort(a+1,a+n+1);int i=1

音视频入门基础:WAV专题(10)——FFmpeg源码中计算WAV音频文件每个packet的pts、dts的实现

一、引言 从文章《音视频入门基础:WAV专题(6)——通过FFprobe显示WAV音频文件每个数据包的信息》中我们可以知道,通过FFprobe命令可以打印WAV音频文件每个packet(也称为数据包或多媒体包)的信息,这些信息包含该packet的pts、dts: 打印出来的“pts”实际是AVPacket结构体中的成员变量pts,是以AVStream->time_base为单位的显

一种改进的red5集群方案的应用、基于Red5服务器集群负载均衡调度算法研究

转自: 一种改进的red5集群方案的应用: http://wenku.baidu.com/link?url=jYQ1wNwHVBqJ-5XCYq0PRligp6Y5q6BYXyISUsF56My8DP8dc9CZ4pZvpPz1abxJn8fojMrL0IyfmMHStpvkotqC1RWlRMGnzVL1X4IPOa_  基于Red5服务器集群负载均衡调度算法研究 http://ww

ffmpeg面向对象-待定

1.常用对象 rtsp拉流第一步都是avformat_open_input,其入参可以看下怎么用: AVFormatContext *fmt_ctx = NULL;result = avformat_open_input(&fmt_ctx, input_filename, NULL, NULL); 其中fmt_ctx 如何分配内存的?如下 int avformat_open_input(

如何保证android程序进程不到万不得已的情况下,不会被结束

最近,做一个调用系统自带相机的那么一个功能,遇到的坑,在此记录一下。 设备:红米note4 问题起因 因为自定义的相机,很难满足客户的所有需要,比如:自拍杆的支持,优化方面等等。这些方面自定义的相机都不比系统自带的好,因为有些系统都是商家定制的,难免会出现一个奇葩的问题。比如:你在这款手机上运行,无任何问题,然而你换一款手机后,问题就出现了。 比如:小米的红米系列,你启用系统自带拍照功能后

网络故障排查和tcpdump抓包

网络故障排查: ping一台服务器不通,你如何排查 检查本机ip地址设置  网关和dns服务器是否设置正确 或者ip地址冲突能否上网 看路由器是否有问题 ping服务器是否运行服务器禁止ping   防火墙设置 iptables -A INPUT -P ICMP -j DROPiptables -D INPUT -P ICMP -j DROP用户不能访问服务器 怎么排查 检查用户网络连接检查服

Qt中window frame的影响

window frame 在创建图形化界面的时候,会创建窗口主体,上面会多出一条,周围多次一圈细边,这就叫window frame窗口框架,这是操作系统自带的。 这个对geometry的一些属性有一定影响,主要体现在Qt坐标系体系: 窗口当中包含一个按钮,这个按钮的坐标系是以父元素为参考,那么这个参考是widget本体作为参考,还是window frame作为参考,这两种参考体系都存在

FFmpeg系列-视频解码后保存帧图片为ppm

在正常开发中遇到花屏时怎么处理呢?可以把解码后的数据直接保存成帧图片保存起来,然后直接看图片有没有花屏来排除是否是显示的问题,如果花屏,则代表显示无问题,如果图片中没有花屏,则可以往显示的方向去排查了。 void saveFrame(AVFrame* pFrame, int width, int height, int iFrame){FILE *pFile;char szFilename[