0

我正在使用 jwplayer、ffmpeg 和 crtmpserver 进行直播。我想知道是否可以根据 ffmpeg 流式传输的视频动态调整 jwplayer 的大小。例如,假设以下 ffmpeg 命令用于流式传输视频:

ffmpeg -re -i 'myVideo.mp4' -vf scale=30:30 -vcodec flv -acodec copy -s 30x30 -f flv rtmp://localhost/flvplayback/livestream

Jwplayer 端代码:

<script type="text/javascript">
    jwplayer("myElement").setup({
      playlist: [{
        image: "/uploads/myPoster.jpg",
        sources: [{
            file: "/uploads/myManifest.smil",
            type: "rtmp"
          },{
          file: "/uploads/myVideo.mp4"
           }]
      }],
      primary: "flash",
      listbar: {
          position: 'right',
          size: 100
      },
      stretching: "exactfit"
});

现在,由于 ffmpeg 正在以 -s 为 30x30 流式传输视频,因此视频太模糊了。那么,是否可以调整 jwplayer 的大小以适应视频?在这种情况下,应该减小 jwplayer 的大小。我尝试使用jwplayer.resize()基于jwplayer().getCurrentQuality()但不确定在这种情况下如何使用它。

4

1 回答 1

0

找到了答案。以上可以使用jwplayer().onQualityChange如下事件来完成:

    jwplayer().onQualityChange( function(event){
       resizePlayer();
    });

    function resizePlayer(){
      if (jwplayer().getCurrentQuality() == 0)
      {
        jwplayer().resize(1024, 720);

      } 
      if (jwplayer().getCurrentQuality() == 1)
      {
        jwplayer().resize(640, 360);
      } 
      if (jwplayer().getCurrentQuality() == 2)
      {
        jwplayer().resize(320,180);
      } 
    } 

上述事件在jwplayer的质量发生变化时触发。此网址http://www.longtailvideo.com/support/jw-player/29365/rtmp-dynamic-stream展示了如何为 jwplayer 创建不同质量的视频。上述函数resizePlayer()也可以根据需要使用其他合适的 jwplayer 事件来调用。

于 2014-01-15T11:26:40.150 回答