转自: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

wowza 降低延迟的更多相关文章

  1. java异步编程降低延迟

    目录 java异步编程降低延迟 一.ExecutorService和CompletionService 二.CompletableFuture(重要) 三.stream中的parallel(并行流) ...

  2. 揭秘阿里云 RTS SDK 是如何实现直播降低延迟和卡顿

    作者:予涛 途坦 这个夏天,没什么能够比一场酣畅淋漓的奥运比赛来的过瘾.但是,在视频平台直播观看比赛也有痛点:"卡顿" 和 "延时".受限于不同地域.复杂的网络 ...

  3. 【MySQL】你以为设置了并行复制就降低延迟了?这个你绝对想不到!

    在MySQL官方版本中,为了保证其的高可用性,一般情况我们会采用主从复制的方式来解决.当然,方法很多.而我们今天所要处理的是采用GTID方式并且开了多线程复制后,仍然延迟的情况,糟糕的是,延迟还在不断 ...

  4. Azure媒体服务 直播延迟的原因解析

    当我们使用媒体服务的直播功能,会发现有时候会有较大的延迟,而延迟的产生和客户端以及推送软件的配置也有关系,本文以Wirecast为例进行分析 Encoder导致的延迟:在编码这一步骤的时候,它会消耗机 ...

  5. Java性能优化权威指南-读书笔记(四)-JVM性能调优-延迟

    延迟指服务器处理一个请求所花费的时间,单位一般是ms.s. 本文主要讲降低延迟可以做的服务器端JVM优化. JVM延迟优化 新生代 新生代大小决定了应用平均延迟 如果平均Minor GC持续时间大于应 ...

  6. Redis 响应延迟问题排查

    计算延迟时间 如果你正在经历响应延迟问题,你或许能够根据应用程序的具体情况算出它的延迟响应时间,或者你的延迟问题非常明显,宏观看来,一目了然.不管怎样吧,用redis-cli可以算出一台Redis 服 ...

  7. 卡马克揭开VR延迟背后的真相

    原文:http://oculusrift-blog.com/john-carmacks-message-of-latency/682/ 延迟是OculusVR所面对的最大挑战之一,  它不仅会分散玩家 ...

  8. Redis为什么变慢了?常见延迟问题定位与分析

    Redis作为内存数据库,拥有非常高的性能,单个实例的QPS能够达到10W左右.但我们在使用Redis时,经常时不时会出现访问延迟很大的情况,如果你不知道Redis的内部实现原理,在排查问题时就会一头 ...

  9. Redis常见延迟问题定位与分析

    Redis作为内存数据库,拥有非常高的性能,单个实例的QPS能够达到10W左右.但我们在使用Redis时,经常时不时会出现访问延迟很大的情况,如果你不知道Redis的内部实现原理,在排查问题时就会一头 ...

随机推荐

  1. 2016青岛区域赛.Coding Contest(费用流 + 概率计算转换为加法计算)

    Coding Contest Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)To ...

  2. linux-导入python自定义模块的使用方法

    #!/usr/bin/python # -*- coding:utf -8 -*- import os import sys sys.path.append("/h/s/compare_f& ...

  3. package.json的所有配置项及其用法,你都熟悉么

    写在前面 在前端开发中,npm已经是必不可少的工具了.使用npm,不可避免的就要和package.json打交道.平时package.json用得挺多,但是没有认真看过官方文档.本文结合npm官方文档 ...

  4. Hadoop本地模式搭建

    官方文档,不同版本修改url地址中的数字即可 http://hadoop.apache.org/docs/r2.7.2/hadoop-project-dist/hadoop-common/Single ...

  5. web.xml文件头声明各个版本参考

    Servlet 3.1 Java EE 7 XML schema, namespace is http://xmlns.jcp.org/xml/ns/javaee/ <web-app xmlns ...

  6. MacOS X快捷键一览(http://www.cnblogs.com/ios8/p/Mac-OSX-keyword-cmd.html)

    ctrl+shift                                    快速放大dock的图标会暂时放大,而如果你开启了dock放大Command+Option+W         ...

  7. Java第三阶段复习

    Java第三阶段复习: 1. Spring 1. IOC: 定义:Inverse Of Controller:反转控制,将bean对象的创建和对象之间的关联关系的维护由原来我们自己创建.自己维护反转给 ...

  8. PAT Basic 1028 人口普查 (20 分)

    某城镇进行人口普查,得到了全体居民的生日.现请你写个程序,找出镇上最年长和最年轻的人. 这里确保每个输入的日期都是合法的,但不一定是合理的——假设已知镇上没有超过 200 岁的老人,而今天是 2014 ...

  9. 算法学习 howto

    入门: The Most Important Algorithms http://www.risc.jku.at/people/ckoutsch/stuff/e_algorithms.html Alg ...

  10. centos 挂载windows 2003 smb

    mount -t cifs //10.100.100.250/产品服务器/待测库/FI\ Cloud/CICD/BuildRoot_Dev/ /cicd --verbose -o vers=1.0,u ...