本文采用的 SRS 版本是 4.0-b8 , 下载地址:github


本文主要对 SRS RTMP 直播做延迟测试,然后介绍如何优化 RTMP 的延迟。为了不嵌套界面,介绍一下 ffmpeg 如何抓取某个应用屏幕。

先下载一个秒表程序,ledcount ,运行界面如下:

FFmpeg 抓取 某个 窗口的命令如下:

ffmpeg.exe -f gdigrab -framerate 6 -i  "title=abcds" out2.flv

由于 FFmpeg 不支持中文的窗口名称,所以需要 下载一个软件 Captain ,可以修改窗口的标题。上面我把 窗口标题 修改成 abcds ,这样 ffmpeg 就能抓取了。

注意。Captain 这个软件,是使用鼠标中间的按钮来修改标题的,一定要把鼠标移动到应用上方的菜单栏的位置在点击中间的按钮,才能弹出来修改按钮。

修改如下:


ffmpeg 录制环境已经装备好,下面就用一条命令推流到 SRS 的RTMP 服务器。

ffmpeg.exe -f gdigrab -framerate 6 -i "title=abcds" -f flv rtmp://192.168.0.123/live/livestream

然后用 ffplay 播放 RTMP 流,命令如下:

ffplay -fflags nobuffer -i rtmp://192.168.0.123/live/livestream

上面是 截图得出来的延迟,一共 0.4 秒左右的延迟。

上面 FFplay 使用了 nobuffer,虽然延迟少了,但是可能会有少许不流畅。不开启这个选项延迟一般在 7秒左右延迟。这个是利用大的 buffer 来实现视频播放的流畅性,但是同时延迟会加大。


下面开始优化延迟,参考下面两篇文章进行配置。

1,《低延时直播应用》

2,《RTMP低延时配置》

由于SRS的 低延迟配置 都在 conf/realtime.conf 里面,SRS 启动的时候直接指定这个文件就行。命令如下:

./objs/srs -c ./conf/realtime.conf

再次截图延迟,如下:

延迟 0.5 秒,在局域网内好像没什么差别。这里声明一下,本文采用的测量方法不是严格准确的,推荐看 《延迟的测量》


扩展知识:

1,FFmpeg 抓取 整个桌面或者某个特定位置,请看 《FFmpeg从入门到精通》第 7.3 节

相关阅读:

  1. 《FFmpeg 抓取应用窗口》
  2. 《低延时直播应用》
  3. 《RTMP低延时配置》
  4. 延迟的测量

由于笔者的水平有限, 加之编写的同时还要参与开发工作,文中难免会出现一些错误或者不准确的地方,恳请读者批评指正。如果读者有任何宝贵意见,可以加我微信 Loken1。QQ:2338195090。


推荐一个零声学院免费公开课程,个人觉得老师讲得不错,分享给大家:

Linux,Nginx,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,TCP/IP,协程,DPDK等技术内容,立即学习

SRS4.0源码分析-RTMP延迟相关推荐

  1. SRS4.0源码分析-RTMP入口

    本文采用的 SRS 版本是 4.0-b8 , 下载地址:github 上篇文章 <SRS4.0源码分析-main> 讲解了 SRS main 函数的基本流程,但是可能有些朋友还是比较懵逼. ...

  2. SRS4.0源码分析-推流总结

    本文采用的 SRS 版本是 4.0-b8 , 下载地址:github 本文主要对前面的文章做下总结. <SRS4.0源码分析-main>,<SRS4.0源码分析-RTMP入口> ...

  3. SRS4.0源码分析-SrsRecvThread::cycle

    本文采用的 SRS 版本是 4.0-b8 , 下载地址:github 从<SRS4.0源码分析-SrsRtmpConn::stream_service_cycle> 得知 ,真正接受客户端 ...

  4. SRS4.0源码分析-序言

    <SRS4.0源码分析>专栏,会从 configure(配置),makefile(编译规则),main (入口函数), 带你一步一步了解 SRS 的主干代码逻辑. 这里分享一个本人阅读开源 ...

  5. SRS4.0源码分析-CMake

    本文采用的 SRS 版本是 4.0-b8 , 下载地址:github <SRS4.0源码分析-调试环境搭建> 讲了 SRS 在 Clion 里面的调试,本文主要讲解 srs-4.0-b8\ ...

  6. SRS4.0源码分析-main

    本文采用的 SRS 版本是 4.0-b8 , 下载地址:github 本文开始讲解 SRS 的入口文件.SRS 源码里 其实有 3 个 main() 函数,分别在 srs_main_ingest_hl ...

  7. SRS4.0源码分析-state-thread

    本文采用的 SRS 版本是 4.0-b8 , 下载地址:github 由于 SRS 主要使用的 是 state-thread 协程库,这个库是 8年前的, <state-thread 官网文档& ...

  8. SRS4.0源码分析-调试环境搭建

    本本文采用的 SRS 版本是 4.0-b8 , 下载地址:github SRS4.0 可以很方便地在 clion 软件下面断点调试,查看函数调用,堆栈. SRS的作者杨成立很贴心,在源码里放置了一个 ...

  9. Tomcat7.0源码分析——请求原理分析(上)

    前言 谈起Tomcat的诞生,最早可以追溯到1995年.近20年来,Tomcat始终是使用最广泛的Web服务器,由于其使用Java语言开发,所以广为Java程序员所熟悉.很多早期的J2EE项目,由程序 ...

最新文章

  1. 将SQL for xml path('')中转义的字符正常显示
  2. javaweb 之Ajax
  3. java019异常、File类
  4. python 打开 pip_python pip
  5. log4net 无法输出日志,跟踪发现IsErrorEnabled等,都是Flase
  6. 产品经验谈:阿里B2B电商-新零售产地供应链的思考与实践
  7. 【必看】这6个吓人的Linux命令,你用过吗?
  8. 机载计算机网络拓扑结构设计,计算机网络课程设计-网络拓扑结构设计.doc
  9. java输入流的控制_Java-Android-IO流-控制台输入输出
  10. office 高效办公智慧树_干货高效实用的office办公小技巧之word篇
  11. 归并排序的时间复杂度为什么为nlogn
  12. 备份linux分区到usb,将Linux引导加载程序备份到USB的方法
  13. html上传文件是否合法,java 在前端页面上传图片文件,验证是否为合法的图片
  14. 如何从零设计一款牛逼的高并发架构(建议收藏)
  15. python开发技术详解代码_python开发技术详解(四)
  16. MyEclipse搭建安卓环境
  17. 安卓应用出海指南--发布到Google Play
  18. Discuz代码分析:getgpc($k, $t='GP')获取超全局数组值
  19. Spotfire 连接mysql数据库
  20. VLAN 间路由配置

热门文章

  1. iPhone12全面曝光10月上市 iPhone12是5g双卡双待手机
  2. rust最美建筑_美丽心灵16_ If I Rest, I Rust
  3. 【报告分享】品牌营销数智化转型白皮书-阿里研究院群邑GroupM(附下载)
  4. AtCoder Beginner Contest 243(A-D)
  5. Android 加速度传感器的使用详解
  6. 燕教授使用体验,从漱口水到牙膏
  7. 【模拟IC】系统频率稳定性分析与极点补偿技术介绍
  8. 你可能还没听过DNA存储技术,但微软已经打算三年内将其商用了
  9. unity找不到报错界面
  10. Java猿社区—Redis一篇系列—第三章、Redis数据类型