基于nginx-rtmp实现电视回看业务

  • 阿里云  >  教程中心   >  android教程  >  基于nginx-rtmp实现电视回看业务  
  • 基于nginx-rtmp实现电视回看业务
  • 发布时间:2018-01-18 来源:网络 上传者:用户

    关键字: 基于 实现 业务 电视 nginx rtmp

    发表文章
  • 摘要:软硬件环境ubuntu16.0464bitAndroidStudio2.2.3OTTBOxwithandroid5.1.1nginx1.11.3nginx-rtmp-module简介电视回看是数字电视领域的另一项基础功能,它能提供一定时长的电视回放,可以实现像点播业务中的暂停,快进,快退等功能,一般的运营商都会提供回看的服务.本文讲述如何基于nginx-rtmp来实现电视回看.原理电视回看的核心是节目的录制.你可以选择与直播同步录制或者指定时间段录制,录制结束后生成节目资源的

  • 软硬件环境 
    ubuntu 16.04 64bit 
    Android Studio 2.2.3 
    OTT BOx with android 5.1.1 
    nginx 1.11.3 
    nginx-rtmp-module 
    简介 

    电视回看是数字电视领域的另一项基础功能,它能提供一定时长的电视回放,可以实现像点播业务中的暂停,快进,快退等功能,一般的运营商都会提供回看的服务.本文讲述如何基于nginx-rtmp来实现电视回看.


    原理 

    电视回看的核心是节目的录制.你可以选择与直播同步录制或者指定时间段录制,录制结束后生成节目资源的播放url,客户端拿到url进行播放,播放的过程和点播一样.


    实践 
    nginx-rtmp配置文件 

    先来看看配置文件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; 




    # http 
    http { 
    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文件


    基于nginx-rtmp实现电视回看业务 
    nginx_rtmp_record 
    客户端播放 

    播放需要的是url,把录制的文件名和主机nginx访问目录拼接一下,很简单,这里的话就是http://10.10.10.52:8081/record/-1483066808-2016-12-30-11_00_08.flv


    参考文献 
    https://github.com/arut/nginx-rtmp-module/wiki/Control-module 

你可能感兴趣的:(HLS)