您的位置:首页 > 运维架构 > Nginx

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

2016-09-06 00:24 716 查看


搭建环境:腾讯云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. 参考教程

搭建nginx rtmp直播服务器,ffmpeg模拟推流

ubuntu14.04安装ffmpeg

ffmpeg RTMP

==nginx搭建流媒体server==

移动流媒体综述

搭建nginx rtmp直播服务器

nginx rtmp

搭建nginx rtmp直播服务器

ngnix开发将rtmp直播流转换成hls直播流

使用Nginx搭建视频直播服务器

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: