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

第二百八十八回

文章目录

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

我们在上一章回中介绍了"如何获取文件类型"相关的内容,本章回中将介绍如何播放视频.闲话休提,让我们一起Talk Flutter吧。

在这里插入图片描述

1. 概念介绍

播放视频是我们常用的功能,不过Flutter官方SDK中没有提供这样的API,怎么办呢?官方也想到了这点,因此提供了video_player包供开发人员使用,本章回中将
详细介绍如何通过该包提供的API来播放视频。

2. 使用方法

2.1 实现步骤

下面是使用video_palyer包播放视频的详细步骤,请大家参考:

  • 在yaml配置文件中添加包,并且获取包到项目中;
  • 创建控制器对象,也就是包中提供的VideoPlayerController类的实例;
  • 使用控制器对象初始化,并且设置声音等视频播放参数;
  • 使用控制器对象创建视频播放器对象,也就是包中提供的VideoPlayer类的实例;
  • 通过控制器对象操作视频,比较播放视频,暂停播放视频等;
  • 视频播放完成后释放控制器相关资源;

2.2 具体细节

在上面介绍的步骤中还有一些细节需要说明,主要是创建控制器对象和创建视频播放器对象这两个步骤:

  • 创建控制器对象需要使用VideoPlayerController的file()或者networkUrl()方法。这两个方法用来把本地存储中的视频文件,或者网络上的视频文件转换成
    控制器对象,方法的参数是本地视频文件的绝对地址或者网络视频文件的链接,此外,播放网络视频时还需要在配置文件中添加网络权限;
  • 创建视频播放器对象时直接使用VideoPlayer类的构造方法就可以,该方法只有一个控制器类型的参数,把控制器对象传递给该方法就可以;
  • 视频播放时有一定宽高比,最好在视频播放器外层嵌套一个AspectRatio组件,这样可以限制视频播放器的宽高比,进而达到良好的播放效果;
    我们先用文本介绍这些细节内容,在后面的小节中将通过示例代码来演示。

3. 示例代码

///创建控制器对象并且进行初始化操作VideoPlayerController? _controller = VideoPlayerController.file(File(file_path));await _controller?.setVolume(0.0);await _controller?.initialize();await _controller?.setLooping(true);///创建视频播放器对象Center(///控制视频的宽高比child: AspectRatio(aspectRatio: controller!.value.aspectRatio,child: VideoPlayer(controller!),),);///通过按钮播放、暂停视频
Container(width: 64,color: Colors.green,child: IconButton(onPressed: () {setState(() {_controller!.value.isPlaying? _controller?.pause(): _controller?.play();});},icon: _controller == null? const Icon(Icons.video_call): (Icon(_controller!.value.isPlaying? Icons.pause: Icons.play_arrow)),),
),///释放控制器相关资源

void dispose() {_controller = null;super.dispose();
}

4. 内容总结

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

  • 在Flutter开发中需要使用三方包video_player来播放视频;
  • 该包主要通过控制器和视频播放器两个类来播放视频;
  • 控制器用来初始化视频文件,对视频文件进行播放,暂停等操作;
  • 视频播放器主要用来播放视频文件,相当于提供一个播放窗口;
  • 视频播放完成后要释放控制器相关的资源;
    看官们,与"如何播放视频"相关的内容就介绍到这里,欢迎大家在评论区交流与讨论!

相关文章:

第二百八十八回

文章目录 1. 概念介绍2. 使用方法2.1 实现步骤2.2 具体细节 3. 示例代码4. 内容总结 我们在上一章回中介绍了"如何获取文件类型"相关的内容,本章回中将介绍如何播放视频.闲话休提,让我们一起Talk Flutter吧。 1. 概念介绍 播放视频是我们常用…...

【日常学习笔记】gtest

https://zhuanlan.zhihu.com/p/369466622 int Factorial(int n) {int result 1;for (int i 1; i < n; i) {result * i;}return result; }TEST(TestSuiteName, TestName) 第一个参数可以表示为一个对某一个函数进行测试&#xff0c;第二个参数表示对这个函数测试时的分的几…...

go-zero配置DB的redis缓存

配置定义&#xff1a; # cat internal/config/config.go package configimport ("github.com/zeromicro/go-zero/rest""github.com/zeromicro/go-zero/core/stores/cache" )type Config struct {rest.RestConfCacheRedis cache.CacheConf }对应的配置文件…...

物理服务器

物理服务器 物理服务器是一种独立的、非虚拟化的计算机设备&#xff0c;它通常被用作高性能应用、数据库、存储和网络等关键业务应用的运行平台。物理服务器可以提供更高的处理能力、更好的安全性和可靠性&#xff0c;但需要用户自行维护和管理。 物理服务器的形式多种多样&…...

3.3 实验三:以太网链路聚合实验

