编译m3u8-segmenter
从https://github.com/johnf/m3u8-segmenter下载m3u8-segmenter,
执行:cd m3u8-segmenter
执行:gcc -Wall -g m3u8-segmenter.c -o segmenter -lavformat -lavcodec -lavutil -I/usr/local/ffmpeg/include -L/usr/local/ffmpeg/lib
执行:cp segmenter /usr/bin/
测试:segmenter -i test.ts -n 30 -p sample_test -m stream-test.m3u8 -u ./
i表示输入文件,n表示切割30个,p表示切割文件的前缀。m表示生成的m3u8文件名,u表示这些切割后的文件处于web server的哪个目录下。
ffmpeg切片
切本地文件命令:ffmpeg -i test.ts -c copy -map 0 -f segment -segment_list playlist.m3u8 -segment_time 10 output%03d.ts
切网络地址命令:ffmpeg -i rtmp://192.168.42.128/myapp/test1 -c copy -map 0 -f segment -segment_list playlist.m3u8 -segment_time 10 output%03d.ts
fedora搭建nginx
安装PCRE,ZLIB,OPENSSL库,参见http://blog.csdn.net/evsqiezi/article/details/40146777。
nginx-rtmp-module
nginx-rtmp-module一款NGINX的流媒体插件,除了直播发布音视频流之外具备流媒体服务器的常见功能
•比如推拉流媒体资源
•基于HTTP的FLV/MP4 VOD点播
•HLS (HTTP Live Streaming) M3U8的支持
•基于http的操作(发布、播放、录制)
•可以很好的协同现有的流媒体服务器以及播放器一起工作
•在线调用ffmpeg对流媒体进行转码
•H264/AAC音视频编码格式的支持
•linux/BSD/MAC系统的支持
从https://github.com/arut/nginx-rtmp-module下载nginx-rtmp-module,并解压,
编译nginx如下:
# ./configure --prefix=/usr/local/nginx --with-openssl=/home/zf/thirdpart/openssl-1.0.0t --with-zlib=/home/zhangfan/thirdpart/zlib-1.2.8 --add-module=/home/code/nginx-rtmp-module-master,
# make && make install
打开Nginx的配置文件nginx.conf进行配置,
首先在里面加入rtmp的配置
rtmp {
server {
listen 1935;
application myapp {
live on;
}
application hls {
live on;
hls on;
hls_path /tmp/hls; //此为linux下的绝对路径。
hls_fragment 2s;
hls_playlist_length 6s;
}
}
}
然后,针对hls,还需要在http里面增加一个location配置
location /hls {
types {
application/vnd.apple.mpegurl m3u8;
video/mp2t ts;
}
root /tmp;
add_header Cache-Control no-cache;
}
这是一个最简单,最基础的配置, rtmp监听1935端口,如果是hls的话用hls on开启hls,并且为hls设置一个临时文件目录hls_path /tmp/hls,其它更高级的配置可以参看nginx-rtmp-module的readme。
然后执行如下:
# cd /user/local/nginx/sbin
# ./nginx
到此,nginx已在后台运行,在客户端打开浏览器,输入 http://IP(如 http://172.16.200.60),即可看到nginx的欢迎页面。通过netstat -ltn命令可以看到增加了一个1935端口的监听.80是nginx默认的http监听端口。
测试RTMP点播
用ffmpeg向服务器推流ffmpeg -re -i source.flv -vcodec copy -acodec copy -f flv -y rtmp://192.168.1.110:1935/myapp/test,
点播地址: rtmp://192.168.1.110:1935/myapp/test。
测试HLS点播
ffmpeg转码
ffmpeg -i hk.ts -vcodec h264 -s 640x480 -bf 0 -r 25 -g 25 -acodec aac -ar 44100 hk.mp4
用ffmpeg向服务器推流
ffmpeg -re -i killer.mp4 -vcodec copy -acodec copy -f flv -y rtmp://192.168.1.110:1935/hls/test
ffmpeg -re -i rtmp://live.hkstv.hk.lxdns.com/live/hks -vcodec copy -acodec copy -f flv -y rtmp://10.80.3.17:1935/hls/test
点播地址: http://192.168.1.110/hls/test.m3u8。
常用命令
重启
./nginx -s reload
关闭
查询nginx主进程号
ps -ef | grep nginx
从容停止 kill -QUIT 主进程号
快速停止 kill -TERM 主进程号
强制停止 kill -9 nginx