一、录制功能的实现
录制函数
为实现录像功能,调用系统相机模块的方法更为快捷,实现函数如下
async takeVideo() { //视频录制函数
await abilityAccessCtrl.createAtManager()
.requestPermissionsFromUser(getContext(this), ['ohos.permission.CAMERA', 'ohos.permission.READ_MEDIA'])
let context = getContext(this) as common.UIAbilityContext
let result = await context.startAbilityForResult({ action: "ohos.want.action.videoCapture" })
return result.want.uri
}
Button组件调用函数,点击实现录制功能
Button({ type: ButtonType.Normal, stateEffect: true }){//视频录制
Image($r('app.media.upload_media'))
.width(50)
.height(50)
.interpolation(ImageInterpolation.High)
}.onClick(async() => {
this.takeVideo()//视频录制
})
.backgroundColor(Color.Transparent)
功能实现截图
左侧图标为视频录制按钮
二、视频上传云存储功能实现
前提条件
- 已开通云存储服务。
- 已集成云存储SDK。
- 已通过认证服务登录应用。
- 应用连接华为AppGallery Connect平台AppGallery Connect (huawei.com)
华为AGC平台的云存储服务提供了客户端和服务端SDK,可以使用云存储SDK为您的应用实现安全可靠的文件上传和下载服务,同时具备如下优势。
- 安全可靠:全流程使用HTTPS协议对用户的传输数据进行加密保护,并采用安全的加密协议将文件加密存储在云端。
- 断点续传:因网络原因或用户原因导致的操作中止,只需要简单地传入操作中止的位置,就可以尝试重新开始该操作。
- 可伸缩:提供EB级的数据存储,解决海量数据存储的难题。
- 易维护:通过简单的判断返回异常就可以定位出错误原因,定位快捷方便。
完成前提条件后,即可使用华为AGC平台的云存储功能。
视频上传云存储功能实现
相关UI界面读者可自行制作,下述代码仅展示使用Arkts中Button进行上传操作
此外,读者也可以自行更改视频mp4文件名称,以满足不同需求
Button({ type: ButtonType.Normal, stateEffect: true }){//视频上传
Image($r('app.media.upload')).width(50).height(50).interpolation(ImageInterpolation.High)
}
.onClick(async () =>{
try {
//1.从相册选中视频
const photoSelectOptions = new picker.PhotoSelectOptions();
photoSelectOptions.MIMEType = picker.PhotoViewMIMETypes.VIDEO_TYPE // 过滤选择媒体文件类型为VIDEO
photoSelectOptions.maxSelectNumber = 1 // 选择媒体文件的最大数目
const result = await new picker.PhotoViewPicker().select(photoSelectOptions)
hilog.info(0, 'Upload', `VideoPicker Success ${result.photoUris[0]}`)//检测选中
//2.调用云存储API上传视频
await cloud.storage().upload({
localPath: result.photoUris[0],
cloudPath: `test_video/test.mp4`
})
hilog.info(0,'Upload','VideoUpload Success')//检测上传
//3.获取上传媒体资源访问地址
const Vurl = await cloud.storage().getDownloadURL(`test_video/test.mp4`)
hilog.info(0,'Upload', `url: ${Vurl}`)//检测公网访问地址
} catch (e) {
hilog.error(0,'Upload',JSON.stringify(e))
}
}).backgroundColor(Color.Transparent)
功能实现截图