nginx rtmp ffmpeg 组合模仿hls直播
前几天老总说搞了一个局域网内的直播,想到了之前提到的rtmp模块,抱着试试看的的心态 开干了
系统环境:
[root@localhost html]# uname -a Linux localhost.localdomain 2.6.18-194.el5 #1 SMP Fri Apr 2 14:58:35 EDT 2010 i686 athlon i386 GNU/Linux [root@localhost html]# getconf LONG_BIT 32
NGINX环境:
1、nginx下载地址:
http://nginx.org/download/
本测试环境系统版本是1.4.7
2、nginx模块rtmp下载地址
https://github.com/arut/nginx-rtmp-module/archive/master.zip
3、多媒体视频处理工具→ffmpeg下载地址
http://ffmpeg.org/releases/ffmpeg-2.6.1.tar.bz2
首先解释一些东西
rtmp:RTMP(Real Time Messaging Protocol)实时消息传送协议是Adobe Systems公司为Flash播放器和服务器之间音频、视频和数据传输 开发的开放协议。
然后nginx的rtmp模块
战斗民族俄罗斯人民开发的一款NGINX的流媒体插件,除了直播发布音视频流之外具备流媒体服务器的常见功能
比如推拉流媒体资源
基于HTTP的FLV/MP4 VOD点播
HLS (HTTP Live Streaming) M3U8的支持
基于http的操作(发布、播放、录制)
可以很好的协同现有的流媒体服务器以及播放器一起工作
在线调用ffmpeg对流媒体进行转码
H264/AAC音视频编码格式的支持
linux/BSD/MAC系统的支持
(来自于网络)
安装步骤、
nginx安装
下载好rtmp模块
wget https://github.com/arut/nginx-rtmp-module/archive/master.zip unzip master.zip wget http://nginx.org/download/nginx-1.4.7.tar.gz tar xvf nginx-1.4.7.tar.gz cd nginx-1.4.7 ./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_flv_module --with-http_stub_status_module --with-http_gzip_static_module --add-module=/usr/local/src/nginx-rtmp-module-master --with-pcre=/usr/local/src/pcre-8.11 make;make install
ffmpeg安装
wget http://ffmpeg.org/releases/ffmpeg-2.6.1.tar.bz2 tar xvf ffmpeg-2.6.1.tar.bz2 cd ffmpeg-2.6.1
在这一个编译的话肯定是会报错的 具体报什么错就是说缺乏东西,需要安装yasm
wget http://www.tortall.net/projects/yasm/releases/yasm-1.2.0.tar.gz tar xvf yasm-1.2.0.tar.gz cd yasm-1.2.0 ./configure make;make install cd ffmpeg-2.6.1 ./configure make; make instal
l
改装的东西都装好了,现在来改改配置文件
nginx的配置文件需要换一换了 nginx rtmp的模块里面有一个nginx的主配置文件
[
root@localhost test]# pwd /usr/local/src/nginx-rtmp-module-master/test [root@localhost test]# ll total 56 -rwxr-xr-x 1 root root 49 Mar 24 03:30 dump.sh -rwxr-xr-x 1 root root 84 Mar 24 03:30 ffstream.sh -rw-r--r-- 1 root root 1245 Mar 24 03:30 nginx.conf -rwxr-xr-x 1 root root 59 Mar 24 03:30 play.sh -rw-r--r-- 1 root root 499 Mar 24 03:30 README.md drwxr-xr-x 2 root root 4096 Mar 24 03:30 rtmp-publisher drwxr-xr-x 4 root root 4096 Mar 24 03:30 www
将上面的主配置文件拷贝到nginx目录就好
nginx主配置文件如下
worker_processes 1; error_log logs/error.log debug; events { worker_connections 1024; } rtmp { server { listen 1936; application myapp { live on; #record keyframes; #record_path /tmp; #record_max_size 128K; #record_interval 30s; #record_suffix .this.is.flv; #on_publish http://localhost:8080/publish; #on_play http://localhost:8080/play; #on_record_done http://localhost:8080/record_done; } } } rtmp { server { listen 1935; chunk_size 4000; #HLS application hls { live on; hls on; hls_path /usr/local/nginx/html/hls; hls_fragment 5s; } } } http { server { listen 8080; location /hls { # Serve HLS fragments types { application/vnd.apple.mpegurl m3u8; video/mp2t ts; } root html; expires -1; } } } http { server { listen 8081; location /stat { rtmp_stat all; rtmp_stat_stylesheet stat.xsl; } location /stat.xsl { root /html/nginx-rtmp-module/; } location /control { rtmp_control all; } #location /publish { # return 201; #} #location /play { # return 202; #} #location /record_done { # return 203; #} #location /rtmp-publisher { # root /html/nginx-rtmp-module/test; # } location / { root /html/nginx-rtmp-module/test/www; } } }
上传一个flv格式的文件到html目录
执行
ffmpeg -re -i sample.flv -vcodec copy -acodec copy -f flv rtmp://192.168.3.105/hls/mystream
然后页面观看地址
http://192.168.3.105:8080/hls/mystream.m3u8
本文出自 “在路上” 博客,请务必保留此出处http://xiaochengxiang.blog.51cto.com/2558908/1629596
原文地址:http://xiaochengxiang.blog.51cto.com/2558908/1629596