首页 文章

单个RTMP,可通过免费的媒体服务器和控制面板进行自适应流媒体传输

提问于
浏览
0

这就是我现在正在做的事情:

我正在发送带有teradek vidiu的直播电视 Channels ,该 Channels 通过RTMP将视频发送到带有灵活流媒体服务器的AWS EC2实例,几个月前配置了wmspanel(在试用期内) . 灵活的服务器转码rtmp并给我一个HLS(m3u8),我在网页上玩peer5(jwplayer) . 这样做的问题是,直播视频只是高清视频,低速连接的客户端无法看到视频,有时甚至是断断续续的 .

我想要的是:

我想要一个适应性流,每个人都可以连接,低速看低比特率视频,高速看高清视频 . 我知道我可以用wowza等服务器做到这一点,问题是价格,我想要一个带免费控制面板的免费服务器 . 灵活的服务器是免费的,但wmspanel不是,现在我无法改变或做任何灵活的事情,因为wmspanel的试用期结束了!

请在这件事上给予我帮助!

2 回答

  • 0

    您要问的所有内容都可以通过nginxnginx-rtmp模块和ffmpeg来完成,这些都是免费软件 . 我有一个类似于你的设置(BlackMagic H264 Pro而不是Teradek,但其他方面相同)传输几个电视 Channels .

    唯一的问题是你需要自己使用rtmp模块编译nginx,如果你需要某种控制面板,你必须自己编写 .

    我的设置如下:

    1.-连接到实时切换器的本地服务器上的BM H264 Pro使用Fedora 23将HD流发送到EC2实例 .

    2.- Nginx-rtmp接受输入并调用ffmpeg创建六个不同的HLS直播流(180p,240p,360p,480p,720p,1080p),然后通过CloudFront CDN提供服务以确保速度 .

    它工作得很好,我没有任何问题,CloudFront直接从EC2实例中获取流,速度惊人 . 你需要一个相当强大的实例(我使用m4.4xlarge)进行并行编码 .

    使用PHP(或任何其他语言,我只是喜欢PHP),你可以有一个控制面板和其他细节 . 例如,我使用此设置跟踪所有视图,暂停,执行一些geoIP和其他指标 .

    -------- 8月04日更新--------

    这是我的nginx配置文件:

    application live-video {
      access_log              /webdata/logs/access/publish.log;
      live                    on;
      record                  all;
      wait_key                on;
      record_path             /webdata/batch/video;
      record_unique           on;
      drop_idle_publisher     2s;
      interleave              on;
      allow play              all;
      allow publish           all;
      notify_method           get;
      exec_push               /usr/bin/ffmpeg -y -re -i rtmp://localhost:1935/live-video/$name -keyint_min 30 -x264opts "keyint=30:min-keyint=30:no-scenecut" -g 30 -r:v 30 -s 320x180 -b:v 256k -c:v libx264 -preset ultrafast -pix_fmt yuv420p -profile:v baseline -level 3.0 -c:a libfaac -ac 1 -ar 48000 -b:a 96k -f flv rtmp://localhost:1935/stream-video/240p -keyint_min 30 -x264opts "keyint=30:min-keyint=30:no-scenecut" -g 30 -r:v 30 -s 640x360 -b:v 512k -c:v libx264 -preset ultrafast -pix_fmt yuv420p -profile:v baseline -level 3.0 -c:a libfaac -ac 1 -ar 48000 -b:a 96k -f flv rtmp://localhost:1935/stream-video/360p -keyint_min 30 -x264opts "keyint=30:min-keyint=30:no-scenecut" -g 30 -r:v 30 -s 854x480 -b:v 1024k -c:v libx264 -preset ultrafast -pix_fmt yuv420p -profile:v baseline -level 3.0 -c:a libfaac -ac 1 -ar 48000 -b:a 96k -f flv rtmp://localhost:1935/stream-video/480p -c:a libfaac -ac 1 -ar 48000 -b:a 64k -f flv rtmp://localhost:1935/stream-video/aacp;
      access_log              off;
    }
    
    application stream-video {
      live                    on;
      access_log              /webdata/logs/access/stream-video.log;
      hls                     on;
      hls_fragment            10s;
      hls_playlist_length     5m;
      hls_path                /webdata/html/live/video;
    }
    

    直播流发布到rtmp:// server:1935 / live-video / stream?token = TOK;这将ffmpeg用于实时转码为四种质量并将其发布到“流视频”应用程序 . 因此,您发布到“直播视频”,您的用户会观看“视频流” .

  • 1

    请注意,Nimble Streamer现在具有Transcoder附加组件来完成所描述的任务:https://wmspanel.com/transcoder

相关问题