第三百九十一回

文章目录

  • 1. 概念介绍
  • 2. 方法与细节
    • 2.1 实现方法
    • 2.2 具体细节
  • 3. 示例代码
  • 4. 内容总结

我们在上一章回中介绍了"如何混合选择多个图片和视频文件"相关的内容,本章回中将介绍如何通过相机获取视频文件.闲话休提,让我们一起Talk Flutter吧。

在这里插入图片描述

1. 概念介绍

我们在前面章回中介绍的选择图片或者视频文件的方式都是通过文件窗口进行的,本章回中将介绍如何通过相机获取视频文件,也就是说我们不再选择已经拍好的视频,
而是在选择视频时直接使用相机录制一个新的视频文件。

2. 方法与细节

通过相机获取视频也是通过image_picke包来实现,这个包虽然叫image_picker,但是它可以选择视频,而且可以调用相机去拍照和录像。

2.1 实现方法

该包提供了pickVideo()方法来从相机获取视频文件,接下来我们介绍详细的实现方法。

  • 创建文件选择器对象,也就是包中提供的ImagePicker类的实例;
  • 使用文件选择器的pickVideo()方法获取视频文件,通过该方法的参数把视频源设置为相机;
  • 该方法会启动相机来录像并且把录像后视频的存储路径返回给方法调用者;
  • 获取到视频文件的路径后就可以使用VideoPlayer组件来加载视频文件;

2.2 具体细节

上面的步骤中使用了ImagePicker的pickVideo()方法,该方法返回的是Future<XFile?>类型的对象,因此我们需要通过Future的then方法来获取文件路径。
此外,该方法需要异步运行,因为获取文件路径是比较耗时的操作。方法中的source参数用来控制视频源,包中一共支持两种图片源:gallery和camera。它们分别表
示通过相册和相机来获取视频。该方法还有一个命名参数:CameraDevice,该参数用来控制拍照时使用前置相机还是后置相机。该方法的另外一个参数是Duration,
用来控制录制视频的时间,因为视频文件比较大,需要限定时间,否则使用默认的最大值infinite。

3. 示例代码

ImagePicker imagePicker = ImagePicker();

XFile? _videoFile;

Future<XFile?> getVideoFiles() async {
  var list = await imagePicker.pickVideo(source: ImageSource.camera);
  return list;
}

ElevatedButton(
  onPressed: () {
    getVideoFiles().then((value) {
      ///因为是异步,所以需要通过setState更新数据源
      setState(() {
        ///返回的路径是app下的缓冲目录:data/user/0/packagename/cache/scaled_1000000010.jpg
        // debugPrint("path: v${value[0].path}");
        _videoFile = value;
        playVideo(_videoFile!);
      });
    });
  },
  child: const Text("load video"),
),

上面的示例代码中演示了如何通过相机获取视频文件,代码把pickVideo()方法封装成了异步方法,并且将它绑定到按钮上,这样就可以在点击按钮时发出获取文件的指
令,此时会打开相机,我们可以使用相机录像,录像完成后有确认和放弃所录视频的图标:对号和和错号。这种操作以可视化操作的方式选择视频文件,十分方便。代码中
加载视频前需要检查文件路径,文件路径在程序最开始运行时为null,在程序运行后,但是没有选择任何视频文件时的文件路径不为空,而是为empty,这点需要特别注意,
不然无法正确预览视频文件。此外,我们获取到的视频文件路径是一个相对路径,它并不是视频文件的绝对路径。此外,代码中把播放视频文件的内容封装成了独立的方法:
playVideo我们只需要给该方法传入文件路径就可以播放视频,该方法的具体实现内容可以参考"如何播放视频文件"章回中的内容。

4. 内容总结

