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 。