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

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好像没有 问题):
在这里插入图片描述

3. nginx配置

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

#新增开始
rtmp {  
    server {  
        listen 1935;  
		
	   #RTMP直播流	
       application myapp {  
             live on;
             #为rtmp引擎设置电大连接数,默认为off
             #max_connections 1024;			 
       }
		
       # HLS直播流		
       application live {  
             live on;  
             hls on;  
             hls_path D:/temp/rtmp/hls/data;
             hls_fragment 5s;             #用来设置每一个块的大小。默认是5秒。只能为整数
             hls_playlist_length 30s;    #设置播放列表的长度,单位是秒
             hls_nested on;              #默认是off。打开后的作用是每条流自己有一个文件夹
             hls_cleanup off;            #不清理ts	, on|off 默认是开着的,是否删除列表中已经没有的媒体块
             #hls_continuous:             #on|off 设置连续模式,是从停止播放的点开始还是直接跳过
			 
       }
	   
        hls on;
        hls_path D:/temp/rtmp/hls;
        hls_fragment 5s;#没有生效
        hls_playlist_length 30s;
        hls_nested on; #默认是off。打开后的作用是每条流自己有一个文件夹
        hls_cleanup off;#不清理ts
	   
    } 
}
#新增end

http server节点下新增以下:

         #修改
         location / {
             root nginx-rtmp-module/test/www;
         }
		#新增
		location /stat {
            rtmp_stat all;
            rtmp_stat_stylesheet stat.xsl;
        }
        location /stat.xsl {
            root nginx-rtmp-module/;
        }
        location /control {
            rtmp_control all;
        }
		
		location /rtmp-publisher {
             root nginx-rtmp-module/test;
        }

		
		#加入hls支持
        location /live {
            types {
                application/vnd.apple.mpegurl m3u8; 
                #或 application/x-mpegURL
                video/mp2t ts;
            }
			
			#root D:/temp/rtmp;
            alias D:/temp/rtmp/hls/data;  #视频流文件目录(自己创建)
            expires -1;
            add_header Cache-Control no-cache;
        }
        #end...

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 -re -i rtmp://58.200.131.2:1935/livetv/hunantv -acodec aac -vcodec libx264 -vprofile baseline  -ar 44100 -ac 1 -f flv  rtmp://127.0.0.1:1935/live/hunantv

执行后生成ts文件
在这里插入图片描述

rtmp播放测试:
rtmp://127.0.0.1:1935/live/hunantv
在这里插入图片描述
手机播放测试:
http://192.168.8.61/live/hunantv/index.m3u8
在这里插入图片描述

(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文件:
在这里插入图片描述
用VLC播放器播放:
http://127.0.0.1/live/show.m3u8
在这里插入图片描述

发布了1 篇原创文章 · 获赞 1 · 访问量 44

猜你喜欢

转载自blog.csdn.net/weixin_38420511/article/details/104584648