完整/usr/local/nginx/conf/nginx.conf里的rtmp模块的配置如下:
#RTMP服务rtmp {server { listen 8888;application live {live on;#开启实时record all; record_unique on; record_path "./video";#视频缓存的路径 record_suffix -%Y-%m-%d-%H_%M_%S.flv; }}}配置之后执行命令nginx -s reload重启服务器即可 。
2.10 rtmp直播流转为hls直播流什么是HLS直播流?
HLS 全称是 HTTP Live Streaming , 是一个由 Apple 公司提出的基于 HTTP 的媒体流传输协议 , 用于实时音视频流的传输 。目前HLS协议被广泛的应用于视频点播和直播领域 。原理介绍HLS 跟 DASH 协议的原理非常类似 。通过将整条流切割成一个小的可以通过 HTTP 下载的媒体文件 , 然后提供一个配套的媒体列表文件 , 提供给客户端 , 让客户端顺序地拉取这些媒体文件播放 , 来实现看上去是在播放一条流的效果 。由于传输层协议只需要标准的 HTTP 协议 , HLS 可以方便的透过防火墙或者代理服务器 , 而且可以很方便的利用 CDN 进行分发加速 , 并且客户端实现起来也很方便 。HLS 把整个流分成一个个小的基于 HTTP 的文件来下载 , 每次只下载一些 。HLS 协议由三部分组成:HTTP、M3U8、TS 。这三部分中 , HTTP 是传输协议 , M3U8 是索引文件 , TS 是音视频的媒体信息 。HLS协议编码格式要求:
视频的编码格式:H264音频的编码格式:AAC、MP3、AC-3视频的封装格式:ts保存 ts 索引的 m3u8 文件配置/usr/local/nginx/conf/nginx.conf将RTMP流转为HLS流 。
在http模块的server配置里增加新的配置:
location /live_hls{types {#m3u8 type设置application/vnd.apple.mpegurl m3u8;#ts分片文件设置video/mp2t ts;}#指向访问m3u8文件目录alias ./m3u8File; #和rtmp模块里的hls_path设置路径一样add_header Cache-Control no-cache; #禁止缓存}在rtmp模块的server配置里增加新的配置:
hls on;#开启hlshls_path ./m3u8File;#hls的ts切片存放路径 (这是个目录 , 会自动创建的)hls_fragment 2s; #本地切片长度hls_playlist_length 6s;#HLS播放列表长度/usr/local/nginx/conf/nginx.conf文件的完整的配置如下:
worker_processes1;#Nginx进程数 , 建议设置为等于CPU总核数events { worker_connections1024;#工作模式与连接数上限}rtmp_auto_push on;#RTMP服务rtmp {server {listen 8888;application live {live on;#开启实时record all; record_unique on; record_path "./video";#视频缓存的路径 record_suffix -%Y-%m-%d-%H_%M_%S.flv; hls on;#开启hls hls_path ./m3u8File;#hls的ts切片存放路径 hls_fragment 2s; #本地切片长度 hls_playlist_length 6s;#HLS播放列表长度 }}}#HTTP服务http {includemime.types; default_typeapplication/octet-stream; sendfileon; keepalive_timeout65;server {listen8099; server_namelocalhost;location / {roothtml; indexindex.html index.htm;}location /live_hls{ types{#m3u8 type设置application/vnd.apple.mpegurl m3u8;#ts分片文件设置video/mp2t ts;}#指向访问m3u8文件目录alias ./m3u8File;add_header Cache-Control no-cache; #禁止缓存}location /control{ rtmp_control all;}location /stat{ rtmp_stat all;rtmp_stat_stylesheet stat.xsl;}location /stat.xsl{ root ./nginx-rtmp-module-master;} # redirect server error pages to the static page /50x.html # error_page500 502 503 504/50x.html;location = /50x.html {roothtml;}}}配置之后重启服务器即可 。
按照前面的配置 , RTMP推流地址和HTTP访问地址如下:
RTMP推流和拉流地址: rtmp://127.0.0.1:8888/live/video01那么对应的HTTP的访问地址:http://127.0.0.1:8099/live_hls/video01.m3u8说明: 转为HLS流之后 , 如果浏览器支持HLS流就可以直接输入地址播放 。一般手机浏览器都支持的 。比如:苹果手机的自带浏览器 , QQ浏览器等浏览器都支持直接播放HLS流 。PC机的谷歌浏览器默认是不支持的 。
经验总结扩展阅读
- 从源码入手探究一个因useImperativeHandle引起的Bug
- 如何从身份证号中提取年龄
- 如何把螃蟹杀掉(如何将螃蟹从洞里赶出来)
- 2023年9月26日是举办成人仪式的黄道吉日吗 2023年9月26日举办成人仪式行吗
- 2023年9月26日开学典礼行吗 2023年9月26日开学典礼好吗
- 2023年9月26日拜师学艺好吗 2023年9月26日拜师学艺黄道吉日
- 2023年9月26日是清扫房屋吉日吗 2023年9月26日清扫房屋黄道吉日
- 2023年9月26日堵蚂蚁洞黄道吉日 2023年9月26日适合堵蚂蚁洞吗
- 2023年9月26日是堵蚁穴吉日吗 2023年9月26日适合堵蚁穴吗
- 2023年9月26日剪头发黄道吉日 2023年9月26日是剪头发的黄道吉日吗