首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >VideoJS分辨率切换器在闪存模式下切换码率后不能自动重启

VideoJS分辨率切换器在闪存模式下切换码率后不能自动重启
EN

Stack Overflow用户
提问于 2017-02-21 07:54:50
回答 1查看 3.1K关注 0票数 7

我们正在尝试为video.js播放器提供使用分辨率切换器插件(https://github.com/kmoskwiak/videojs-resolution-switcher)在不同视频比特率之间切换的能力。

这是一个演示页面,其中包含了在flash模式下运行videojs播放器的基本设置:jsbin (点击右上角的'edit in jsbin‘查看实际代码)

该插件在HTML5 (DASH和HLS)流中工作正常,但在闪存模式下失败。播放器将开始播放默认的码率值(在这种情况下是‘1080p’),没有任何问题。当你实际切换码率时,问题就出现了。如果您选择更改为不同的比特率,播放器将停止播放。没有浏览器控制台错误,播放器不会崩溃,只是冻结。看起来播放器甚至没有发送实际的http请求来获取新的视频源。有时插件甚至可以切换源代码,但这种情况发生的次数很少,而且是随机的。换句话说,这种行为是不稳定的,是不可接受的。

插件提供了当分辨率改变时应该触发的resolutionchange事件,但它没有。仅UI更改可见。

我真的很感谢任何关于如何纠正这种行为的帮助或想法!

在这里也包括它:

代码语言:javascript
复制
<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width">
  <title>JS Bin</title>
  <link href="http://vjs.zencdn.net/5.16.0/video-js.css" rel="stylesheet">
  <style>
    .video-js { background-color: black; }
    video { width: 100%; height: 100% }
  </style>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/video.js/5.16.0/video.min.js"></script>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/videojs-contrib-hls/5.1.0/videojs-contrib-hls.min.js"></script>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/dashjs/2.4.0/dash.all.min.js"></script>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/videojs-contrib-dash/2.7.1/videojs-dash.min.js"></script>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/videojs-resolution-switcher/0.4.2/videojs-resolution-switcher.min.js"></script>
</head>
<body>
  <video id="player" class="video-js vjs-default-skin" width="450" height="250"></video>

  <script>
    videojs('player', {
      preload: 'auto',
      autoplay: true,
      techOrder: ["flash"],
      controls: true,
      plugins: {
        videoJsResolutionSwitcher: {
          default: 1080,
          dynamicLabel: true
        }
      }
    }, function(){
      handleReady(this);
    });

    var sources=[
      {src:"rtmp://stagingmedia.livecoding.tv/livecodingtv/1080p_irwanbd?t=FDD4A16B14C34359A8677A339962B60D",label:"HQ",type:"rtmp/mp4",res:1080},
      {src:"rtmp://stagingmedia.livecoding.tv/livecodingtv/720p_irwanbd?t=FDD4A16B14C34359A8677A339962B60D",label:"Medium",type:"rtmp/mp4",res:720},
      {src:"rtmp://stagingmedia.livecoding.tv/livecodingtv/480p_irwanbd?t=FDD4A16B14C34359A8677A339962B60D",label:"Low",type:"rtmp/mp4",res:480}
    ];

    function handleReady(player) {
      window.player = player;
      player.updateSrc(sources);
    }
  </script>
</body>
</html>
EN

回答 1

Stack Overflow用户

发布于 2020-11-15 14:23:50

代码语言:javascript
复制
var player = videojs('video', {
    controls: true,
    muted: true,
    width: 800,
    plugins: {
        videoJsResolutionSwitcher: {
            ui: true,
            default: '< default_res >', // Default resolution [{Number},   'low', 'high'],
            dynamicLabel: false
        }
   }
}, 
function() {
    player.updateSrc([ < sourcetags > ]);
    player.on('resolutionchange', function(){
        player.play();
        console.info('Source changed to %s', player.src());
    })
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42356285

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档