转自:http://www.ttstream.com/wowza/live/howToAchieveTheLowestLatencyFromCaptureToPlayback

 
这篇文章介绍了在用RTMP播放Wowza Streaming Engine的直播流时,需要在Wowza服务器上做哪些配置以实现最低的延时效果。

注意:

1、本文的介绍只针对播放RTMP直播流的场景。

2、要了解更多关于低延时的介绍,请参考Low-latency Streaming

提要


使用 low-latency 类型的直播流

调整播放器侧的Buffer time

关于编码参数的推荐

使用 low-latency 类型的流


用Wowza Streaming Engine Manager 管理界面来配置

按以下操作启用Low-latency类型的直播流:

  1. 在Wowza Streaming Engine Manager管理界面,点击Applicationstab菜单,点击你的直播应用名(例如live).
  2. Setuptab页的应用详情界面,点击Edit.
  3. Low-latency stream的复选框上打勾,点击Save,然后根据提示重启Wowza应用,让配置生效。

用XML 文件来配置

要启用Low-latency 流

  1. 用文本编辑器打开[install-dir]/conf/[application]/Application.xml文件,将Streams/StreamType参数改为live-lowlatency.
  2. 重启Wowza 服务器,让配置生效。

调整播放器侧的buffer time


在RTMP播放器侧,很重要的一点是:在NetStream.setBufferTime()方法中讲参数设置为0(在Actionscript 3上,请使用"NetStream.bufferTime = 0;")。 这将让你的播放器获得最低的延时效果。

注意1: 尽管将缓冲时长设置为0可以为你带来最低的延时, 但是它可能导致播放并不流畅。因此你可能需要略微增加一点缓冲时长(例如.1 或 .25)。
注意2: 当你使用JW Player时,你需要使用bufferLength参数设置缓冲时长。请阅读JW Palyer 6如何与Wowza Streaming Engine配合使用?

低帧率下流畅播放

当使用NetStream.setBufferTime将缓冲设置为0时,你可以将帧率降低,让播放器能够更快的呈现帧的图像。 
有时候,降低flushInterval的值可以获得更流畅的播放效果。你可以编辑[install-dir]/conf/[application]/Application.xml 文件并在Streams/Properties中添加下面的属性参数来实现它:

但是,要注意的是,按这样的设置,Wowza服务器在处理每一个直播流传输所占用的CPU资源会上升。因此可以处理的并发用户数会降低。 
用Wowza Streaming Engine Manager 管理界面来配置

  1. 在Wowza Streaming Engine Manager管理界面,点击Applicationstab菜单,点击你的直播应用名。
  2. 在应用的详情界面,点击Propertiestab页,再点击Quick Links导航中的Custom链接
  3. Custom部分,点击Edit.
  4. 点击Add Custom Property,在Add Custom Property对话框中按以下设置,然后点击Add:
    • Path - Select /Root/Application/Streams.
    • Name - Enter flushInterval.
    • Type - Select Integer.
    • Value - Enter 25.
  5. Repeat the previous step to add the onFlushNotifyClients property using the following values: 
    • Path - 选择 /Root/Application/Streams.
    • Name - 输入 onFlushNotifyClients.
    • Type - 选择 Boolean.
    • Value - 输入 true.
  6. 点击 Save,然后根据提示重启应用。

用XML 文件来配置

<Property>
<Name>flushInterval</Name>
<Value>25</Value>
<Type>Integer</Type>
</Property>
<Property>
<Name>onFlushNotifyClients</Name>
<Value>true</Value>
<Type>Boolean</Type>
</Property>

关于编码参数的建议


时延也可能产生在视频编码环节。我们发现当使用Flash播放器的内建编码器(麦克风和摄像头)时可以将编码延时降到最低。 这个Flash播放器的内建编码系统对于视频编码采用了Sorenson Spark (一个H.263的变种),对于音频编码采用了NellyMoser ASAO或Speex。 要实现低延时,很重要的是你要用尽可能地的码率实现一个可接受的视频质量。在Wowza Media Server安装包中的例子VideoChat是一个如何使用Flash播放器内建编码实现地延时的很好的案例。

增加帧率或者降低关键帧间隔也可以降低播放的延时。

注意: NellyMoser ASAO 和 Speex 音频编码对于每一个数据包采用固定数值的采样率。 因为这个原因,采用较高的采样率是由于每秒中产生的数据包会更多,这样在降低延时方面会更好一些。 因此,我们建议当你使用内建的Microphone编码音频时,将Microphone.rate 设置为 11KHz 或 22KHz

最新文章

  1. JavaScript -- 小试牛刀
  2. android内存分析:heap Snapshot的使用
  3. nignx 负载均衡的几种算法介绍
  4. 关于小组所要做的APP的想法
  5. Linq和Lamda表达式的简单处理方式
  6. (转)Rest介绍
  7. mysql---用户管理
  8. window.onbeforeunload 如果取消, 那么javascript变量会保存
  9. git 版本控制系统初学
  10. 【Java基础】一个有意思的泛型方法Arrays.asList(T... a)
  11. SSH通过超链接传递中文参数出现乱码问题
  12. Eclipse的Console乱码
  13. RocketMQ快速入门
  14. 第52章 撤销端点(Revocation Endpoint) - Identity Server 4 中文文档(v1.0.0)
  15. Jieba库使用和好玩的词云
  16. 201771010142 张燕&amp; 杨蓉庆 实验十一 集合
  17. 【转】Python 面向对象(初级篇)
  18. IIS环境下部署https【转载】
  19. linux通用技巧集合
  20. Linux 配置SSH 无密钥登陆

热门文章

  1. SGU 521 North-East ( 二维LIS 线段树优化 )
  2. w3c之js学习总结
  3. 2019 红帽杯 Re WP
  4. Vue-Quill-Editor 富文本编辑器
  5. MFC学习笔记3---使对话框风格与系统统一
  6. 《Java核心技术卷I》——第5章 继承
  7. C#基础知识之依赖注入
  8. 通过spring工具类获取bean
  9. java ThreadGroup源码分析
  10. TLS漏洞:超过50万个电子邮件服务器容易受黑客攻击,太可怕了