欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

流媒体服务(一)流媒体服务器搭建 win10+ngnix+rtmp播放rtmp和HLS

程序员文章站 2022-07-07 11:54:36
...

1.资源准备

(1) nginx:
下载地址:http://nginx-win.ecsds.eu/download/
版本:nginx 1.7.11.3 Gryphon.zip
(2) nginx-rtmp-module :
下载地址:https://github.com/arut/nginx-rtmp-module
(3) ffmpg :
下载安装并放入环境变量path(例如将D:\software\ffmpeg\ffmpeg-20200225-36451f9-win64-static\bin追加到path路径)
(4) rtmp和mp4视频文件:
湖南卫视:rtmp://58.200.131.2:1935/livetv/hunantv

2. 软件安装

(1) 解压nginx 和nginx-rtmp-module,并将nginx-rtmp-module解压到nginx 目录下如图(注:nginx目录不要有空格,win7,8好像没有 问题):
流媒体服务(一)流媒体服务器搭建 win10+ngnix+rtmp播放rtmp和HLS

3. nginx配置

在nginx的conf目录下拷贝一份nginx-win.conf并命名为nginx-win-rtmp.conf
并新增以下内容(注意目录D:/temp/rtmp要先建好或换成自己的目录):
新增rtmp

#新增开始
rtmp {  
    server {  
        listen 1935;  
        application myapp {  
            live on;  
        }  
       application live {  
             live on;  
             hls on;  
             hls_path D:/temp/rtmp/hls;
             hls_fragment 1s;
             hls_playlist_length 3s;  
       }
        hls on;
        hls_path D:/temp/rtmp/hls;
        hls_fragment 5s;#没有生效
        hls_playlist_length 30s;
        hls_nested off; #默认是off。打开后的作用是每条流自己有一个文件夹
        hls_cleanup off;#不清理ts   
    } 
}
#新增end

http server节点下新增以下:

#新增开始
       location /stat {
            rtmp_stat all;
            rtmp_stat_stylesheet stat.xsl;
        }
        location /stat.xsl {
            root nginx-rtmp-module/;
        }
        location /control {
            rtmp_control all;
        }
		#加入hls支持
        location /live {
            types {
                application/vnd.apple.mpegurl m3u8; 
                #或 application/x-mpegURL
                video/mp2t ts;
            }
			#root D:/temp/rtmp;
            alias D:/temp/rtmp/hls;  #视频流文件目录(自己创建)
            #expires -1;
            add_header Cache-Control no-cache;
        }

4. nginx启动
进入nginx目录打开命令行或powershell执行:
启动:nginx -c conf\nginx-win-rtmp.conf
停止:nginx -s stop -c conf\nginx-win-rtmp.conf
重载:nginx -s reload -c conf\nginx-win-rtmp.conf
强制结束:taskkill /fi “imagename eq nginx.EXE” /f
5. 示例
(1)将网络rtmp转换为本地rtmp并播放
打开命令行或powershell执行如下命令:

ffmpeg -i rtmp://58.200.131.2:1935/livetv/hunantv -acodec aac -strict experimental -ar 44100 -ac 2 -b:a 96k -r 25 -b:v 500k -s 640*480 -f flv rtmp://127.0.0.1:1935/myapp/hunantv

地址http://127.0.0.1/live/hunantv.m3u8和rtmp://127.0.0.1:1935/myapp/hunantv
都可以用VLC播放(VLC 打开网络 串即可,注意部分视频 可能有声音没有画面或有画面没有 声音,这个跟你ffmpeg命令参数或视频有关)
流媒体服务(一)流媒体服务器搭建 win10+ngnix+rtmp播放rtmp和HLS

(2)将mp4文件转换为本地rtmp并播放

 ffmpeg -re -i test.mp4 -vcodec libx264 -vprofile baseline -acodec libmp3lame -ar 44100 -ac 1 -f flv rtmp://127.0.0.1:1935/live/show

会在路径下自动生成ts文件:
流媒体服务(一)流媒体服务器搭建 win10+ngnix+rtmp播放rtmp和HLS
用VLC播放器播放:
http://127.0.0.1/live/show.m3u8
流媒体服务(一)流媒体服务器搭建 win10+ngnix+rtmp播放rtmp和HLS

相关标签: 流媒体