多协议、性能稳定、丰富API的流媒体服务器软件
如何设计Wowza Media Server的nDVR工作流程?
Wowza nDVR 可以让你在对直播流进行录制的同时允许用户播放、暂停、倒回或重新回到当前直播点。

部署上的考虑:



Wowza Media Server 录制功能的多个选择


在Wowza nDVR之外,Wowza Media Server有好多种方式可以对直播流进行录制。两个内建的方式是live-recordStreamType 以及 直播流录制功能。 这些方式可以和Wowza nDVR组合起来实现一些下面介绍的更复杂的录制功能。了解Wowza产品的细节

总的来说,如果你将Wowza nDVR与任何内建的一个录制方式组合起来,那么,你将可以同时对用户提供两个服务:

  • 在对直播流进行录制的同时提供位置定位能力(Wowza nDVR)
  • 将直播流录制到一个文件中,可以在日后提供VOD点播服务(内建的录制方式)

Wowza nDVR 插件
当你希望用户可以对直播流进行播放、暂停、倒回到之前的时刻或者又回到当前的直播点时,你就需要使用Wowza nDVR插件。这些观看体验可以发生在录制正在进行的时刻。 当直播流结束时,录制的数据(.m4fa 和 .m4fv 文件)可以通过Wowza Media Server进行播放(你无法无法用一个播放器直接播放这些文件)。 截至目前,还不能将nDVR数据(.m4fa 和 .mp4v 文件)重新组合后生成为.mp4 或 .flv 文件。了解Wowza的产品细节

"live-record" 或 "rtp-live-record" Stream Type
这是最简单的录制方式,但是它能给你提供的控制也是最少的。 只要编辑Application.xml文件即可完成配置,它是Wowza Media Server内建的功能,无需任何插件或附加模块。当你希望提供下面的服务时,可以选择这个功能:

  • 将直播流录制到一个单独的文件中(flv、mp4)供点播播放。在录制完成之前,这个文件是不能被播放的。
  • 对整个发布流进行完整的录制
  • 用支持该文件格式的任意播器播放录制文件,无需连接Wowza Media Server。
  • 用Wowza Media Server支持的除HTTP之外的任意协议(例如RTMP, RTSP)来播放。

注意:
  • StreamType "live-record" 和"live"是一样的,只是增加了录制功能。
  • StreamType "rtp-live-record" 和"rtp-live"是一样的,只是增加了录制功能。
  • StreamType是设置Application.xml文件Streams/StreamType中的属性。要了解更多,请阅读Wowza用户使用手册中关于StreamTypes的章节

直播流录制API

Wowza nDVR 的高级配置,可以优化你的录制


当你开始部署你的Wowza nDVR功能时,请对下面介绍的参数进行调优。要了解关于这些参数的更多信息,请阅读如何对Wowza nDVR 插件进行一些高级配置?.

streamTimeout
在nDVR停止录制之前它等待输入流进入的时间。这个超时时间意味编码器从中断连接到重新连接的时间。

dvrChunkDurationMinimum
控制nDVR的最小切片大小。你可以增加这个值以让切片文件更大一些,由此来减少DVR存储保存在磁盘上的文件个数。但这里需要有一个权衡,因为HTTP streaming 天生至少有3个切片的延时,大一些的切片将导致播放之间有更多的延时。

dvrAudioOnlyChunkTargetDuration
当只有音频时的目标切片时长。它适用于当音频流的场景。如果输入流中既有音频也有视频,这个设置将被忽略,因为在这个场景下是根据关键帧来确定切片大小。

dvrPacketSortTime
在音频和视频数据包到达Wowza nDVR之前增加一个packet sorter 。这类似于直播流的packet sorter。 但这将增加对应这个时间的延时. 了解更多Wowza产品细节 建议你在Wowza Media Server的上游解决音频和视频的对齐问题,但是当无法这样解决时,你可以用这个设置。

