【NGINX--9】复杂的媒体串流

1、传输 MP4 和 FLV 格式的文件

需要流式传输 MP4 或 FLV 格式的数字媒体。
解决方案
指定一个 HTTP location 代码块,提供 .mp4 或 .flv 格式的视频。NGINX 将使用渐进式
下载或 HTTP 伪流技术流式传输媒体并支持搜索:

http {
    server {
        # ...
        location /videos/ {
            mp4;
        }
        location ~ \.flv$ { 
            flv;
        }
    }
}

示例中的第一个 location 代码块告知 NGINX,videos 目录中的文件是 MP4 格式的,可以通过渐进式下载进行传输。第二个 location 代码块告知 NGINX,所有以 .flv 结尾的文件都是 FLV 格式的,可以利用 HTTP 伪流技术进行传输。
详解
NGINX 中的流视频或音频文件处理就像单个指令一样简单。渐进式下载使客户能够在文件下载完成之前播放媒体文件。NGINX 为两种格式的媒体提供未下载部分搜索支持。

2、使用 NGINX Plus 的 HLS 模块进行流式传输

需要 HTTP Live Streaming(HLS)处理 MP4 文件中封装的 H.264/AAC 编码内容。

利用 NGINX Plus 的 HLS 模块进行实时分段、分包和多路复用,及控制分段缓冲等等,例如转发 HLS 参数:

location /hls/ {
    hls; # Use the HLS handler to manage requests
    # Serve content from the following location 
    alias /var/www/video;
    # HLS parameters 
    hls_fragment 4s;
    hls_buffers 10 10m; 
    hls_mp4_buffer_size 1m; 
    hls_mp4_max_buffer_size 5m;
}

该 location 代码块指示 NGINX 流式传输来自 /var/www/video 目录的 HLS 媒体,并将该媒体分割成 4 秒长度的片段。HLS 缓冲区的数量设置为 10,大小为 10MB。初始MP4 缓冲区大小设置为 1MB,最大为 5MB。
详解
NGINX Plus 的 HLS 模块支持动态复用转换 MP4 媒体文件。许多指令都支持控制媒体的分段和缓冲方式。location 代码块必须配置为使用 HLS 处理程序将媒体作为 HLS 流进行传输。HLS 分段时长设置为几秒,指示 NGINX 按时间长度对媒体进行分段。缓冲的数据量通过 hls_buffers 指令进行设置,该指令指定了缓冲区的数量和大小。允许客户端在缓冲数据达到一定数量(由 hls_mp4_buffer_size 指定)后开始播放媒体文件。但这可能需要较大的缓冲区,因为视频相关的元数据可能会超过初始缓冲区的大小。缓冲区的上限通过 hls_mp4_max_buffer_size 设置。NGINX 可通过这些缓冲变量优化最终用户体验。为这些指令选择正确的值需要了解目标受众和媒体。举例来说,如果您的大部分媒体是大型视频文件,并且目标受众拥有很高的带宽,那么您可以选择更大的最大缓冲区和更长时间的分段。这样,与内容相关的元数据在初始下载时不会出错,并且用户能够接收到更大的片段。

3、使用 NGINX Plus 的 HDS 模块进行流式传输

需要支持已经分段且与元数据分开的 Adobe HTTP Dynamic Streaming(HDS)文件。

NGINX Plus 通过 F4F 模块支持分段的 FLV 文件,使用该功能向用户提供 Adobe Adaptive Streaming(Adobe 自适应流媒体):

location /video/ {
    alias /var/www/transformed_video; 
    f4f;
    f4f_buffer_size 512k;
}

该示例指示 NGINX Plus 使用 NGINX Plus F4F 模块向客户端提供来自磁盘某个位置的此前已分段的媒体。索引文件(.f4x)的缓冲区大小设置为 512KB。
详解
NGINX Plus F4F 模块支持 NGINX 向最终用户提供此前已分段的媒体。这样的配置就像在 HTTP location 代码块内部使用 f4f 处理程序一样简单。f4f_buffer_size 指令为此类媒体的索引文件配置缓冲区大小。

4、使用 NGINX Plus 限制带宽

需要限制下游(downstream)媒体串流客户端的带宽,且不会影响观看体验。

利用 NGINX Plus 的比特率限制功能处理 MP4 媒体文件:

location /video/ { 
    mp4;
    mp4_limit_rate_after 15s; 
    mp4_limit_rate 1.2;
}

该配置允许下游客户端在应用比特率限制之前下载 15 秒。15 秒钟过后,客户端能够以 120% 的比特率速率下载媒体,因此客户端的下载速度始终快于播放速度。
详解
NGINX Plus 的比特率限制能够让流媒体服务器根据传输的媒体动态限制带宽,客户端可以下载尽可能多的内容,从而确保无缝的用户体验。实操指南 9.1 中描述的 MP4 处理程序将这个 location 代码块指定为流式传输 MP4 媒体格式。速率限制指令(例如mp4_limit_rate_after)告知 NGINX 仅在指定的时间(几秒钟)之后限制流量的速度。MP4 速率限制方面的另一个指令是 mp4_limit_rate,该指令指定了允许客户端下载的比特率(相对于媒体的比特率)。赋予 mp4_limit_rate 指令的值 1 指定 NGINX 将带宽限制为媒体的比特率(1 比 1)。如果为 mp4_limit_rate 指令提供的值超过 1,用户将能够以超过观看的速度下载,进而缓冲媒体,并在下载时无缝观看媒体内容。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小白--AI

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值