根据ffmpeg视频动态调整jwplayer的大小

时间:2014-01-15 10:34:31

标签: video ffmpeg jwplayer6

我正在使用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()的{​​{1}},但在这种情况下不确定如何使用它。

1 个答案:

答案 0 :(得分: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事件进行调用。