Nginx基础知识之————RTMP模块中的中HLS专题(翻译文档)

一、在Nginx配置文件的RTMP模块中配置hls

 hls_key_path /tmp/hlskeys;

提示错误信息:

nginx: [emerg] the same path name "/data/hlskeys" used in /usr/local/nginx/conf/nginx.conf:178 and in /usr/local/nginx/conf/nginx.conf:178

解决办法:

查看官方RTMP源代码:nginx-rtmp-module / hls /ngx_rtmp_hls_module.c

ngx_conf_merge_str_value(conf-> key_path,prev-> key_path,“”);

在hls / ngx_rtmp_hls_module.c中的第2346行和第2421行调用两次 应该删除线或者注释掉2346上的一个【我这里时暂时注释掉了】,以阻止nginx抛出配置错误nginx:[emerg]在以下语言中使用相同的路径.

修改后的配置文件:

重新编译:nginx-rtmp-module 模块,

重新启动侧不会出现该错误信息:

[email protected]:/usr/local/nginx/conf# service nginx restart
* Stopping Nginx Server...
* Starting Nginx Server...

查看生成的文件即可,HLS密钥文件已经生成了,如下所示:

[email protected]:/tmp# ls
Aegis-<Guid(5A2C30A2-A87D-490A-9281-6765EDAD7CBA)>  disk_io   hls      netio_stat               qtsingleapp-aegisG-46d2-lockfile
cpu_stat                                            dump.rdb  hlskeys  qtsingleapp-aegisG-46d2  vm.log
[email protected]:/tmp# cd hlskeys/
[email protected]:/tmp/hlskeys# ls
S0000_8-156.key  S0000_8-166.key  S0000_8-176.key

同时HLS存放的文件:

播放列表文件:

[email protected]:/tmp/hls# ls
S0000_8-224.ts  S0000_8-227.ts  S0000_8-230.ts  S0000_8-233.ts  S0000_8-236.ts  S0000_8-239.ts  S0000_8-242.ts  test.txt
S0000_8-225.ts  S0000_8-228.ts  S0000_8-231.ts  S0000_8-234.ts  S0000_8-237.ts  S0000_8-240.ts  S0000_8-243.ts
S0000_8-226.ts  S0000_8-229.ts  S0000_8-232.ts  S0000_8-235.ts  S0000_8-238.ts  S0000_8-241.ts  S0000_8.m3u8

加密后的文件列表:

#EXTM3U
#EXT-X-VERSION:3
#EXT-X-MEDIA-SEQUENCE:239
#EXT-X-TARGETDURATION:5
#EXT-X-KEY:METHOD=AES-128,URI="http://sewise.amai8.com/authcheck/accesskeyS0000_8-236.key",IV=0x000000000000000000000000000000EC
#EXTINF:5.013,
S0000_8-239.ts
#EXTINF:5.014,
S0000_8-240.ts
#EXTINF:5.013,
S0000_8-241.ts
#EXTINF:5.013,
S0000_8-242.ts
#EXTINF:5.014,
S0000_8-243.ts
#EXTINF:5.013,
S0000_8-244.ts

hls_path

语法:hls 路径路径
上下文:rtmp,服务器,应用程序
描述:设置HLS播放列表和片段目录。 如果目录不存在,它将被创建。

hls_fragment

语法:hls_fragment 片段时间
上下文:rtmp,服务器,应用程序
描述:设置HLS片段长度。 默认为5秒。

hls_playlist_length

语法:hls_playlist_length  时间
上下文:rtmp,服务器,应用程序
描述:设置HLS播放列表长度。 默认为30秒。

hls_playlist_length 10m;

hls_sync

语法:hls_sync 时间
上下文:rtmp,服务器,应用程序

描述:设置HLS时间戳同步阈值。 默认值为2ms。 此功能可防止在从低分辨率RTMP(1KHz)到高分辨率MPEG-TS(90KHz)转换后出现裂纹噪声。

hls_sync 100ms;

hls_continuous

语法:hls_continuous on | off
上下文:rtmp,服务器,应用程序

描述:打开HLS连续模式。 在这种模式下,HLS序列号从上次停止的地方开始。 老片段被保存。 默认为关闭。

hls_continuous on;

hls_nested

语法:hls_continuous on | off
上下文:rtmp,服务器,应用程序

描述:打开HLS连续模式。 在这种模式下,HLS序列号从上次停止的地方开始。 老片段被保存。 默认为关闭。...

hls_nested on;

hls_base_url

语法:hls_base_url url
上下文:rtmp,服务器,应用程序

