live555搭建rtsp服务器推送实时流花屏问题解决
使用live555搭建rtsp服务器推送实时流时总是出现花屏,查阅资料按照大多数人所说的修改做了以下几项修改:
1、修改OutPacketBuffer::maxSize=1024*1024 ;
2、扩展帧解析buffer大小,即BANK_SIZE=1024*1024;
改完之后没什么用,该花还是花,深究之后发现花屏原因是我是通过读文件模拟推送实时流,原264文件是30帧,我是按照50帧推送,所以doGetNextFrame的取帧速度保持在33ms调用一次,这显然会造成严重的丢帧问题。于是我尝试各种修改比如设置fDurationInMicroseconds=1000000/50,还是没什么用。于是我又修改H264or5VideoStreamFramer.cpp的fFrameRate强制改为100,发现一开始取帧速度差不多10ms取帧一次,但是一旦取到IDR帧后又变为按照30fps取帧,所以明白live555会解析sps的帧率,于是将H264or5VideoStreamFramer.cpp里的fFrameRate = fParsedFrameRate的地方都改成100;这样就差不多10ms调用一次doGetNextFrame了,100帧对于大部分环境都是够用了,遇到超高帧的情况再修改。
然后又在doGetNextFrame里做了修改,如果取不到帧就一直等待,取到帧之后再调用afterGetting(this);
live555原来的rtsp服务器逻辑基于读文件推送,所以解析文件头获取帧率以固定帧率取帧推送。可是实时流不确定状况很多,实时源可能无法保证视频帧稳定输出,而且有的编码器可能会pps,sps的帧率和实际帧率不符。所以感觉这样修改还是有必要的。等上实际环境验证下试试rtsp服务器的稳定性和健壮性。
当然对于视频源输出稳定的情况,按照原来的live555架构即可。
live555搭建rtsp服务器推送实时流花屏问题解决相关推荐
- 软件_搭建rtsp视频推送环境
原创博客地址:软件_搭建rtsp视频推送环境 live555编译安装启动 编译 1 2 3 4 5 wget http://www.live555.com/liveMedia/public/live5 ...
- Python Web实时消息后台服务器推送技术---GoEasy
越来越多的项目需要用到实时消息的推送与接收,怎样实现最方便呢?我这里推荐大家使用GoEasy,它是一款第三方推送服务平台,使用它的API可以轻松搞定实时推送! 浏览器兼容性:GoEasy推送 支持we ...
- C# Web实时消息后台服务器推送技术---GoEasy
越来越多的项目需要用到实时消息的推送与接收,怎样实现最方便呢?我这里推荐大家使用GoEasy, 它是一款第三方推送服务平台,使用它的API可以轻松搞定实时推送! 浏览器兼容性:GoEasy推送 支持w ...
- LIVE555再学习 -- VLC搭建RTSP服务器(转)
实时流协议 RTSP 是在实时传输协议的基础上工作的,主要实现对多媒体播放的控制.用户对多媒体信息的播放.暂停.前进和后退等功能就是通过对实时数据流的控制来实现的. 而这些播放控制功能的实现不仅需要多 ...
- 服务器推送系统安装,搭建PXE服务器,推送安装linux系统
搭建环境: 推送服务器: Ip:192.168.189.138 系统:CentOS 5.8 推送系统:RHEL 5.4 1:配置dhcpd服务. 如果没有安装dhcpd服务,请安装: 1 2 3 4 ...
- ASP.NET Web实时消息后台服务器推送技术---GoEasy
越来越多的项目需要用到实时消息的推送与接收,怎样用ASP.NET实现最方便呢?我这里推荐大家使用GoEasy, 它是一款第三方推送服务平台,使用它的API可以轻松搞定实时推送! 浏览器兼容性:GoEa ...
- C# Web实时消息后台服务器推送技术-GoEasy
越来越多的项目需要用到实时消息的推送与接收,怎样用C#实现最方便呢?我这里推荐大家使用GoEasy, 它是一款第三方推送服务平台,使用它的API可以轻松搞定实时推送! 浏览器兼容性:GoEasy推送 ...
- Ruby Web实时消息后台服务器推送技术---GoEasy
越来越多的项目需要用到实时消息的推送与接收,怎样实现最方便呢?我这里推荐大家使用GoEasy,它是一款第三方推送服务平台,使用它的API可以轻松搞定实时推送! 浏览器兼容性:GoEasy推送 支持we ...
- .NET Web实时消息后台服务器推送技术-GoEasy
越来越多的项目需要用到实时消息的推送与接收,怎样用.NET实现最方便呢?我这里推荐大家使用GoEasy, 它是一款第三方推送服务平台,使用它的API可以轻松搞定实时推送! 浏览器兼容性:GoEasy推 ...
最新文章
- getbytes方法_关于C#中识别和查找中英文字符串的解决方法和字符串处理方式的笔记...
- python白名单验证-python脚本简单检测ip合法性并添加到白名单文件
- centos 5 6安装本地yum源
- 信息报送不及时整改措施_工商年报如何报送?原来这才是正确打开方式
- 默认库“LIBCMTD”与其他库的使用冲突;请使用 /NODEFAULTLIB:library
- linux安装mysql后如何连接_Linux安装mysql后开启远程连接(记录相关命令)
- OSPF外部实验详解
- 获取验证码 60秒后重新获取
- f1c100s 源码_F1C100S 简易 boot 原理
- SQL(07)_INSERT INTO SELECT
- 自旋锁(spinlock)
- 如何为Github Pages设置动态的背景图片?
- java同名变量在list中添加两次_去除集合中自定义对象的重复值(对象的成员变量值都相同)...
- matlab调用海康威视摄像头_招聘|海康威视招聘一批算法、图像等AI工程师
- 对话以太坊研究员 Polynya:为什么 L2 是未来?
- 如何计算机械停车位的荷载,机械车位荷载要求-德盛利停车武汉
- linux python乱码_linux下python中文乱码解决方案详解
- 软件测试面试题:你自认为测试的优势在哪里?
- 详解GPFS文件系统架构、组网和Building Block
- cms 和 g1的主要区别