OpenHarmony 媒体开发常见问题
OpenHarmony 媒体开发常见问题
媒体开发常见问题
如何申请设备上的媒体读写权限。
适用于:OpenHarmony SDK 3.2.3.5版本,API9 Stage模型
- 在module.json5配置文件中配置媒体读写权限ohos.permission.READ_MEDIA和ohos.permission.WRITE_MEDIA。
示例:
{
"module" : {
"requestPermissions":[
{
"name" : "ohos.permission.READ_MEDIA",
"reason": "$string:reason"
},
{
"name" : "ohos.permission.WRITE_MEDIA",
"reason": "$string:reason"
}
]
}
}
- 这两个权限的授权方式均为user_grant,因此需要调用requestPermissionsFromUser接口,以动态弹窗的方式向用户申请授权。
let permissions: Array<string> = ['ohos.permission.READ_MEDIA','ohos.permission.WRITE_MEDIA']
context.requestPermissionsFromUser(permissions).then((data) => {
console.log("Succeed to request permission from user with data: " + JSON.stringify(data))
}).catch((error) => {
console.log("Failed to request permission from user with error: " + JSON.stringify(error))
})
MP4格式的视频为什么播放不了?
适用于:OpenHarmony SDK 3.2.7.5版本,API9 Stage模型
暂不支持h.265编码格式的MP4视频播放。
调用媒体库getAlbums方法,没有收到返回,也没有捕获到异常是为什么
适用于:OpenHarmony SDK 3.2.5.3版本,API9 Stage模型
getAlbums方法需要权限:ohos.permission.READ_MEDIA,从OpenHarmony权限定义列表查询知道ohos.permission.READ_MEDIA权限是需要用户授权。
- 在module.json5中配置权限:
"requestPermissions": [
{
"name": "ohos.permission.READ_MEDIA"
}
]
- 在MainAbility.ts -> onWindowStageCreate页面加载前需要增加用户授权代码:
private requestPermissions() {
let permissionList: Array<string> = [
"ohos.permission.READ_MEDIA"
];
this.context.requestPermissionsFromUser(permissionList)
.then((data) => {
console.info(`request permission data result = ${data.authResults}`)
})
.catch((err) => {
console.error(`fail to request permission error:${err}`)
})
}
OpenHarmony媒体库的物理路径是什么
适用于:OpenHarmony SDK 3.2.5.5版本,API9 Stage模型
/storage/media/100/local/files/Pictures
/storage/media/100/local/files/Audios
/storage/media/100/local/files/Videos
/storage/media/100/local/files/Camera
/storage/media/100/local/files/Documents
/storage/media/100/local/files/Download
为什么视频创建至十几个时新创建的视频无法播放甚至崩溃?
适用于:OpenHarmony SDK 3.2.7.5版本,API9 Stage模型
当前限制最多创建13个媒体播放实例。
在Stage模型下调用midaLibrary.getMediaLibrary()接口,IDE报错
适用于:OpenHarmony SDK 3.25.5版本,API9 Stage模型
Stage模型下,获取媒体库实例应该调用mediaLibrary.getMediaLibrary(context: Context)。
调用midaLibrary.getFileAssets()接口返回的内容如何排序
适用于:OpenHarmony SDK 3.2.5.5版本,API9 Stage模型
通过MediaFetchOptions对象参数里面的order属性进行排序。
openharmony媒体播放失败<406 no buffer>
适用于:OpenHarmony SDK 3.2.5.5版本,API9 Stage模型
V900单板未适配HDI驱动, 需要厂商进行适配。
媒体库各公共路径支持的文件格式
适用于:OpenHarmony SDK 3.2.5.5版本,API9 Stage模型
如何解决多次使用媒体库FetchFileResult接口后应用崩溃
适用于:OpenHarmony SDK 3.2.5.5版本,API9 Stage模型
在FetchFileResult对象每次调用完,通过FetchFileResult.close()方法,释放该对象并使其失效。如果不释放将会内存泄露,导致应用崩溃。
有可以将视频音量与系统音量区分开,单独调节视频音量的接口
适用于:OpenHarmony SDK 3.2.5.7版本,API9 Stage模型
player的setvolume就是只调播的这个流的,系统音量是AudioManager里调的,目前不打算对三方开放了。
在OpenHarmony媒体开发中,常见问题包括:
- 音视频同步问题:确保音视频帧时间戳一致,使用系统提供的同步机制。
- 编解码兼容性:使用OpenHarmony支持的编解码器,如H.264、AAC,确保设备兼容。
- 性能优化:合理使用硬件加速,避免过度占用CPU和内存。
- 媒体文件格式支持:确认OpenHarmony支持的媒体格式,如MP4、MP3等。
- 权限管理:确保应用具备访问媒体文件的权限,如读取存储、录音等。
- API使用:熟悉OpenHarmony媒体API,如
MediaPlayer
、MediaRecorder
,避免误用。 - 调试与日志:利用OpenHarmony的调试工具和日志系统,快速定位问题。