最后,我们对本章回的内容做一个全面的总结:

  • Flutter官方提供了image_picker包,该包以可视化操作的方式获取文件路径;
  • 使用包中的pickVideo()方法可以通过相机来获取视频文件的相对路径;
  • 包中的pickVidoe()方法提供了相关的参数来设置视频来源和前后相机;
  • 加载视频文件前需要检查文件路径的可靠性,不然可能导致无法加载视频文件;
    看官们,与"如何通过相机获取视频文件"相关的内容就介绍到这里,欢迎大家在评论区交流与讨论!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/456259.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

很多人不懂这个伦敦金短线操作的心法

很多投资者进入伦敦金市场&#xff0c;是看中了它很适合短线操作的这个特点。确实&#xff0c;伦敦金不光可以实现双向T0的交易&#xff0c;而且还有24小时交易和保证金交易的特点&#xff0c;这些特点令伦敦金成为一个十分适合短线交易的品种。但是投资者如何在伦敦金短线交易…

提高转换效率的利器NCP13992ACDR2G 高性能电流模式LLC谐振变换器控制芯片

NCP13992ACDR2G产品概述&#xff1a; NCP13992ACDR2G是一款用于半桥谐振变换器的高性能电流模式控制器。该控制器实现了600 V栅极驱动器&#xff0c;简化了布局并减少了外部组件数量。内置的Brown−Out输入功能简化了控制器在所有应用程序中的实现。在需要PFC前级的应用中&…

RUST 每日一省:rust logo收集

rust的logo集合&#xff0c;看看有没有你喜欢的&#xff0c;挑一个吧&#xff1b; GitHub - XuHugo/rust-logo: Collection of logo images for all rust languages 下边只是挑选了几个&#xff0c;更多的还是看github吧。

mysql 主从延迟分析

一、如何分析主从延迟 分析主从延迟一般会采集以下三类信息。 从库服务器的负载情况 为什么要首先查看服务器的负载情况呢&#xff1f;因为软件层面的所有操作都需要系统资源来支撑。 常见的系统资源有四类&#xff1a;CPU、内存、IO、网络。对于主从延迟&#xff0c;一般会…

【LeetCode热题100】206. 反转链表(链表)

一.题目要求 给你单链表的头节点 head &#xff0c;请你反转链表&#xff0c;并返回反转后的链表。 二.题目难度 简单 三.输入样例 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5] 输出&#xff1a;[5,4,3,2,1] 示例 2&#xff1a; 输入&#xff1a;head [1,2…

TS使用el-tree拖拽结构+点击写法

1.结构分两块 <template><div style"height:96%;width:100%;max-width:1920px;max-height:1080px;background-color:white;padding:20px;display: flex;flex-direction:row; "><!-- 左侧树 --><div style"height:100%;width:32%;"&g…

【刷题节】美团2024年春招第一场笔试【技术】

