Динамическое изменение размера jwplayer в соответствии с видео ffmpeg

Я использую jwplayer, ffmpeg и crtmpserver для прямой трансляции. Мне было интересно, можно ли динамически изменять размер jwplayer в соответствии с видео, которое транслируется ffmpeg. Например, предположим, что для потоковой передачи видео используется следующая команда 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(), но не знаю, как его использовать в этом случае.


person pkumar    schedule 15.01.2014    source источник
comment
Не по теме: почему flv вместо libx264? Кроме того, вам не нужно использовать одновременно видеофильтр scale и -s.   -  person llogan    schedule 15.01.2014


Ответы (1)


Нашел ответ. Вышеупомянутое может быть выполнено с использованием события 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. Этот URL здесь http://www.longtailvideo.com/support/jw-player/29365/rtmp-dynamic-stream показывает, как создавать видео разного качества для jwplayer. Вышеупомянутая функция resizePlayer() может быть вызвана с использованием других подходящих событий jwplayer, если это необходимо.

person pkumar    schedule 15.01.2014