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

大气家具行业商城类公司网站织梦模板怎么申请网址

大气家具行业商城类公司网站织梦模板,怎么申请网址,发卡网站怎么做,专业网站建设公司在线咨询选择本地视频文件,并获取首帧预览图 参考文档 由于文件权限获取不太方便,现在使用的是 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://www.dtcms.com/wzjs/19653.html

相关文章:

  • 邯郸现代建设集团网站整合营销传播案例分析
  • 定制酒郑州seo排名优化
  • 网站改版后不收录百度认证平台
  • 徐州手机网站建设公司中国网络营销公司
  • 新站网站推广该如何做全能搜
  • 如何网站建设的方案培训心得体会范文大全2000字
  • wordpress选项框插件seo设置是什么
  • 淘宝做详情页代码网站中文域名查询官网
  • 做商品网站数据库有哪些内容seo关键词优化软件app
  • 行业网站建设方式有哪些免费建站网站一站式
  • 怎么做有图有声的网站营销技巧
  • 搜维斯网站建设模板网站建设开发
  • 海口 做网站永久域名查询
  • 青岛网站制作推广平台厦门网站的关键词自动排名
  • 珠海网站建设小程序百分百营销软件官网
  • 苗木企业网站建设源代码网站优化外包费用
  • 设计师平台网站东莞网络营销全网推广
  • html5单页网站武汉seo和网络推广
  • 域名注册网站免费怎么写软文推广
  • 网站描述在哪里写百度官网进入
  • 电商网站css模板免费网站推广软件下载
  • 网站付款方式武汉seo优
  • 新疆建设兵团医院网站十五种常见的销售策略
  • 做网站大型小程序开发
  • 设计制作社会实践活动内容seo培训机构排名
  • 中国建设银行的网站seo基础入门视频教程
  • 武汉网页设计速成培训班郴州seo网络优化
  • 手机网站图片点击放大白嫖永久服务器
  • 如何进入设计公司网站杭州推广平台有哪些
  • 威海做网站www.whbjgchrome谷歌浏览器