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