带DVR的nginx rtmp模块HLS

带DVR的nginx rtmp模块HLS,nginx,streaming,Nginx,Streaming,我已经用HLS设置了nginx rtmp模块,我想知道是否有一种方法可以像Wowza的nDVR功能一样设置DVR,让您可以倒带实时流,甚至倒带到流的最开始。现在我只得到最近的40秒左右。谢谢 (我从这里的评论中推测这是可能的:)完全可能,您只需要在应用程序配置部分增加HLS播放列表的长度。我自己也用过,效果很好 例如,如果您想要一个30分钟长的DVR播放列表,您可以将其放入应用程序部分: hls_playlist_length 30m; 有关更多信息,请参阅 注意 您使用的HLS播放器需要支持

我已经用HLS设置了nginx rtmp模块,我想知道是否有一种方法可以像Wowza的nDVR功能一样设置DVR,让您可以倒带实时流,甚至倒带到流的最开始。现在我只得到最近的40秒左右。谢谢


(我从这里的评论中推测这是可能的:)

完全可能,您只需要在应用程序配置部分增加HLS播放列表的长度。我自己也用过,效果很好

例如,如果您想要一个30分钟长的DVR播放列表,您可以将其放入应用程序部分:

hls_playlist_length 30m;
有关更多信息,请参阅

注意


您使用的HLS播放器需要支持此功能。例如,Flowplayer/JWplayer将不过Safari(Mac/iOS)将只播放实时流。

这很有效!您是否尝试过将hls_播放列表长度设置为非常大的值,例如4h?它如何影响性能?例如,我认为Wowza将其DVR存储在内存中,因此较长的流可能会导致其填满堆空间。nginx rtmp模块是否也将DVR存储在内存中,或者所有内容都包含在这些.ts块和.m3u8播放列表中?有过Wowza的经验后,我可以告诉您,它还将其DVR块存储在磁盘上。正如您可以想象的那样,让数百个客户端访问这些数据段对性能来说是可怕的。Nginx也这样做。解决方案是创建一个RAM磁盘,并通过更改HLS段路径将其存储在“内存”中
mount-t tmpfs-o size=512m tmpfs/mnt/ramdisk
然后指向nginx配置,使其将HLS存储在
/mnt/ramdisk
。你会发现,你的服务器将不会有问题,以这种方式服务大量的客户端(前提是你有足够的内存来存储段!)这也取决于播放器。我曾经在用Android版本的JW Player(Windows版本没问题)查找实时视频(VOD没问题)时遇到问题,但更新的版本,例如jwplayer-8.1.4,已经解决了这个问题,并且在Android上查找效果很好。