2014-01-15 2 views
0

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

+0

Несвязанные: почему 'flv' вместо' libx264'? Кроме того, вам не нужно использовать фильтр «scale» и «-s». – LordNeckbeard

ответ

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

Смежные вопросы