HarmonyOS 鸿蒙Next如何做视频压缩
HarmonyOS 鸿蒙Next如何做视频压缩
更多关于HarmonyOS 鸿蒙Next如何做视频压缩的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
提供一个测试的demo:
import { photoAccessHelper } from '@kit.MediaLibraryKit'; import { BusinessError } from '@kit.BasicServicesKit'; import { CompressorResponseCode, CompressQuality, VideoCompressor} from "[@ohos](/user/ohos)/videocompressor" import { hash } from '@kit.CoreFileKit';
@Entry @Component struct Index { @State message: string = ‘Hello World’; @State md5Array:string[] = []
selectVideo(){ const photoViewPicker = new photoAccessHelper.PhotoViewPicker(); const photoSelectOptions = new photoAccessHelper.PhotoSelectOptions(); photoSelectOptions.MIMEType = photoAccessHelper.PhotoViewMIMETypes.VIDEO_TYPE photoSelectOptions.maxSelectNumber = 1 photoViewPicker.select(photoSelectOptions).then(async (photoSelectResult: photoAccessHelper.PhotoSelectResult) => { let uris = photoSelectResult.photoUris || [] if (uris.length){ let path = uris[0] console.log(‘path’,path) let videoCompressor = new VideoCompressor(); videoCompressor.compressVideo(getContext(),path,CompressQuality.COMPRESS_QUALITY_MEDIUM).then((data) => { if (data.code == CompressorResponseCode.SUCCESS) { hash.hash(data.outputPath,‘md5’).then(md5=>{ this.md5Array.push(md5.toLowerCase()) console.log(‘md5’,md5.toLowerCase()) }) } }).catch((err:BusinessError) => {
}) } console.log(<span class="hljs-string">'photoSelectResult'</span>,<span class="hljs-built_in">JSON</span>.stringify(photoSelectResult)) }).catch((err: BusinessError) => { })
} build() { RelativeContainer() { Column(){ Button(‘选择视频压缩’) .onClick(()=>{ this.selectVideo() }) ForEach(this.md5Array, (item: string, index: number) => { Text(
第${index+<span class="hljs-number">1</span>}次:${item}
) }) } .alignItems(HorizontalAlign.Center) .justifyContent(FlexAlign.Center) .height(‘100%’) .width(‘100%’) } .height(‘100%’) .width(‘100%’) } }
更多关于HarmonyOS 鸿蒙Next如何做视频压缩的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
HarmonyOS 鸿蒙Next进行视频压缩,可以通过编程方式实现,以下是一个大致的步骤:
- 申请权限:首先,需要确保应用已经获得了相机、麦克风、媒体位置、写入媒体和读取媒体等必要的权限。
- 获取视频流:通过Camera Kit获取相机视频流数据,这通常涉及到启动相机并录制视频。
- 视频流处理:将获取到的视频流数据传递到native侧,进行压缩编码。可以使用系统提供的编解码接口,或者引入第三方库来实现压缩功能。
- 保存压缩文件:将压缩后的视频文件保存到设备的沙箱路径或其他指定位置。
此外,对于已经存在的视频文件,也可以通过文件压缩组件进行压缩。这通常涉及到在主线程和子线程之间进行数据传递,使用zlib等压缩库进行文件压缩,并处理压缩后的文件路径和输出。
如果开发者在操作过程中遇到具体问题,建议查阅HarmonyOS官方文档或相关开发社区以获取更详细的解决方案。如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html 。