vue video+flv.js,播放视频获取到实时码率

vue video+flv.js,播放视频获取到实时码率
请问播放视频后,如何获取到实时码率,实时码率=每秒文件大小*8/1024
但是每秒文件大小也无法获取到,打印this.flvPlayer.statisticsInfo字段获取信息如下:

img

img

【以下回答由 GPT 生成】

问题解决方案: 首先,在Vue中使用flv.js播放视频需要安装相应的依赖包。可以通过以下命令来安装flv.js和Vue的flv组件:

npm install flv.js
npm install vue-flv-player

在Vue组件中导入flv.js和vue-flv-player组件:

import flvjs from 'flv.js'
import FlvPlayer from 'vue-flv-player'

在导入之后,可以在Vue组件中使用vue-flv-player组件来播放视频。在模板中插入如下代码:

<flv-player ref="player" :volume="0" v-bind:options="{flv: 'yourVideoUrl.flv'}"></flv-player>

接下来,我们需要在Vue实例的钩子函数中初始化flv.js播放器,并在播放器的统计信息中获取实时码率。可以在Vue组件的created钩子函数中添加以下代码:

created() {
  this.$nextTick(() => {
    this.$refs.player.$watch('player', (player) => {
      if (flvjs.isSupported()) {
        const flvPlayer = flvjs.createPlayer({
          type: 'flv',
          url: 'yourVideoUrl.flv'
        });
        flvPlayer.attachMediaElement(player.$el);
        flvPlayer.load();
        flvPlayer.play();

        setInterval(() => {
          const statisticsInfo = flvPlayer.statisticsInfo;
          if (statisticsInfo && statisticsInfo.video && statisticsInfo.speed) {
            const fileSize = statisticsInfo.video.totalBytes;
            const bitrate = fileSize * 8 / 1024;
            console.log(`实时码率:${bitrate} Kbps`);
          }
        }, 1000);
      }
    });
  });
}

在上面的代码中,我们在Vue组件的created钩子函数中使用$watch来监听vue-flv-player组件的player属性,一旦初始化完成,就创建flv.js播放器并进行视频播放和统计信息获取。通过使用setInterval函数,我们每秒钟获取一次统计信息,并计算实时码率。

请注意,上述代码中的yourVideoUrl.flv应该是你要播放的视频的URL。此外,你也可以根据flv.js和vue-flv-player的文档来调整代码以适应特定的需求。

⚠️ 注意:由于无法直接获取每秒文件大小,上述计算得到的实时码率是通过文件的总大小计算的,可能会有一些误差。如果需要更准确地获取每秒文件大小,可以使用其他方法,如服务器端日志分析等。

希望这个解决方案能够帮助到你!如果你有任何问题,请随时提问。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^