dvrAllowableAVPacketDelta
Wowza nDVR 希望输入流的音频和视频是的对齐的。通过这个参数,Wowza nDVR将试着对没有对齐的数据做出补偿,但这不会完全解决问题。在部署到正式商用环境之前解决对齐问题非常重要。增加对这个问题的容忍将导致一些片段没有被录制,这将导致整体质量变得不可接受。

需要做什么可以对nDVR的部署进行扩展?


性能调优
当在正式商业环境运行时,对服务器进行合适的调优是非常重要的。请阅读性能调优指南

最佳实践
仔细阅读Wowza nDVR 快速上手指南中的最佳实践章节. 这些建议是设计你的nDVR部署方案的基础。

管理录制数据
配置录制的最佳方式是什么呢?许多应用场景有录制长时长文件的需求。同时录制到一个大文件中是很简单的,但更好的方式是将数据录制为可管理的小切片文件。多个小的录制文件比一个大的录制文件更好,原因如下:

  • 许多播放器不能很好的处理太长的录制文件。
  • 一个录制文件被Wowza Media Server管理时会被当作一个整体。如你有一个非常大的录制文件,那么它的所有manifest信息将被当作一个切片被加载到服务器中,这有几个后果:
    1. 需要更多的内存来管理录制文件的manifest信息。
    2. Wowza nDVR有一个机制,就是当录制文件不会被再次使用时,就会在内存中被取消以释放资源。如果使用一个很大的单个录制文件以访问它的一小部分就会使这个机制失效。
    3. 当码率自适应对录制流进行对齐时会使用整个录制内容。这时它需要更多的内存来处理很大的内容对齐工作。
  • 当你将一个直播流录制到一个逻辑切片(例如, a 24/7 period broken down into 1 hour recordings), 你可以用如何使用Wowza nDVR Playlist Request API 生成一个具有一个设定的开始时间和(可选)一个结束时间的playlist。


直播流中继(源/边缘)(Origin/Edge)
这个方式通过配置源(Origin)和边缘(Edge)服务器来扩展你的直播流服务架构。要了解如何配置,请阅读如何让直播流中继和Wowza nDVR 插件(origin/edge)配合使用?

MediaCache
MediaCache 插件使得VOD点播流具有缓存机制。这个功能和直播流中继一起可以被加入到Wowza nDVR 的工作流程中。 要了解这个功能,请阅读如何配置MediaCache(对VOD点播流进行扩展). 要了解如何配置,请阅读如何为Wowza nDVR插件配置使用MediaCache

在Wowza Media Server之外需要做什么?


文件访问
Wowza nDVR 限制录制数据最长为30小时。 之所以这么设置是因为过长的录制数据会导致大量的目录和文件,会让文件系统在管理这些大量文件之时遇到一些问题。 由于每隔几秒(基于关键帧的大小)就会请求一次播放列表, 因此,一个很大的播放列表对播放器来说会有问题,我们应该避免这样。请阅读如何使用Wowza nDVR的 playlist request API? 以获得更多关于如何请录制内容的一部分来播放。

针对你的nDVR流程,对应的文件访问的水平需要有足够的硬件处理能力。通过试运行来测试会有多少文件被生成,并测试你的硬件在处理这些文件访问时的能力到底如何。实际证明,多个小录制文件更容易被管理。

文件管理
Wowza nDVR WindowDuration 参数控制了录制数据的长度,但是并不会管理之前的录制存储。例如,当你设置WindowDuration 为3小时,录制的数据将会是3个小时。随时时间的继续,当超过3小时但仍然小于30小时时,录制数据将会只有最近3小时的数据,其它更早的录制数据将被删除。如果ArchiveStrategy 被设置为 delete, 如果之前有一个同名的录制存储,它将被删除并被新的录制数据所覆盖。 如果在你的文件系统上有其它之间录制的DVR数据,它们不会收到WindowDuration参数的影响。监控和管理这些录制数据不是nDVR的功能范畴。你可以自己写脚本来删除你不想要的录制数据。

注意: 清除切片数据以保持WindowDuration 的录制时长,使它不会超过30小时。