收藏
回答

IOS 平台下 VideoDecoder/MediaAudioPlayer 不能正常播放音视频

框架类型 问题类型 API/组件名称 终端类型 微信版本 基础库版本
小程序 Bug createVideoDecoder/createMediaAudioPlayer 微信iOS客户端 8.0.56 3.7.7

https://developers.weixin.qq.com/miniprogram/dev/api/media/video-decoder/wx.createVideoDecoder.html

https://developers.weixin.qq.com/miniprogram/dev/api/media/audio/wx.createMediaAudioPlayer.html

android 平台下可以播放, ios 不能正常播放

备注: 微信小游戏的代码可以正常播放 https://developers.weixin.qq.com/s/SF2duHmb7MjI

''''


use strict';
Page({
  data: {},
  onLoad() {
  },
  onReady() {
    const query = wx.createSelectorQuery();
    query.select("#videoCanvas")
      .node()
      .exec((res) => {
        const canvas = res[0].node;
        const ctx = canvas.getContext("2d");
        const decoder = wx.createVideoDecoder();
        const audio = wx.createMediaAudioPlayer();
        let started = false;
        let imageWidth = 1280;
        let imageHeight = 720;
        decoder.on('start', () => {
          started = true;
        });
        decoder.on('stop', () => {
          console.info('Video decoding stopped'); 
          decoder.seek(0);
        });
        decoder.on('seek', () => {
          console.log('seek');
        });
        decoder.on('bufferchange', (info) => {
          console.log('bufferchange', info);
        });
        decoder.on('ended', () => {
          console.info('Video ended, restarting...');
        });

        const loop = () => {
          if (started) {
            const frameData = decoder.getFrameData();
            if (frameData && frameData.data) {
              const imageData = ctx.createImageData(imageWidth, imageHeight);
              imageData.data.set(new Uint8ClampedArray(frameData.data));
              ctx.putImageData(imageData, 0, 0);
            }
          }
          canvas.requestAnimationFrame(loop);
        };
        (async () => {
          try {
            const decoderResult = await decoder.start({
              source: 'https://baikebcs.bdimg.com/baike-other/big-buck-bunny.mp4',
              mode: 0
            });
            imageWidth = decoderResult.width;
            imageHeight = decoderResult.height;
            console.log('Video decoder started:', decoderResult);
            const audioResult = await audio.start();
            console.log('Audio player started:', audioResult);
            await audio.addAudioSource(decoder);
          } catch (error) {
            console.error('音视频初始化出错:', error);
          }
        })();
        loop();
      });
  },
  onUnload() {
  }
});




最后一次编辑于  02-06
回答关注问题邀请回答
收藏

1 个回答

  • CRMEB
    CRMEB
    02-06

    目前苹果和鸿蒙还存在很多的兼容性问题

    02-06
    有用
    回复 1
登录 后发表内容