描述:设置HLS播放列表项目的基本URL。 当为空时,这些项目没有前缀,并假定与父播放列表位于相同的位置,或者在使用hls_nested时降低一个级别。 此功能适用于主(变式)和从HLS播放列表。 它可以让您下载播放列表并在本地播放,因为它包含对子播放列表或片段的完整引用。 默认为空。

hls_base_url http://myserver.com/hls/;

hls_cleanup

语法:hls_cleanup on | off
上下文:rtmp,服务器,应用程序

描述:切换HLS清理。 默认情况下,该功能处于打开状态。 在这种模式下,nginx缓存管理器进程从HLS目录中删除旧的HLS片段和播放列表。

hls_cleanup off;

hls_fragment_naming

语法:hls_fragment_naming sequential | timestamp | system
上下文:rtmp,服务器,应用程序

描述:设置片段命名模式。

顺序 - 使用递增的整数
timestamp - 使用流时间戳
系统 - 使用系统时间
默认是顺序的。

hls_fragment_naming system;

hls_fragment_naming_granularity

语法:hls_fragment_naming_granularity number
上下文:rtmp,服务器,应用程序

描述:设置hls片段ID的粒度。 如果大于零,更改ids以划分所提供的值。 默认值为零。

#使用系统时间舍入到500ms作为片段名称
hls_fragment_naming 系统;
hls_fragment_naming_granularity 500;

hls_type

语法:hls_type live | event
上下文:rtmp,服务器,应用程序

描述:设置在X-PLAYLIST-TYPE播放列表指令中指定的HLS播放列表类型。 Live HLS流通常从当前活动位置播放,该活动位置是几个片段到播放列表的结尾。 事件HLS流始终从播放列表的开始播放。 在事件模式下,确保播放列表长度足以用于整个事件。 默认是live;

hls_type  event;

hls_keys

语法:hls_keys on | off
上下文:rtmp,服务器,应用程序
描述:启用HLS加密。 AES-128方法用于加密整个HLS片段。 默认关闭。

hls_keys on;

描述:下面是使用HLS加密的示例配置。 此配置要求nginx使用--with-http_ssl_module为https支持构建。

...

http {
    ...
    server {
        listen 443 ssl;
        server_name example.com;

        ssl_certificate /var/ssl/example.com.cert;
        ssl_certificate_key /var/ssl/example.com.key;

        location /keys {
            root /tmp;
        }
    }

    server {
        listen 80;
        server_name example.com;

        location /hls {
            root /tmp;
        }
    }
}

rtmp {
    server {
        listen 1935;

        application myapp {
            live on;

            hls on;
            hls_path /tmp/hls;

            hls_keys on;
            hls_key_path /tmp/keys;
            hls_key_url https://example.com/keys/;
            hls_fragments_per_key 10;
        }
    }
}

hls_key_path

语法:hls_key_path 路径
上下文:rtmp,服务器,应用程序

描述:设置保存自动生成的HLS密钥的目录。 密钥文件具有使用OpenSSL RAND_bytes()例程创建的.key扩展和伪随机16字节内容。 如果目录不存在,它将在运行时创建。 默认情况下,hls_path目录用于密钥文件。 但是记住,你通常应该限制对密钥文件的访问,这些文件与播放列表和片段分开存储时更容易。

hls_key_path / tmp / keys;

hls_key_url

语法:hls_key_url url
上下文:rtmp,服务器,应用程序

描述:设置HLS密钥文件条目的URL。 当为空时,那些项目没有前缀,并且假设键位于与播放列表相同的位置。 默认为空。

hls_key_url https://myserver.com/keys/;
具有上述设置的播放列表条目示例

#EXT-X-KEY:METHOD=AES-128,URI="https://myserver.com/keys/337.key",IV=0x00000000000000000000000000000151

hls_fragments_per_key

语法:hls_fragments_per_key 值
上下文:rtmp,服务器,应用程序

描述:设置用同一个密钥加密的HLS分片数。 零意味着在发布开始时仅创建一个密钥,并且使用此密钥对会话中的所有片段进行加密。 默认值为零。

hls_fragments_per_key 10;

时间: 2024-10-29 14:40:18

Nginx基础知识之————RTMP模块中的中HLS专题(翻译文档)的相关文章

nginx基础知识

参考博客: http://www.2cto.com/os/201212/176520.html http://os.51cto.com/art/201111/304611.htm http://www.cnblogs.com/xiaogangqq123/archive/2011/03/02/1969006.html Nginx.conf学习 #定义Nginx运行的用户和用户组 user www www: #nginx进程数,建议设置为等于CPU总核心数 worker_processes 8; #

