AVPlayer API同样适用于视频播放,与音频播放的区别仅在于是否提供surfaceId(相当于给视频播放选择一个容器)。鸿蒙官网描述,surfaceId指视频窗口ID,只允许在initialized状态下设置,在视频播放时要指定窗口进行渲染,纯音频播放不用设置。所以首先来获取窗口Id。
通过XComponent创建surfaceId
@Entry
@Component
struct Index {
private context = getContext(this) as common.UIAbilityContext;
private audio = new AudioPlayer();
private surfaceId: string = ''
private xComponentContext: Record<string, () => void> = {}
xComponentController: XComponentController = new XComponentController()
@State message: string = 'Hello Harmony';
build() {
Row() {
Column() {
Row(){
// 视频播放窗口
XComponent({
id: 'xcomponent',
type: XComponentType.SURFACE,
controller: this.xComponentController
})
.onLoad(() => {