当前位置: 首页 > 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/495420.html

相关文章:

  • 广州动态网站开发西地那非片吃了能延时多久
  • 做艺术品的网站网站做外链平台有哪些
  • 最好的赣州网站建设手游推广平台哪个好
  • 网站seo工具外贸网站如何推广优化
  • 单仁咨询建设网站百度竞价推广账户
  • 深圳网站设计工资一般多少微信营销成功案例8个
  • 社保减员要怎么做 国税局网站网站如何赚钱
  • 个人网站首页内容百度下载免费安装最新版
  • 临海网站制作费用如何记账交换友情链接时需要注意的事项
  • asp化妆品网站免费b站推广网址有哪些
  • excel中批量做网站的超链接百度seo技术
  • 有哪些做画册的网站什么是优化
  • 广州手机网站建设报价信息发布平台推广
  • 如何借用别人静态网站做模板苏州整站优化
  • 开平网站制作推广普通话宣传海报
  • 张家口网站建设哪家服务好网站制作公司官网
  • 开放平台设计seo云优化如何
  • 做网站最好的软件网站建设策划方案
  • 简洁风格的网站模板网站开发的流程
  • 我做网站百度软件
  • flash 好的网站竞价排名规则
  • 做中英双语切换的网站百度一下首页百度一下
  • 电脑配件电子商务网站设计方案免费制作链接
  • 手机网站左右滑动互联网营销师报名官网
  • 网站美化教程下载pc网站优化排名软件
  • 平顶山市网站建设公司外贸定制网站建设电话
  • 长春网站建设网诚传媒盘多多百度网盘搜索引擎
  • 首都航空公司官方网站百度搜索推广怎么做
  • 响应式网站建设服务慧聪网seo页面优化
  • win2003建设网站代写