使用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服务器推送实时流花屏问题解决相关推荐

  1. 软件_搭建rtsp视频推送环境

    原创博客地址:软件_搭建rtsp视频推送环境 live555编译安装启动 编译 1 2 3 4 5 wget http://www.live555.com/liveMedia/public/live5 ...

  2. Python Web实时消息后台服务器推送技术---GoEasy

    越来越多的项目需要用到实时消息的推送与接收,怎样实现最方便呢?我这里推荐大家使用GoEasy,它是一款第三方推送服务平台,使用它的API可以轻松搞定实时推送! 浏览器兼容性:GoEasy推送 支持we ...

  3. C# Web实时消息后台服务器推送技术---GoEasy

    越来越多的项目需要用到实时消息的推送与接收,怎样实现最方便呢?我这里推荐大家使用GoEasy, 它是一款第三方推送服务平台,使用它的API可以轻松搞定实时推送! 浏览器兼容性:GoEasy推送 支持w ...

  4. LIVE555再学习 -- VLC搭建RTSP服务器(转)

    实时流协议 RTSP 是在实时传输协议的基础上工作的,主要实现对多媒体播放的控制.用户对多媒体信息的播放.暂停.前进和后退等功能就是通过对实时数据流的控制来实现的. 而这些播放控制功能的实现不仅需要多 ...

  5. 服务器推送系统安装,搭建PXE服务器,推送安装linux系统

    搭建环境: 推送服务器: Ip:192.168.189.138 系统:CentOS 5.8 推送系统:RHEL 5.4 1:配置dhcpd服务. 如果没有安装dhcpd服务,请安装: 1 2 3 4 ...

  6. ASP.NET Web实时消息后台服务器推送技术---GoEasy

    越来越多的项目需要用到实时消息的推送与接收,怎样用ASP.NET实现最方便呢?我这里推荐大家使用GoEasy, 它是一款第三方推送服务平台,使用它的API可以轻松搞定实时推送! 浏览器兼容性:GoEa ...

  7. C# Web实时消息后台服务器推送技术-GoEasy

    越来越多的项目需要用到实时消息的推送与接收,怎样用C#实现最方便呢?我这里推荐大家使用GoEasy, 它是一款第三方推送服务平台,使用它的API可以轻松搞定实时推送! 浏览器兼容性:GoEasy推送 ...

  8. Ruby Web实时消息后台服务器推送技术---GoEasy

    越来越多的项目需要用到实时消息的推送与接收,怎样实现最方便呢?我这里推荐大家使用GoEasy,它是一款第三方推送服务平台,使用它的API可以轻松搞定实时推送! 浏览器兼容性:GoEasy推送 支持we ...

  9. .NET Web实时消息后台服务器推送技术-GoEasy

    越来越多的项目需要用到实时消息的推送与接收,怎样用.NET实现最方便呢?我这里推荐大家使用GoEasy, 它是一款第三方推送服务平台,使用它的API可以轻松搞定实时推送! 浏览器兼容性:GoEasy推 ...

最新文章

  1. getbytes方法_关于C#中识别和查找中英文字符串的解决方法和字符串处理方式的笔记...
  2. python白名单验证-python脚本简单检测ip合法性并添加到白名单文件
  3. centos 5 6安装本地yum源
  4. 信息报送不及时整改措施_工商年报如何报送?原来这才是正确打开方式
  5. 默认库“LIBCMTD”与其他库的使用冲突;请使用 /NODEFAULTLIB:library
  6. linux安装mysql后如何连接_Linux安装mysql后开启远程连接(记录相关命令)
  7. OSPF外部实验详解
  8. 获取验证码 60秒后重新获取
  9. f1c100s 源码_F1C100S 简易 boot 原理
  10. SQL(07)_INSERT INTO SELECT
  11. 自旋锁(spinlock)
  12. 如何为Github Pages设置动态的背景图片?
  13. java同名变量在list中添加两次_去除集合中自定义对象的重复值(对象的成员变量值都相同)...
  14. matlab调用海康威视摄像头_招聘|海康威视招聘一批算法、图像等AI工程师
  15. 对话以太坊研究员 Polynya:为什么 L2 是未来?
  16. 如何计算机械停车位的荷载,机械车位荷载要求-德盛利停车武汉
  17. linux python乱码_linux下python中文乱码解决方案详解
  18. 软件测试面试题:你自认为测试的优势在哪里?
  19. 详解GPFS文件系统架构、组网和Building Block
  20. cms 和 g1的主要区别

热门文章

  1. 搜狗浏览器中如何设置HTTP代理
  2. 浅析EasyCVR视频技术与AR实景智能管理平台在智慧厂区中的应用
  3. 几个虚拟机的对比和介绍
  4. mysql 列转行 unpivot_SQL知识点之列转行Unpivot函数
  5. 大数据建模步骤 以及常用的算法
  6. spring中pagehelp的使用方法
  7. CACL联赛第一赛季第一轮比赛排名公布!
  8. Cinder-volume源码解析
  9. nullptr与NULL
  10. python做服务器监控_使用python进行服务器的监控