harmony 鸿蒙媒体开发常见问题

  • 2022-11-09
  • 浏览 (644)

媒体开发常见问题

如何设置前置拍照

适用于:OpenHarmony SDK 3.2.3.5版本,API9 Stage模型

  1. 设置相机位置camera.CameraPosition.CAMERA_POSITION_FRONT

  2. 根据相机位置和类型创建CameraInput实例

参考文档:相机管理

示例:

//默认设置后置相机,通过设置isFrontCamera来切换相机
let cameraId
let cameraInput
for(let cameraIndex = 0; cameraIndex < this.cameraArray.length; cameraIndex++) {
   let faceType = this.cameraArray[cameraIndex].cameraPosition
   switch(faceType) {
  case camera.CameraPosition.CAMERA_POSITION_FRONT://前置相机
    if(this.isFrontCamera){
   cameraId = this.cameraArray[cameraIndex].cameraId
    }
	   break
	 case camera.CameraPosition.CAMERA_POSITION_BACK://后置相机
	   if(!this.isFrontCamera){
		 cameraId = this.cameraArray[cameraIndex].cameraId
	   }
	   break
	 case camera.CameraPosition.CAMERA_POSITION_UNSPECIFIED:
	 default:
	   break
   }
}
cameraInput = await this.cameraManager.createCameraInput(cameraId)

如何进行图片剪切

适用于:OpenHarmony 3.2.5.6版本,API9 Stage模型

  1. 通过传入的uri创建图片源实例ImageSource对象。
   let path = this.context.getApplicationContext().fileDirs + "test.jpg";
   const imageSourceApi = image.createImageSource(path);
  1. 设置解码参数,通过图片解码获取PixelMap图像对象,解码过程中同时支持图像处理操作。

    • 设置desiredSize支持按尺寸缩放,如果设置为全0,则不进行缩放。
    • 设置desiredRegion支持按矩形区域裁剪,如果设置为全0,则不进行裁剪。
    • 设置rotateDegrees支持旋转角度,以图像中心点顺时针旋转。
      const decodingOptions = {
        desiredSize: {
        height:0,
        width:0
        },
        //按矩形区域裁剪
        desiredRegion: {
        size: {
         height:100,
         width:100
        },
        x:0,
        y:0
        },
        //旋转90度
        rotate:90
      }
      imageSourceApi.createPixelMap(decodingOptions).then(pixelMap => {
        this.handlePixelMap(pixelMap)
      })
    
  2. 解码完成获取到PixelMap对象后,可以进行后续处理,比如渲染显示等。

如何申请设备上的媒体读写权限

适用于:OpenHarmonySDK 3.2.5.5版本,API9 Stage模型

  1. 在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"
         }
       ]
     }
   }
  1. 这两个权限的授权方式均为user_grant,因此需要调用requestPermissionsFromUser接口,以动态弹窗的方式向用户申请授权。
   import abilityAccessCtrl from '@ohos.abilityAccessCtrl.d.ts';
   
   let permissions: Array<string> = ['ohos.permission.READ_MEDIA','ohos.permission.WRITE_MEDIA']
   let atManager = abilityAccessCtrl.createAtManager();
   // context为调用方UIAbility的UIAbilityContext
   atManager.requestPermissionsFromUser(context, 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格式的视频为什么播放不了

适用于:OpenHarmonySDK 3.2.7.5版本,API9 Stage模型

暂不支持h.265编码格式的MP4视频播放。

为什么视频创建至十几个时新创建的视频无法播放甚至崩溃

适用于:OpenHarmonySDK 3.2.7.5版本,API9 Stage模型

当前限制最多创建13个媒体播放实例。

你可能感兴趣的鸿蒙文章

harmony 鸿蒙常见问题

harmony 鸿蒙Ability框架开发常见问题

harmony 鸿蒙应用程序包管理开发常见问题

harmony 鸿蒙网络与连接开发常见问题

harmony 鸿蒙数据管理开发常见问题

harmony 鸿蒙开发板使用常见问题

harmony 鸿蒙设备管理开发常见问题

harmony 鸿蒙DFX开发常见问题

harmony 鸿蒙公共事件与通知开发常见问题

harmony 鸿蒙文件管理开发常见问题

0  赞