【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,用户将能够以超过观看的速度下载,进而缓冲媒体,并在下载时无缝观看媒体内容。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/183155.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2.2 - 网络协议 - IP协议,IP地址划分,报文格式,数据分片,抓包实战

「作者主页」:士别三日wyx 「作者简介」:CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者 「推荐专栏」:对网络安全感兴趣的小伙伴可以关注专栏《网络安全入门到精通》 IP协议 1、IP地址划分2、IP协议报文格式3、IP协议数…

RedisTemplate的配置和讲解以及和StringRedisTemplate的区别

本文主要讲redisTempalte的几种常用的序列化方式 string,我们大部分情况下都希望存入redis的数据可读性强一些,并且value也不总是一个规则的类型,所以这里也是不用json序列化的原因,可以更自由方便,下边提供配置方法 …

useEffect和useMemo

每次点击》状态发生改变会执行Example()函数, useEffect会执行吗?只有数组里传了count才会执行,没有的话不会执行(但页面中的state还是响应式的,只是不会执行useEffect里面的内容)。 useEffect里所执行的…

深度学习框架:Pytorch与Keras的区别与使用方法

☁️主页 Nowl 🔥专栏《机器学习实战》 《机器学习》 📑君子坐而论道,少年起而行之 文章目录 Pytorch与Keras介绍 Pytorch 模型定义 模型编译 模型训练 输入格式 完整代码 Keras 模型定义 模型编译 模型训练 输入格式 完整代…

渗透测试考核(靶机1)

信息收集 主机发现 nbtscan -r 172.16.17.0/24 发现在局域网内,有两台主机名字比较可疑,177和134,猜测其为目标主机,其余的应该是局域网内的其他用户,因为其主机名字比较显眼,有姓名的拼音和笔记本电脑的…

【Python】SqlmapAPI调用实现自动化SQL注入安全检测

文章目录 简单使用优化 应用案例:前期通过信息收集拿到大量的URL地址,这个时候可以配置sqlmapAP接口进行批量的SQL注入检测 (SRC挖掘) 查看sqlmapapi使用方法 python sqlmapapi.py -h启动sqlmapapi 的web服务: 任务流…

【论文笔记】SDCL: Self-Distillation Contrastive Learning for Chinese Spell Checking

文章目录 论文信息Abstract1. Introduction2. Methodology2.1 The Main Model2.2 Contrastive Loss2.3 Implementation Details(Hyperparameters) 3. Experiments代码实现个人总结值得借鉴的地方 论文信息 论文地址:https://arxiv.org/pdf/2210.17168.pdf Abstrac…

游戏APP接入哪些广告类型

当谈到游戏应用程序(APP)接入广告时,选择适合用户体验和盈利的广告类型至关重要。游戏开发者通常考虑以下几种广告类型: admaoyan猫眼聚合 横幅广告: 这些广告以横幅形式显示在游戏界面的顶部或底部。它们不会打断游戏…

idea doc 注释 插件及使用

开启rendered view https://blog.csdn.net/Leiyi_Ann/article/details/124145492 生成doc https://blog.csdn.net/qq_42581682/article/details/105018239 把注释加到类名旁边插件 https://blog.csdn.net/qq_30231473/article/details/128825306

解决QT信号在信号和槽连接前发出而导致槽函数未调用问题

1.使用QMetaObject::invokeMethod 当使用 QMetaObject::invokeMethod 将函数放入事件队列时,该函数会在适当时机被执行,然后被从事件队列中移除。 "适当时机" 指的是函数被安排在事件队列中,等待事件循环处理时机。这个时机取决于…

聚类分析例题 (多元统计分析期末复习)

例一 动态聚类,K-means法,随机选取凝聚点(题目直接给出) 已知5个样品的观测值为:1,4,5,7,11。试用K均值法分为两类(凝聚点分别取1,4与1,11) 解&…

找不到 sun.misc.BASE64Decoder ,sun.misc.BASE64Encoder 类

找不到 sun.misc.BASE64Decoder ,sun.misc.BASE64Encoder 类 1. 现象 idea 引用报错 找不到对应的包 import sun.misc.BASE64Decoder; import sun.misc.BASE64Encoder;2. 原因 因为sun.misc.BASE64Decoder和sun.misc.BASE64Encoder是Java的内部API,通…

oracle java.sql.SQLException: Invalid column type: 1111

1.遇到的问题 org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.type.TypeException: Could not set parameters for mapping: ParameterMapping{propertyuuid, modeIN, javaTypeclass java.lang.String, jdbcTypenull, numericScalenull, r…

VR虚拟教育展厅,为教学领域开启创新之路

线上虚拟展厅是一项全新的展示技术,可以为参展者带来不一样的观展体验。传统的实体展览存在着空间限制、时间限制以及高昂的成本,因此对于教育领域来说,线上虚拟教育展厅的出现,可以对传统教育方式带来改革,凭借强大的…

An illegal reflective access operation has occurred问题记录

报错 2023-11-30T01:08:18.7440800 [ERROR] [system.err] WARNING: An illegal reflective access operation has occurred 2023-11-30T01:08:18.7450800 [ERROR] [system.err] WARNING: Illegal reflective access by com.intellij.ui.JreHiDpiUtil to method sun.java2d.Sun…

ORA-00837: Specified value of MEMORY_TARGET greater than MEMORY_MAX_TARGET

有个11g rac环境,停电维护后,orcl1正常启动了,orcl2启动报错如下 SQL*Plus: Release 11.2.0.4.0 Production on Wed Nov 29 14:04:21 2023 Copyright (c) 1982, 2013, Oracle. All rights reserved. Connected to an idle instance. SYS…

1091 Acute Stroke (三维搜索)

题目可能看起来很难的样子,但是看懂了其实挺简单的。(众所周知,pat考察英文水平) 题目意思大概是:给你一个L*M*N的01长方体,求全为1的连通块的总体积大小。(连通块体积大于T才计算在内&#xf…

从0开始学习JavaScript--JavaScript 模板字符串的全面应用

JavaScript 模板字符串是 ES6 引入的一项强大特性,它提供了一种更优雅、更灵活的字符串拼接方式。在本文中,将深入探讨模板字符串的基本语法、高级用法以及在实际项目中的广泛应用,通过丰富的示例代码带你领略模板字符串的魅力。 模板字符串…

亚马逊云科技基于 Polygon 推出首款 Amazon Managed Blockchain Access,助 Web3 开发人员降低区块链节点运行成本

2023 年 11 月 26 日,亚马逊 (Amazon) 旗下 Amazon Web Services(Amazon)在其官方博客上宣布,Amazon Managed Blockchain (AMB) Access 已支持 Polygon Proof-of-Stake(POS) 网络,并将满足各种场景的需求,包…

vueRouter常用属性

vueRouter常用属性 basemodehashhistoryhistory模式下可能会遇到的问题及解决方案 routesprops配置(最佳方案) scrollBehavior base 基本的路由请求的路径 如果整个单页应用服务在 /app/ 下,然后 base 就应该设为 “/app/”,所有的请求都会在url之后加上/app/ new …