第二百九十回

2024-01-28 07:20
文章标签 九十 第二百

本文主要是介绍第二百九十回,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 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.chinasem.cn/article/652894

相关文章

第二百零九节 Java格式 - Java数字格式类

Java格式 - Java数字格式类 以下两个类可用于格式化和解析数字: java.text.NumberFormatjava.text.DecimalFormat NumberFormat 类可以格式化一个数字特定地区的预定义格式。 DecimalFormat 类可以格式化数字以特定区域设置的自定义格式。 NumberFormat类的 getXXXInstance()方法返回格式化

第二百零四节 Java正则表达式教程 - Java正则表达式量词

Java正则表达式教程 - Java正则表达式量词 我们可以指定正则表达式中的字符的次数可以匹配字符序列。 为了使用正则表达式表达一个数字或更多的模式,我们可以使用量词。 下表列出了量词及其含义。 量词含义*零次或更多次+一次或多次?一次或根本不{m}正好m次{m,}至少m次{m,n}至少m,但不超过n次 量词必须遵循字符或字符类。 例子 import java.util.reg

【九十】【算法分析与设计】单调队列,239. 滑动窗口最大值,1438. 绝对差不超过限制的最长连续子数组,[USACO12MAR] Flowerpot S

239. 滑动窗口最大值 - 力扣(LeetCode) 给你一个整数数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。 返回 滑动窗口中的最大值 。 示例 1: 输入:nums = [1,3,-1,-3,5,3,6,7], k = 3 输出:[3,3,5,5,6,7] 解释: 滑动窗口的位置 最大值

C++之void*与vector<char>.data()=char*相互转换(九十)

1.代码示例   #include <iostream>#include <vector>#include <time.h>#include <string.h>#include <typeinfo>using namespace std;void *do_work(void *buf){//1.void* ---> vector<char>.data()=char*char* p =

第四百九十二回

文章目录 1. 概念介绍2. 使用方法2.1 SegmentedButton2.2 ButtonSegment 3. 代码与效果3.1 示例代码3.2 运行效果 4. 内容总结 我们在上一章回中介绍了"SearchBar组件"相关的内容,本章回中将介绍SegmentedButton组件.闲话休提,让我们一起Talk Flutter吧。 1. 概念介绍 我们在本章回中介绍的

每天一个数据分析题(二百九十)

关于直方图与条形图的描述,下列说法正确的是() A. 直方图用于展示分类型数据的分布情况 B. 直方图用来展示数值型数据的分布情况 C. 条形图只能用于展示顺序型数据的分布情况 D. 条形图只能用于展示分类型数据的分布情况 题目来源于CDA模拟题库 点击此处获取答案

C之结构体初始化10种写法总结(九十)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒体系统工程师系列【原创干货持续更新中……】🚀 人生格言: 人生从来没有捷径,只有行动才是治疗恐惧和懒惰的唯一良药. 更多原创,欢迎关注:Android系统攻城狮 1

一个屌丝程序员的青春(九十)

冬天的日子里,羽绒服、棉裤穿在身上走起路来特别笨重,没备手套和帽子是明智的。     有些天特别冷,窝在寝室里没事不出门。     恶劣天气即将到来前,气象局会提前预警告知群众。     赶到周末放假休息,大冷天在寝室里看美剧对贾建来说很惬意,看看《神盾局特工》、《不死法医》等,当然还会温习周星星的电影。     有人问:从二十岁到三十岁这十年你发展的怎么样?     有人回答:

一起Talk Android吧(第二百三十七回:Android中的Intent)

各位看官们大家好,上一回中咱们说的是Android中四大组件的例子,这一回咱们说的例子是Intent。闲话休提,言归正转。让我们一起Talk Android吧! 看官们,我们在本章回中将介绍Intent,它也是常用的知识,四大组件中有三大组件都使用它,比如打开Activity,绑定服务,发送广播。我们在代码中都看到过Intent的身影。 Intent可以显式和隐式两种; 显式Intent中包含

一起Talk Android吧(第二百三十六回:Android中的四大组件概述)

各位看官们大家好,上一回中咱们说的是Android中数据存储大结局的例子,这一回咱们说的例子是四大组件。闲话休提,言归正转。让我们一起Talk Android吧! 看官们,我们在这一回中介绍一下Android中的四大组件,它们是 ActivityServiceBroadcastContentProvider。 其实这些内容我们都介绍过,接下来我们一起回顾一下这些知识. Activity是程