• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# 媒体开发常见问题
2
3## 如何设置前置拍照
4
5适用于:OpenHarmony SDK 3.2.3.5版本,API9 Stage模型
6
71. 设置相机位置camera.CameraPosition.CAMERA_POSITION_FRONT
8
92. 根据相机位置和类型创建CameraInput实例
10
11参考文档:[相机管理](../reference/apis/js-apis-camera.md)
12
13示例:
14
15```
16//默认设置后置相机,通过设置isFrontCamera来切换相机
17let cameraId
18let cameraInput
19for(let cameraIndex = 0; cameraIndex < this.cameraArray.length; cameraIndex++) {
20   let faceType = this.cameraArray[cameraIndex].cameraPosition
21   switch(faceType) {
22  case camera.CameraPosition.CAMERA_POSITION_FRONT://前置相机
23    if(this.isFrontCamera){
24   cameraId = this.cameraArray[cameraIndex].cameraId
25    }
26	   break
27	 case camera.CameraPosition.CAMERA_POSITION_BACK://后置相机
28	   if(!this.isFrontCamera){
29		 cameraId = this.cameraArray[cameraIndex].cameraId
30	   }
31	   break
32	 case camera.CameraPosition.CAMERA_POSITION_UNSPECIFIED:
33	 default:
34	   break
35   }
36}
37cameraInput = await this.cameraManager.createCameraInput(cameraId)
38```
39
40## 如何进行图片剪切
41
42适用于:OpenHarmony 3.2.5.6版本,API9 Stage模型
43
441. **通过传入的uri创建图片源实例ImageSource对象。**
45
46   ```
47   let path = this.context.getApplicationContext().fileDirs + "test.jpg";
48   const imageSourceApi = image.createImageSource(path);
49   ```
50
512. **设置解码参数,通过图片解码获取PixelMap图像对象,解码过程中同时支持图像处理操作。**
52   - 设置desiredSize支持按尺寸缩放,如果设置为全0,则不进行缩放。
53   - 设置desiredRegion支持按矩形区域裁剪,如果设置为全0,则不进行裁剪。
54   - 设置rotateDegrees支持旋转角度,以图像中心点顺时针旋转。
55
56      ```
57      const decodingOptions = {
58        desiredSize: {
59        height:0,
60        width:0
61        },
62        //按矩形区域裁剪
63        desiredRegion: {
64        size: {
65         height:100,
66         width:100
67        },
68        x:0,
69        y:0
70        },
71        //旋转90度
72        rotate:90
73      }
74      imageSourceApi.createPixelMap(decodingOptions).then(pixelMap => {
75        this.handlePixelMap(pixelMap)
76      })
77      ```
78
793. 解码完成获取到PixelMap对象后,可以进行后续处理,比如渲染显示等。
80
81## 如何申请设备上的媒体读写权限
82
83适用于:OpenHarmonySDK 3.2.5.5版本,API9 Stage模型
84
851. 在module.json5配置文件中配置媒体读写权限ohos.permission.READ_MEDIAohos.permission.WRITE_MEDIA86   示例:
87
88
89   ```
90   {
91     "module" : {
92       "requestPermissions":[
93         {
94           "name" : "ohos.permission.READ_MEDIA",
95           "reason": "$string:reason"
96         },
97         {
98           "name" : "ohos.permission.WRITE_MEDIA",
99           "reason": "$string:reason"
100         }
101       ]
102     }
103   }
104   ```
105
1062. 这两个权限的授权方式均为user_grant,因此需要调用requestPermissionsFromUser接口,以动态弹窗的方式向用户申请授权。
107
108   ```
109   import abilityAccessCtrl from '@ohos.abilityAccessCtrl.d.ts';
110
111   let permissions: Array<string> = ['ohos.permission.READ_MEDIA','ohos.permission.WRITE_MEDIA']
112   let atManager = abilityAccessCtrl.createAtManager();
113   // context为调用方UIAbility的AbilityContext
114   atManager.requestPermissionsFromUser(context, permissions).then((data) => {
115       console.log("Succeed to request permission from user with data: " + JSON.stringify(data))
116   }).catch((error) => {
117       console.log("Failed to request permission from user with error: " + JSON.stringify(error))
118   })
119   ```
120
121## MP4格式的视频为什么播放不了
122
123适用于:OpenHarmonySDK 3.2.7.5版本,API9 Stage模型
124
125暂不支持h.265编码格式的MP4视频播放。
126
127
128## 为什么视频创建至十几个时新创建的视频无法播放甚至崩溃
129
130适用于:OpenHarmonySDK 3.2.7.5版本,API9 Stage模型
131
132当前限制最多创建13个媒体播放实例。
133