jsWindow 对象 Window 对象 Window 对象表示浏览器中打开的窗口。 如果文档包含框架(frame 或 iframe 标签),浏览器会为 HTML 文档创建一个 window 对象,并为每个框架创建一个额外的 window 对象。 注释:没有应用于 window 对象的公开标准,不过所有浏览器都支持该对象。 Window 对象集合 集合 描述 frames[] 返回窗口中所有命

一.JSX简介 JSX就是Javascript和XML结合的一种格式.React发明了JSX,利用HTML语法来创建虚拟DOM.当遇到<,JSX就当HTML解析,遇到{就当JavaScript解析. 如下(JS写法) var child1 = React.createElement('li', null, 'First Text Content'); var child2 = React.createElement('li', null, 'Second Text Content'); var

Spring Cloud Zuul中使用Swagger汇总API接口文档

有很多读者问过这样的一个问题:虽然使用Swagger可以为Spring MVC编写的接口生成了API文档,但是在微服务化之后,这些API文档都离散在各个微服务中,是否有办法将这些接口都整合到一个文档中? 如果您还不了解Spring Cloud Zuul和Swagger,建议优先阅读下面两篇,有一个初步的了解: Spring Cloud构建微服务架构:服务网关(基础) Spring Boot中使用Swagger2构建强大的RESTful API文档 准备工作 上面说了问题的场景是在微服务化之后,所

CAML获取SharePoint文档库中除文件夹外所有文档

方法一: ? 1 2 3 4 <QueryOptions>         <ViewAttributes Scope="Recursive" />     </QueryOptions> </query> 方法二: ? 1 2 3 4 5 <View Scope="RecursiveAll">     <Query>         <Where>...</Where>

利用POI操作不同版本word文档中的图片以及创建word文档

我们都知道要想利用java对office操作最常用的技术就应该是POI了,在这里本人就不多说究竟POI是什么和怎么用了.先说本人遇到的问题,不同于利用POI去向word文档以及excel文档去写入数据和向外导出数据并且保存到数据库中这些类似的操作,由于业务上的需要需要利用POI去读取word中的图片,并且去把图片去保存为一个file文件.查了Apache公司提供的api帮助文档,再网友的一些线索,本人也总结了几中对不同word版本(.doc或者是.docx结尾)对于文件中所含图片的操作方式,希望

利用POI操作不同版本号word文档中的图片以及创建word文档

我们都知道要想利用java对office操作最经常使用的技术就应该是POI了,在这里本人就不多说到底POI是什么和怎么用了. 先说本人遇到的问题,不同于利用POI去向word文档以及excel文档去写入数据和向外导出数据而且保存到数据库中这些类似的操作,因为业务上的须要须要利用POI去读取word中的图片,而且去把图片去保存为一个file文件.查了Apache公司提供的api帮助文档,再网友的一些线索,本人也总结了几中对不同word版本号(.doc或者是.docx结尾)对于文件里所含图片的操作方

(20)ElasticSearch java项目中的根据指定条件删除文档和查询所有文档

1.删除index1中,title包含工厂的文档 @Test public void testQueryDelete() throws IOException, InterruptedException, ExecutionException { //指定集群 Settings settings = Settings.builder().put("cluster.name","my-application").build(); //创建客户端 TransportCl

nginx 基础知识解析

工作架构模型是 nginx做前端反向代理处理请求,后端为lamp(php-fpm也为代理,代理处理动态网页请求,此外我们还可以安装Xcache为php-fpm处理动态网页加速)或者lnmp 基础知识理解 1.代理基础知识 代理:就是客户端请求一个互联网资源时,他没有能力到达真正的服务器,而是通过委托一个能够在互联网上取得各种资源的专业服务器帮他完成它想要请求的资源,并把结果返回给客户端的服务器叫做代理服务器 代理工作原理 分两个阶段,一是客户端请求到代理,代理到服务器取回资源到代理,然后代理服务

Nginx学习之配置RTMP模块搭建推流服务

写在开始 小程序升级实时音视频录制及播放能力,开放 Wi-Fi.NFC(HCE) 等硬件连接功能.同时提供按需加载.自定义组件和更多访问层级等新特性,增强了第三方平台的能力,以满足日趋丰富的业务需求. 为更高效地连接用户与商家,小程序提供了实时音视频录制及播放组件.符合类目要求的小程序自助开通后,可自建或使用云服务,实现单向.双向甚至多向的音视频功能,如在线授课.远程咨询.视频客服,以及多人会议等. 2017-12-26微信小程序推送了这样一条消息,文档,代码也是简单的一笔带过,用户需要自建或使