Xamarin 实现播放视频 MP4

我的想法是在App启动时播放一段视频,实现方式如下:

准备一个视频: Logo.mp4

添加到资源中:Assets

然后将资源设置为 AndroidAsset

启动时,将资源文件拷贝到程序目录的files下:

 protected override void OnCreate(Bundle savedInstanceState){base.OnCreate(savedInstanceState);            Xamarin.Essentials.Platform.Init(this, savedInstanceState);global::Xamarin.Forms.Forms.Init(this, savedInstanceState);LoadApplication(new App());Instance = this;CopyFileToDataFolder("Logo.mp4");}/// <summary>/// 将资源拷贝到files目录/// </summary>/// <param name="fileName"></param>private void CopyFileToDataFolder(string fileName){using (var sourceFile = Assets.Open(fileName)){var destFile = Path.Combine(FilesDir.AbsolutePath, fileName);if (!File.Exists(destFile)){using (var destStream = new FileStream(destFile, FileMode.Create, FileAccess.Write)){sourceFile.CopyTo(destStream);}}}}

接着Nuget添加视频控件包:Xamarin Community Toolkit   注意兼容版本

Xamarin Community Toolkit  要求Xamarin.Forms 最低版本为5.0.0.2291   更新到这个版本即可(稳定一些,最新版本有其他兼容性问题)

在UI上添加 视频播放控件 MediaElement:

xmlns:vid="clr-namespace:Xamarin.CommunityToolkit.UI.Views;assembly=Xamarin.CommunityToolkit"<vid:MediaElementx:Name="videoPlayer"Aspect="AspectFill"AutoPlay="True"HorizontalOptions="Fill"ShowsPlaybackControls="False"VerticalOptions="Fill" />

最后,在App启动时,添加播放视频的代码


var assembly = System.Reflection.Assembly.GetExecutingAssembly();
//获取程序文件目录 即files 目录  -- Logo.mp4资源的拷贝目录
string baseUri = DependencyService.Get<ILocalIPAddress>().GetBaseDirectory();
string uri = baseUri + "/Logo.mp4";
if (System.IO.File.Exists(uri))
{//播放文件MediaSource ms = MediaSource.FromFile(uri);var videoPlayer = UIElement.FindByName<MediaElement>("videoPlayer");videoPlayer.Source = ms;videoPlayer.MediaEnded += ((object sender, EventArgs e) =>{//播放完成后的处理事件Thread.Sleep(500);});
}

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

4070显卡只要一毛钱?这个双十一太疯狂了

2024年双十一大战正酣&#xff0c;各大商家使尽浑身解数&#xff0c;奇招频出&#xff0c;真是让人看得目瞪口呆。每日口令红包、攒火力值领裂变红包、限时抢免定金红包……还有各类满减和打折优惠活动&#xff0c;玩法千奇百怪&#xff0c;算来算去索性放弃&#xff0c;真是没…

C++优选算法四 前缀和

前缀和算法是一种常用的优化技术&#xff0c;主要用于加速某些涉及连续子数组或子序列求和的问题。 一、定义与原理 定义&#xff1a;前缀和是指数组中某个位置之前&#xff08;包括该位置&#xff09;所有元素的和。前缀和算法则是通过提前计算并存储这些前缀和&#xff0c;…

yum安装指定版本Redis

一&#xff0c;yum安装Redis 1&#xff0c;列出可用的redis版本 yum --showduplicates list redis 只有5.0.3.5版本&#xff0c;如果已经满足需求&#xff0c;可以直接安装 2&#xff0c;安装redis yum -y install 如果显示installed&#xff0c; 说明安装成功了 也可以通过…

DAY21|二叉树Part08|LeetCode: 669. 修剪二叉搜索树、108.将有序数组转换为二叉搜索树、538.把二叉搜索树转换为累加树

目录 LeetCode: 669. 修剪二叉搜索树 基本思路 C代码 LeetCode: 108.将有序数组转换为二叉搜索树 基本思路 C代码 LeetCode: 538.把二叉搜索树转换为累加树 基本思路 C代码 LeetCode: 669. 修剪二叉搜索树 力扣代码链接 文字讲解&#xff1a;LeetCode: 669. 修剪二叉搜…

HarmonyOS基础:鸿蒙系统组件导航Navigation

大家好&#xff01;我是黑臂麒麟&#xff08;起名原因&#xff1a;一个出生全右臂自带纹身的高质量程序员&#x1f60f;&#xff09;&#xff0c;也是一位6&#xff08;约2个半坤年&#xff09;的前端&#xff1b; 学习如像练武功一样&#xff0c;理论和实践要相结合&#xff0…

​Houdini云渲染如何使用?如何让一个镜头使用成百上千台机器渲染,提高渲染效率

​Houdini云渲染如何使用&#xff1f;如何让一个镜头使用成百上千台机器渲染&#xff0c;提高渲染效率呢&#xff0c;最简单的教程来了&#xff01; 第一步&#xff1a;云渲码6666注册成都渲染101&#xff0c;并且下载渲染101客户端 客户端是上传下载的工具&#xff0c;将文件…

如何使用Varjo直接观看Blender内容

最近&#xff0c;开源的3D建模程序Blender为Varjo提供了出色的OpenXR支持&#xff0c;包括四视图和凹进渲染扩展。但是在Blender中&#xff0c;默认不启用VR场景检查。要开始使用VR场景检查&#xff0c;只需遵循以下步骤&#xff1a; 1. 下载并安装Blender 2.启用Blender VR场景…