HCIA-Datacom实验指导手册&#xff1a;3.3 实验三&#xff1a;以太网链路聚合实验 一、实验介绍&#xff1a;二、实验拓扑&#xff1a;三、实验目的&#xff1a;四、配置步骤&#xff1a;步骤 1 掌握使用手动模式配置链路聚合的方法步骤 2 掌握使用静态 LACP 模式配置链路聚合的…...

php mysql字段默认值使用问题

前提是使用了事务&#xff0c;在第一个阶段 是A表操作保存&#xff0c;第二阶段操作B表&#xff0c;操作B表的时候使用了A表的一个字段&#xff0c;这个字段在第一阶段没有设置值&#xff0c;保存的时候使用字段默认值。 【这种情况 最好是在第一阶段 把后面要使用的字段设置好…...

【linux】Debian防火墙

Debian系统默认没有安装防火墙&#xff0c;但用户可以根据需要自行选择并安装一个防火墙以增强系统安全性。 一、查看Debian 桌面系统的防火墙是否关闭 在Debian及其他基于Linux的桌面系统中&#xff0c;防火墙功能通常是由iptables或nftables规则集控制的&#xff0c;而ufw&…...

2022年至2023年广东省职业院校技能大赛高职组“信息安全管理与评估”赛项样题

2022 年至 2023 年广东省职业院校技能大赛高职组“信息安全管理与评估”赛项样题 一、 第一阶段竞赛项目试题 本文件为信息安全管理与评估项目竞赛第一阶段试题&#xff0c;第一阶段内容包 括&#xff1a;网络平台搭建、网络安全设备配置与防护。 本阶段比赛时间为 180 分钟…...

CC++内存管理【非常详细,对新手友好】

文章目录 一、程序内存划分1.基础知识2. 堆栈的区别3. 题目练手 二、C语言中动态内存管理方式三、C中动态内存管理方式1. new/delete操作内置类型2. new/delete操作自定义类型 四、operator new和operator delete函数1. 汇编查看编译器底层调用2. 透过源码分析两个全局函数 五、…...

022-安全开发-PHP应用留言板功能超全局变量数据库操作第三方插件引用

022-安全开发-PHP应用&留言板功能&超全局变量&数据库操作&第三方插件引用 #知识点&#xff1a; 1、PHP留言板前后端功能实现 2、数据库创建&架构&增删改查 3、内置超全局变量&HTML&JS混编 4、第三方应用插件&传参&对象调用 演示案例&a…...

大白话解析LevelDB 3: SST Compaction

SST Compaction 文章目录 SST Compaction什么是Compact SST什么时候触发Compact SST第一处 读取 Key 的时候第二处 使用迭代器遍历数据库时第三处 写入 Key 时第四处 刚打开数据库时 如何进行Compact SST计算Compaction范围进行Compaction创建一个迭代器用于读取Compaction范围…...

【Python】02快速上手爬虫案例二:搞定验证码

文章目录 前言1、不要相信什么验证码的库2、以古诗文网为例&#xff0c;获取验证码1&#xff09;code_result.py2&#xff09;gsw.py 前言 提示&#xff1a;以古诗文网为例&#xff0c;获取验证码&#xff1a; 登录&#xff1a;https://so.gushiwen.cn/user/login.aspx 1、不…...

C# 中的接口

简介 官方说明&#xff1a;接口定义协定。 实现该协定的任何 class 或 struct 必须提供接口中定义的成员的实现。 接口可为成员定义默认实现。 它还可以定义 static 成员&#xff0c;以便提供常见功能的单个实现。 从 C# 11 开始&#xff0c;接口可以定义 static abstract 或 …...

一篇文章带你了解C++中隐含的this指针

文章目录 一、this指针的引出二、this指针的特性【面试题】 一、this指针的引出 我们先来定义一个日期类Date&#xff0c;下面这段代码执行的结果是什么呢&#xff1f; class Date { public:void Init(int year, int month, int day){_year year;_month month;_day day;}v…...

shardinig-JDBC二开-支持sharding-jdbc的配置文件接入到nacos

代码在 https://gitee.com/lbmb/mb-live-app 中 【mb-live-framework】 模块里面的【mb-live-framework-datasource-stater】 如果喜欢 希望大家给给star 项目还在持续更新中。 背景介绍&#xff1a; 因为近期在自己写一套直播项目。使用到了sharding-jdbc来做分库分表的组件…...

a-table自定义展开图标

原文来自&#xff1a;vue 修改ant中table表格的展开图标 树形表格expandIcon自定义图标 <template #expandIcon"props"><span v-if"props.record.children?.length > 0"><divv-if"props.expanded"style"display: inline…...

Kubernetes Ingress暴露应用的工作流程

文章目录 一、Igress是什么二、安装Igress Controller三、Service NodePort模式暴露Ingress Controller四、创建ingress 进行访问查看ingress controller生成的规则(两种类型通用) 五、HostNetwork模式暴露Ingress Controller总结&#xff1a; 一、Igress是什么 一般负载均衡器…...

