本文共 2863 字,大约阅读时间需要 9 分钟。
电视回看是数字电视领域的另一项基础功能,它能提供一定时长的电视回放,可以实现像点播业务中的暂停,快进,快退等功能,一般的运营商都会提供回看的服务.本文讲述如何基于nginx-rtmp来实现电视回看.
电视回看的核心是节目的录制.你可以选择与直播同步录制或者指定时间段录制,录制结束后生成节目资源的播放url,客户端拿到url进行播放,播放的过程和点播一样.
先来看看配置文件nginx.conf
#user nobody;worker_processes auto;rtmp_auto_push on;error_log logs/error.log debug;#error_log logs/error.log notice;#error_log logs/error.log info;events { worker_connections 1024;}rtmp { server { listen 1935; chunk_size 4000; # HLS application hls { live on; hls on; hls_path /opt/www/live; hls_continuous on; hls_sync 100ms; hls_nested on; wait_key on; hls_playlist_length 5m; hls_cleanup on; hls_fragment 10s; # hls_keys on; # hls_key_path /opt/www/keys; # hls_key_url http://10.10.10.79:8081/keys; # hls_fragments_per_key 10; recorder all { record all manual; record_suffix -%Y-%m-%d-%H_%M_%S.flv; record_unique on; record_path /opt/www/record; } } }}# httphttp { server { listen 8081; location / { root /opt/www/; } # This URL provides RTMP statistics in XML location /stat { rtmp_stat all; rtmp_stat_stylesheet stat.xsl; } location /stat.xsl { root /home/djstava/Workshop/Web/nginx-rtmp-module/; } location /control { rtmp_control all; } location /hls { types { application/vnd.apple.mpegurl m3u8; video/mp2t ts; } root /opt/www/; add_header Cache-Control no-cache; } location /dash { root /opt/www/; add_header Cache-Control no-cache; } }}
主要关注下rtmp标签下的recorder和http标签下的control,录制的节目保存在/opt/www/record,/opt/www是nginx的根目录,便于http播放.
利用ffmpeg推送本地文件到服务器模拟直播
ffmpeg -re -i test.mp4 -vcodec copy -acodec copy -y -f flv rtmp://10.10.10.52/hls/live
开始录制
curl "http://10.10.10.52:8081/control/record/start?app=hls&name=live&rec=all"
结束录制
curl "http://10.10.10.52:8081/control/record/stop?app=hls&name=live&rec=all"
录制完成后会在/opt/www/record目录下生成相应的flv文件
播放需要的是url,把录制的文件名和主机nginx访问目录拼接一下,很简单,这里的话就是http://10.10.10.52:8081/record/-1483066808-2016-12-30-11_00_08.flv
转载地址:http://bnzoi.baihongyu.com/