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() {
}
});
目前苹果和鸿蒙还存在很多的兼容性问题
微信小游戏上支持播放视频的同时播放语音,理论上说 这些属于Infra的功能,微信团队应该保持相同的用户体检比较好