我正在使用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}},但在这种情况下不确定如何使用它。
答案 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事件进行调用。