当前位置: 首页 > wzjs >正文

张家港电脑网站制作外贸网站优化建设

张家港电脑网站制作,外贸网站优化建设,类似wordpress博客系统,怎么查网站制作空间有效期选择本地视频文件,并获取首帧预览图 参考文档 由于文件权限获取不太方便,现在使用的是 picker 的方式获取本地视频文件。文件位于我的手机/下载目录下。 操作分为几步: 获取文件地址;获取视频信息;首帧截图&#x…

选择本地视频文件,并获取首帧预览图

参考文档

由于文件权限获取不太方便,现在使用的是 picker 的方式获取本地视频文件。文件位于我的手机/下载目录下。

操作分为几步:

  1. 获取文件地址;
  2. 获取视频信息;
  3. 首帧截图;
  4. 显示截图;

获取文件地址

try {let context = CCAppContext.context.getHostContext()!let documentSelectOptions = new picker.DocumentSelectOptions();documentSelectOptions.fileSuffixFilters = ['视频|.mp4', '视频|.avi']let documentPicker = new picker.DocumentViewPicker(context);documentPicker.select(documentSelectOptions).then((documentSelectResult: Array<string>) => {console.info('DocumentViewPicker.select successfully, documentSelectResult uri: ' + JSON.stringify(documentSelectResult));if (documentSelectResult.length > 0) {let uri = documentSelectResult[0] // 这个是获取到的文件地址}).catch((err: BusinessError) => {console.error(`DocumentViewPicker.select failed with err, code is: ${err.code}, message is: ${err.message}`);});
} catch (error) {let err: BusinessError = error as BusinessError;console.error(`DocumentViewPicker failed with err, code is: ${err.code}, message is: ${err.message}`);
}

获取视频信息 & 获取首帧截图 & 显示图片

try {// 打开视频文件获取文件描述符let fd = await fileIo.open(videoPath, fileIo.OpenMode.READ_ONLY)const extractor = await media.createAVMetadataExtractor()extractor.fdSrc = { fd: fd.fd }let metaData = await extractor.fetchMetadata()this.imageWidth = parseInt(metaData.videoWidth || '1') // 视频宽度this.imageHeight = parseInt(metaData.videoHeight || '1') // 视频高度let orientation = metaData.videoOrientation // 视频旋转,截图有可能有旋转角度const avImageGenerator = await media.createAVImageGenerator()avImageGenerator.fdSrc = { fd: fd.fd }// 配置缩略图参数const param: media.PixelMapParams = {width: this.imageWidth,height: this.imageHeight,}this.pixelMap = await avImageGenerator.fetchFrameByTime(0, // 0表示首帧(单位微秒)media.AVImageQueryOptions.AV_IMAGE_QUERY_NEXT_SYNC,param)await avImageGenerator.release() // 释放资源fileIo.close(fd) // 关闭文件
} catch (error) {console.error(`Get thumbnail failed: ${error.code}, ${error.message}`)
}

完整代码

import { fileIo, fileUri, picker } from '@kit.CoreFileKit';
import { BusinessError } from '@ohos.base'
import { media } from '@kit.MediaKit';@Entry
struct test {@State pixelMap: PixelMap | undefined = undefined@State imageWidth: number = 1@State imageHeight: number = 1@State orientation: number = 0chooseFile() {try {let context = getContext()let documentSelectOptions = new picker.DocumentSelectOptions();documentSelectOptions.fileSuffixFilters = ['视频|.mp4', '视频|.avi']let documentPicker = new picker.DocumentViewPicker(context);documentPicker.select(documentSelectOptions).then((documentSelectResult: Array<string>) => {console.info('DocumentViewPicker.select successfully, documentSelectResult uri: ' + JSON.stringify(documentSelectResult));if (documentSelectResult.length > 0) {let uri = documentSelectResult[0]this.getFirstFrame(uri)}}).catch((err: BusinessError) => {console.error(`DocumentViewPicker.select failed with err, code is: ${err.code}, message is: ${err.message}`);});} catch (error) {let err: BusinessError = error as BusinessError;console.error(`DocumentViewPicker failed with err, code is: ${err.code}, message is: ${err.message}`);}}async getFirstFrame(videoPath: string) {try {// 打开视频文件获取文件描述符let fd = await fileIo.open(videoPath, fileIo.OpenMode.READ_ONLY);const extractor = await media.createAVMetadataExtractor()extractor.fdSrc = { fd: fd.fd };let metaData = await extractor.fetchMetadata()this.imageWidth = parseInt(metaData.videoWidth || '1')this.imageHeight = parseInt(metaData.videoHeight || '1')this.orientation = parseInt(metaData.videoOrientation || '0')const avImageGenerator = await media.createAVImageGenerator();avImageGenerator.fdSrc = { fd: fd.fd };// 配置缩略图参数const param: media.PixelMapParams = {width: this.imageWidth,height: this.imageHeight};this.pixelMap = await avImageGenerator.fetchFrameByTime(0, // 0表示首帧(单位微秒)media.AVImageQueryOptions.AV_IMAGE_QUERY_NEXT_SYNC,param);await avImageGenerator.release(); // 释放资源fileIo.close(fd); // 关闭文件} catch (error) {console.error(`Get thumbnail failed: ${error.code}, ${error.message}`);}}build() {Column() {Text('截图').fontSize('22fp').fontColor(Color.Black).onClick(() => {this.chooseFile()})Image(this.pixelMap).objectFit(ImageFit.Cover).width('30%').aspectRatio(1).orientation(this.orientation)}.justifyContent(FlexAlign.Center).alignItems(HorizontalAlign.Center).width('100%').height('100%')}
}

文章转载自:

http://qjaWBUlR.bkcnq.cn
http://Wqz2HFaC.bkcnq.cn
http://EPbo03H4.bkcnq.cn
http://88rP1zek.bkcnq.cn
http://Tdr1cbgc.bkcnq.cn
http://CvgkCCOP.bkcnq.cn
http://mSUVgCNg.bkcnq.cn
http://JPCHjIaQ.bkcnq.cn
http://4OKDa359.bkcnq.cn
http://lIT7A3re.bkcnq.cn
http://ALCGhL6P.bkcnq.cn
http://iD9xuRgA.bkcnq.cn
http://ZuwKQxfZ.bkcnq.cn
http://IJe2nxos.bkcnq.cn
http://9nJO1uqu.bkcnq.cn
http://L8NnXKSm.bkcnq.cn
http://lN7r8PVY.bkcnq.cn
http://WLpBWyDy.bkcnq.cn
http://JAEZk7Z6.bkcnq.cn
http://8Z1C9YOw.bkcnq.cn
http://MZ4L3pfZ.bkcnq.cn
http://FAzzke4v.bkcnq.cn
http://pIbaUPOS.bkcnq.cn
http://LRWGrUbr.bkcnq.cn
http://4R1g7huz.bkcnq.cn
http://JdQSlsYV.bkcnq.cn
http://ocWs0lyo.bkcnq.cn
http://XWc8wfNL.bkcnq.cn
http://oEdvSCMi.bkcnq.cn
http://PFydJ3DI.bkcnq.cn
http://www.dtcms.com/wzjs/750670.html

相关文章:

  • 网站系统说明书wordpress 煎蛋网插件
  • 工程建设最好的网站制作网页用什么语言
  • 代做设计网站六安开发区网站
  • 乐清 网站建设四川手机网站设计方案
  • 无锡教育论坛网站建设百度搜索竞价排名
  • 新手如何制作网站wordpress使用php版本号
  • 汕头模板建站平台wordpress x 主题
  • 佳木斯哈尔滨网站建设培训计划方案
  • 营销型网站建设一般多少钱沈阳无痛人流大概多少费用
  • 怎么用域名做网站电商培训网站
  • 网站收录查询网网站建设前 需要准备的
  • 怎么区分营销型和展示型的网站南京网站费用网站建设
  • 烟台汽车租赁网站建设中装建设重组最新消息
  • 专业设计网站的公司知名seo电话
  • 广州做网站网站的设计方案在哪里
  • tap自助建站如何快速找到做网站的客户
  • 做胃镜多少钱那好天津津门网站awordpress singular
  • 手机网站建设外包成都微网站设计
  • 网络建站技术青岛手机建站多少钱
  • 江门网站制作计划如何做网站宣传片
  • 鹤壁网站建设公司推广链接点击器app
  • 网站建设 银川网站后台修改
  • 网络工程师和网站开发员软件设计方案怎么写
  • 精美个人网站今天猪最新价格
  • 关于医院网站建设的通知网站如何创建首页
  • 手机网站html5龙华网站开发
  • 养老院网站建设方案资阳网络营销顾问招聘
  • 学做网站应该看那些书怎么制作图片相册
  • 闲鱼网站做交易是先付款吗长春市做网站的公司
  • 人防网站建设与服务最新广告公司经营范围