Redis应用(1)缓存(1.2)------Redis三种缓存问题

三者出现的根本原因是&#xff1a;Redis缓存命中率下降&#xff0c;请求直接打到DB上了。 一、 缓存穿透&#xff1a; 1、定义&#xff1a; 缓存穿透是指客户端请求的数据在缓存中和数据库中都不存在&#xff0c;这样缓存永远不会生效&#xff0c;这些请求都会打到数据库。…...

安全 专题

[实践总结] 日志注入问题&#xff08;log4j2&#xff09; [实践总结] Java 防止SQL注入的四种方案 [实践总结] 如何防护 order by 导致的SQL注入 [实践总结] 限制正则表达式匹配次数/时间 防止DoS攻击 [实践总结] java XML解析防止外部实体注入 [Ref] yaml.load的漏洞利用…...

自然语言处理-文本对分类或回归

我们研究了自然语言推断。它属于文本对分类&#xff0c;这是一种对文本进行分类的应用类型。 以一对文本作为输入但输出连续值&#xff0c;语义文本相似度是一个流行的“文本对回归”任务。 这项任务评估句子的语义相似度。例如&#xff0c;在语义文本相似度基准数据集&#x…...

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …...

树莓派超全系列教程文档--(62)使用rpicam-app通过网络流式传输视频

使用rpicam-app通过网络流式传输视频 使用 rpicam-app 通过网络流式传输视频UDPTCPRTSPlibavGStreamerRTPlibcamerasrc GStreamer 元素 文章来源&#xff1a; http://raspberry.dns8844.cn/documentation 原文网址 使用 rpicam-app 通过网络流式传输视频 本节介绍来自 rpica…...

React Native 开发环境搭建(全平台详解)

React Native 开发环境搭建&#xff08;全平台详解&#xff09; 在开始使用 React Native 开发移动应用之前&#xff0c;正确设置开发环境是至关重要的一步。本文将为你提供一份全面的指南&#xff0c;涵盖 macOS 和 Windows 平台的配置步骤&#xff0c;如何在 Android 和 iOS…...

以下是对华为 HarmonyOS NETX 5属性动画(ArkTS)文档的结构化整理,通过层级标题、表格和代码块提升可读性:

一、属性动画概述NETX 作用&#xff1a;实现组件通用属性的渐变过渡效果&#xff0c;提升用户体验。支持属性&#xff1a;width、height、backgroundColor、opacity、scale、rotate、translate等。注意事项&#xff1a; 布局类属性&#xff08;如宽高&#xff09;变化时&#…...

23-Oracle 23 ai 区块链表(Blockchain Table)

小伙伴有没有在金融强合规的领域中遇见&#xff0c;必须要保持数据不可变&#xff0c;管理员都无法修改和留痕的要求。比如医疗的电子病历中&#xff0c;影像检查检验结果不可篡改行的&#xff0c;药品追溯过程中数据只可插入无法删除的特性需求&#xff1b;登录日志、修改日志…...

安宝特方案丨XRSOP人员作业标准化管理平台:AR智慧点检验收套件

在选煤厂、化工厂、钢铁厂等过程生产型企业&#xff0c;其生产设备的运行效率和非计划停机对工业制造效益有较大影响。 随着企业自动化和智能化建设的推进&#xff0c;需提前预防假检、错检、漏检&#xff0c;推动智慧生产运维系统数据的流动和现场赋能应用。同时&#xff0c;…...

基于Flask实现的医疗保险欺诈识别监测模型

基于Flask实现的医疗保险欺诈识别监测模型 项目截图 项目简介 社会医疗保险是国家通过立法形式强制实施&#xff0c;由雇主和个人按一定比例缴纳保险费&#xff0c;建立社会医疗保险基金&#xff0c;支付雇员医疗费用的一种医疗保险制度&#xff0c; 它是促进社会文明和进步的…...

2025盘古石杯决赛【手机取证】

前言 第三届盘古石杯国际电子数据取证大赛决赛 最后一题没有解出来&#xff0c;实在找不到&#xff0c;希望有大佬教一下我。 还有就会议时间&#xff0c;我感觉不是图片时间&#xff0c;因为在电脑看到是其他时间用老会议系统开的会。 手机取证 1、分析鸿蒙手机检材&#x…...

JDK 17 新特性

#JDK 17 新特性 /**************** 文本块 *****************/ python/scala中早就支持&#xff0c;不稀奇 String json “”" { “name”: “Java”, “version”: 17 } “”"; /**************** Switch 语句 -> 表达式 *****************/ 挺好的&#xff…...

自然语言处理——循环神经网络

自然语言处理——循环神经网络 循环神经网络应用到基于机器学习的自然语言处理任务序列到类别同步的序列到序列模式异步的序列到序列模式 参数学习和长程依赖问题基于门控的循环神经网络门控循环单元&#xff08;GRU&#xff09;长短期记忆神经网络&#xff08;LSTM&#xff09…...