1.小美的平衡矩阵 import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner scanner new Scanner(System.in);int n scanner.nextInt();int[][] nums new int[n][n], sum new int[n][n];char[] chars;for (int i 0; i < n; i) {…

使用Python对文本文件进行分词、词频统计和可视化

目录 一、引言 二、文本分词 三、词频统计 四、可视化 五、案例与总结 六、注意事项与扩展 七、总结与展望 一、引言 在大数据时代&#xff0c;文本处理是信息提取和数据分析的重要一环。分词、词频统计和可视化是文本处理中的基础任务&#xff0c;它们能够帮助…

生产线平衡改善的四大方法及vioovi ECRS工时分析软件的应用

生产线平衡是制造业生产过程中的关键环节&#xff0c;它直接影响到生产效率、成本及产品质量。在追求精益生产的今天&#xff0c;改善生产线平衡成为众多企业的重要目标。生产线平衡改善的四大方法包括&#xff1a;保证各工序之间的先后顺序、组合的工序时间不能大于节拍、各工…

Hadoop大数据应用:HDFS 集群节点扩容

目录 一、实验 1.环境 2.HDFS 集群节点扩容 二、问题 1.rsync 同步报错 一、实验 1.环境 &#xff08;1&#xff09;主机 表1 主机 主机架构软件版本IP备注hadoop NameNode &#xff08;已部署&#xff09; SecondaryNameNode &#xff08;已部署&#xff09; Resourc…

迁移学习怎么用

如果想实现一个计算机视觉应用&#xff0c;而不想从零开始训练权重&#xff0c;比方从随机初始化开始训练&#xff0c;更快的方式是下载已经训练好权重的网络结构&#xff0c;把这个作为预训练&#xff0c;迁移到你感兴趣的新任务上。ImageNet、PASCAL等等数据库已经公开在线。…

【OceanBase诊断调优 】——全链路诊断日志看不懂?obdiag来帮你!

最近总结一些诊断OCeanBase的一些经验&#xff0c;出一个【OceanBase诊断调优】专题&#xff0c;也欢迎大家贡献自己的诊断OceanBase的方法。 1. 前言 OceanBase 数据库是分布式数据库&#xff0c;因此调用链路复杂&#xff0c;当出现超时问题的时&#xff0c;往往无法快速定…

【Redis系列】深入了解 Redis:一种高性能的内存数据库

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

EI期刊复现:面向配电网韧性提升的移动储能预布局与动态调度策略程序代码!

适用平台&#xff1a;MatlabYalmipCplex/Gurobi/Mosek 程序提出一种多源协同的两阶段配电网韧性提升策略。在灾前考虑光伏出力不确定性与网络重构&#xff0c;以移动储能配置成本与负荷削减风险成本最小为目标对储能的配置数量与位置进行预布局&#xff1b;在灾后通过多源协同…

离线数仓(六)【ODS 层开发】

前言 今天开始正式的数仓搭建&#xff0c;所谓 ODS 层的工作就是把我们各种数据源采集发送来的各种类型的数据&#xff08;Json、tsv类型&#xff09;映射到 Hive 表中&#xff0c;映射时可以进行一些简单的处理&#xff0c;比如简单的数据清洗&#xff0c;舍弃一些没有必要的字…

3d场景重建图像渲染 | 神经辐射场NeRF(Neural Radiance Fields)

神经辐射场NeRF&#xff08;Neural Radiance Fields&#xff09; 概念 NeRF&#xff08;Neural Radiance Fields&#xff0c;神经辐射场&#xff09;是一种用于3D场景重建和图像渲染的深度学习方法。它由Ben Mildenhall等人在2020年的论文《NeRF: Representing Scenes as Neur…

武汉星起航:创新驱动,共赢未来,引领跨境电商新潮流

在跨境电商这个充满挑战与机遇的领域&#xff0c;武汉星起航凭借其创新思维和共赢理念&#xff0c;正引领着行业发展的新潮流。 武汉星起航深知创新是企业在激烈竞争中立于不败之地的关键。公司始终关注市场动态&#xff0c;紧跟行业趋势&#xff0c;不断探索新的商业模式和运…

京东云主机+京美建站SaaS版

京美建站SaaS版 京美建站搭建企业网站、小程序、3000精美模板 链接:https://daili.jd.com/s?linkNo57UBX34BZMWGNFYTOCPVUE7SN36CCIPKLTFLPCUCPYBKSYYBIPS2BJ57GP7RACLDHU66X526ZOULMIXL2VN7DT7IHU 京东云主机&#xff0c;安全稳定&#xff0c;性能强劲&#xff0c;新客下单…

深入了解RC电路的分类及优化应用方法!

RC电路是由电阻&#xff08;R&#xff09;和电容&#xff08;C&#xff09;组成的电路&#xff0c;它是一种常见的模拟电路&#xff0c;也在数字电路和信号处理中有广泛的应用。RC电路的特性由电阻、电容和电路连接方式决定&#xff0c;它可以用于滤波、时序控制、信号整形等多…

有来团队后台项目-解析6

element-icon 引入 安装 在解析3中&#xff0c;已经安装过 创建plugins 文件夹 icons 文件 import type { App } from "vue"; import * as ElementPlusIconsVue from "element-plus/icons-vue";// 注册所有图标 export function setupElIcons(app: App…
最新文章