HarmonyOS avPlayer设置m3u8的url播放,报错Service Died: mediaserver is died, please create a new playback instance again?

如题:HarmonyOS avPlayer设置m3u8的url播放,报错Service Died: mediaserver is died, please create a new playback instance again?

阅读 602
1 个回答

avPlayer目前不支持m3u8的视频格式播放。由m3u8格式本身是一个视频列别文件,对于非直播的视频源,可以下载并解析此文件夹来获得其中的视频地址并使用mediaPlater控件进行播放,可以使用media.createMediaSourceWithUrl创建流媒体预下载媒体来源实例方法。

import { media } from '@kit.MediaKit';
let headers: Record<string, string> = {"User-Agent" : "User-Agent-Value"};
let mediaSource : media.MediaSource = media.createMediaSourceWithUrl("http://xxx",  headers);

代码实例:

import { media } from '@kit.MediaKit';
import { common } from '@kit.AbilityKit';
import { resourceManager } from '@kit.LocalizationKit';

let context = getContext(this) as common.UIAbilityContext;
let mgr = context.resourceManager;
let fileDescriptor = await mgr.getRawFd("xxx.m3u8");

let fd:string = fileDescriptor.fd.toString();
let offset:string = fileDescriptor.offset.toString();
let length:string = fileDescriptor.length.toString();
let fdUrl:string = "fd://" + fd + "?offset=" + offset + "&size=" + length;

let headers: Record<string, string> = {"User-Agent" : "User-Agent-Value"};
let mediaSource : media.MediaSource = media.createMediaSourceWithUrl(fdUrl,  headers);

let mimeType : media.AVMimeTypes = media.AVMimeTypes.APPLICATION_M3U8;
mediaSource.setMimeType(mimeType);

指南链接:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-media-V5\#mediacreatemediasourcewithurl12