收藏
回答

VideoDecoder getFrameData 在安卓上视频解码未结束,但是返回 null ?

视频地址 https://cdn2.h5no1.com/static-cdn/cpbz/v.mp4

用 wx.downloadFile 下载一个 21 秒的视频,然后使用 VideoDecoder 解码,在安卓上,总是解码到 16 秒的位置就停住了,getFrameData 返回 null

没有触发 ended 事件

没有触发 stop 事件

触发了一次 bufferchange 事件

在 ios 上正常

Page({
  videoSrc: 'https://cdn2.h5no1.com/static-cdn/cpbz/v.mp4',
  vDec: null,
  onReady() {
    this.vDec = wx.createVideoDecoder();
    console.log('开始下载视频文件');
    wx.downloadFile({
      url: this.videoSrc,
      success: res => {
        console.log('下载视频文件完成');
        this.vDec.start({
          source: res.tempFilePath
        });
      }
    });
    this.vDec.on('start', () => {
      console.log('开始解码视频, 24fps');
      this.timer = setInterval(() => {
        const frame = this.vDec.getFrameData();
        if (frame) {
          console.log('frame', frame); // 到 16 秒的时候 就开始返回 null
        }
      }, 1000 / 24);
    });
    this.vDec.on('ended', () => {
      console.log('解码视频结束 ended');
      clearInterval(this.timer);
    });
    this.vDec.on('stop', () => {
      console.log('stop');
    });
    this.vDec.on('bufferchange', () => {
      console.log('bufferchange');
    });
  }
});
回答关注问题邀请回答
收藏

3 个回答

登录 后发表内容
问题标签