nginx+nginx-rtmp-module+ffmpeg搭建流媒体服务器


搭建环境:腾讯云ECS + ubuntu14.04 64位LTS系统

1. 安装pcre

下载pcre-8.21.zip

sudo unzip pcre-8.21.zip -d pcre-8.21  
cd pcre-8.21/  
./configure  
make  
make install  
2. 源码安装nginx
cd  
git clone https://github.com/arut/nginx-rtmp-module.git  
//下载nginx source  
http://nginx.org/download/nginx-1.1.19.tar.gz  
sudo tar zxvf nginx-1.1.19.tar.gz  
cd nginx-1.1.19/  
./configure --add-module=</home/phoenix/nginx-rtmp-module>  
make  
make install  
sudo service nginx stop  //先停止apt-get install的nginx  
sudo /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf  //启动
sudo netstat -tlnp|grep 1935 //检查是否成功监听1395 port
3. 安装ffmpeg
3.1 Ubuntu 12.04升级到14.04
sudo apt-get update  
sudo apt-get install update-manager-core  
sudo do-release-upgrade -d  
只适用于14.04 或更高版本
sudo add-apt-repository ppa:kirillshkrogalev/ffmpeg-next  
sudo apt-get update  
sudo apt-get install ffmpeg  
2种remove ppa命令  
sudo add-apt-repository --remove ppa:kirillshkrogalev/ffmpeg-next  
sudo ls /etc/apt/sources.list.d  
sudo rm -i /etc/apt/sources.list.d/kirillshkrogalev-ffmpeg-next-precise.list
4. ffmpeg推流到nginx

可推送ip摄像机的rtsp直播视频流、视频文件、网络rtsp视频流,本文推网络rtsp视频流测试,ubuntu虚拟机ip 192.168.1.101。

sudo ffmpeg -i rtsp://184.72.239.149/vod/mp4://BigBuckBunny_175k.mov -acodec aac -strict experimental -ar 44100 -ac 2 -b:a 96k -r 25 -b:v 500k -s 640*480 -f flv rtmp://192.168.1.101:1935/myapp/test1  
or sudo ffmpeg -re -i /home/phoenix/1.mp4 -vcodec copy -acodec copy -f flv  rtmp://192.168.1.101:1935/myapp/test1  
上述命令参照[ffmpeg RTMP 参数选项](http://www.tuicool.com/articles/eAfIVv),性能调优还有待修改。  
> VLC上打开网络串流即可播放视频。  
rtmp://192.168.1.101:1935/myapp/test1  
5. hls协议使用http在网页进行观看

关于hls简单介绍:
HTTP Live Streaming(HLS)是苹果公司(Apple Inc.)实现的基于HTTP的流媒体传输协议,可实现流媒体的直播和点播,相对于常见的流媒体直播协议,例如RTMP协议、RTSP协议、MMS协议等,HLS直播最大的不同在于,直播客户端获取到的,并不是一个完整的数据流。HLS协议在服务器端将直播数据流存储为连续的、很短时长的媒体文件(MPEG-TS格式),而客户端则不断的下载并播放这些小文件,因为服务器端总是会将最新的直播数据生成新的小文件,这样客户端只要不停的按顺序播放从服务器获取到的文件,就实现了直播。由此可见,基本上可以认为,HLS是以点播的技术方式来实现直播。由于数据通过HTTP协议传输,所以完全不用考虑防火墙或者代理的问题,而且分段文件的时长很短,客户端可以很快的选择和切换码率,以适应不同带宽条件下的播放。不过HLS的这种技术特点,决定了它的延迟一般总是会高于普通的流媒体直播协议。

在nginx.conf http中添加下面内容

location /hls {    
                types {    
                    application/vnd.apple.mpegurl m3u8;    
                    video/mp2t ts;    
                }    
                root /tmp;    
                add_header Cache-Control no-cache;    
        }
sudo ffmpeg -i rtsp://184.72.239.149/vod/mp4://BigBuckBunny_175k.mov -vcodec copy -acodec aac -ar 44100 -strict -2 -ac 1 -f flv -s 1280x720 -q 10 -f flv rtmp://192.168.1.101:1935/hls/test2  
在vlc、电脑浏览器、手机浏览器中输入网址播放  
http://192.168.1.101/hls/test2.m3u8  
6. rtsp视频测试地址(亲测可用)

1、rtsp://184.72.239.149/vod/mp4://BigBuckBunny_175k.mov
一段动画片
2、rtsp://218.204.223.237:554/live/1/66251FC11353191F/e7ooqwcfbqjoo80j.sdp
拱北口岸珠海过澳门大厅
3、rtsp://218.204.223.237:554/live/1/0547424F573B085C/gsfp90ef4k0a6iap.sdp
好像是个车站吧

7. 参考教程
8. 遇到的问题和思考

apt-get install nginx 和 src 安装的nginx 会有冲突么?怎么处理?
解决:apt-get命令安装的nginx开始会自启动,需要先stop再运行src安装的nginx。

nginx: [emerg] bind() to 0.0.0.0:1935 failed (98: Address already in use)
解决:pkill -9 nginx

安装nginx init 脚本

sudo wget https://raw.github.com/JasonGiedymin/nginx-init-ubuntu/master/nginx -O /etc/init.d/nginx  
sudo chmod +x /etc/init.d/nginx  
sudo update-rc.d nginx defaults  

sudo service nginx start  
sudo service nginx stop
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值