linux 安装anaconda3

1.下载 使用repo镜像网址下载对应安装包 右击获取下载地址&#xff0c;使用终端下载 wget https://repo.anaconda.com/archive/Anaconda3-2024.02-1-Linux-x86_64.sh2.安装 使用以下命令可直接指定位置 bash Anaconda3-2024.02-1-Linux-x86_64.sh -b -p /home/anaconda3也…

JavaScript。—关于语法基础的理解—

一、程序控制语句 JavaScript 提供了 if 、if else 和 switch 3种条件语句&#xff0c;条件语句也可以嵌套。 &#xff08;一&#xff09;、条件语句 1、单向判断 &#xff1a; if... &#xff08;1&#xff09;概述 < if >元素用于在判断该语句是否满足特定条…

DDD学习笔记

DDD学习笔记 1. 什么是 DDD&#xff1f; 领域驱动设计&#xff08;Domain-Driven Design, DDD&#xff09;是一种复杂软件系统设计的方法&#xff0c;强调以业务领域为核心进行设计与开发。它通过将业务逻辑与代码组织紧密结合&#xff0c;帮助开发团队更好地理解和实现业务需…

c语言简单编程练习8

1、递归函数&#xff1a; 通过调用自身来解决问题的函数&#xff0c;递归也就是传递和回归&#xff1b; 递归函数的两个条件&#xff1a; 1&#xff09;函数调用函数本身 2&#xff09;一定要有结束条件 循环与递归的区别&#xff1a; 每调用一次递归函数&#xff0c;都会…

如何将MySQL彻底卸载干净

目录 背景&#xff1a; MySQL的卸载 步骤1&#xff1a;停止MySQL服务 步骤2&#xff1a;软件的卸载 步骤3&#xff1a;残余文件的清理 步骤4&#xff1a;清理注册表 步骤五:删除环境变量配置 总结&#xff1a; 背景&#xff1a; MySQL卸载不彻底往往会导致重新安装失败…

linux-环境变量

环境变量是系统提供的一组 name value 的变量&#xff0c;不同的变量有不同的用途&#xff0c;通常都具有全局属性 env 查看环境变量 PATH PATH是一个保存着系统指令路径的一个环境变量&#xff0c;系统提供的指令不需要路径&#xff0c;直接就可以使用就是因为指令的路径…

IDEA修改生成jar包名字的两种方法实现

IDEA修改生成jar包名字的两种方法实现 更新时间&#xff1a;2023年08月18日 11:45:36 作者&#xff1a;白白白鲤鱼 本文主要介绍了IDEA修改生成jar包名字的两种方法实现,通过简单的步骤,您可以修改项目名称并在打包时使用新的名称,具有一定的参考价值,感兴趣的可以了解下 …

【Java Web】JSP实现数据传递和保存(中)中文乱码 转发与重定向

文章目录 中文乱码转发与重定向转发重定向区别 升级示例1 中文乱码 JSP 中默认使用的字符编码方式&#xff1a;iso-8859-1&#xff0c;不支持中文。常见的支持中文的编码方式及其收录的字符&#xff1a; gb2312&#xff1a;常用简体汉字gbk&#xff1a;简体和繁体汉字utf-8&a…

ROS话题通信机制理论模型的学习

话题通信是ROS&#xff08;Robot Operating System&#xff0c;机器人操作系统&#xff09;中使用频率最高的一种通信模式&#xff0c;其实现模型主要基于发布/订阅模式。 一、基本概念 话题通信模型中涉及三个主要角色&#xff1a; ROS Master&#xff08;管理者&#xff0…

【Ai教程】Ollma安装 | 0代码本地运行Qwen大模型,保姆级教程来了!

我们平时使用的ChatGPT、kimi、豆包等Ai对话工具&#xff0c;其服务器都是部署在各家公司的机房里&#xff0c;如果我们有一些隐私数据发到对话中&#xff0c;很难保证信息是否安全等问题&#xff0c;如何在保证数据安全的情况下&#xff0c;又可以使用大预言模型&#xff0c;O…

从工作原理上解释为什么MPLS比传统IP方式高效?

多协议标签交换&#xff08;Multiprotocol Label Switching, MPLS&#xff09;是一种用于高速数据包转发的技术。它通过在网络的入口点对数据包进行标签操作&#xff0c;然后在核心网络内部基于这些标签来快速转发数据包&#xff0c;从而提高了数据传输效率。以下是几个方面解释…

以命令行形式执行Postman脚本(使用Newman)

一、背景 ​ Postman的操作离不开客户端。但是在一些情况下可能无法使用客户端去进行脚本执行。比如在服务端进行接口测试。由此我们引入了Newman。Newman基于Node.js开发&#xff0c;它使您可以直接从命令行轻松运行和测试Postman测试集。它在构建时考虑了可扩展性&#xff0c…

国内手机号Google账号(gmail)注册教程

注意&#xff01;&#xff01;本篇只适用于未注册过或未修改过的萌新用户&#xff01;&#xff01;&#xff01;&#xff01;&#xff08;我注册第二个账号时就通过不了了&#xff09; 国内手机号码如何创建Google&#xff08;谷歌&#xff09;账号&#xff0c;我们会发现&…