Xamarin 实现播放视频 MP4

news/2024/11/3 1:30:35/

我的想法是在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.ppmy.cn/news/1544021.html

相关文章

【C++】模板(入门+进阶)

「前言」 &#x1f308;个人主页&#xff1a; 代码探秘者 &#x1f308;C语言专栏&#xff1a;C语言 &#x1f308;C专栏&#xff1a; C / STL使用以及模拟实现 &#x1f308;数据结构专栏&#xff1a; 数据结构 / 十大排序算法 &#x1f308;Linux专栏&#xff1a; Linux系统编…

【网络面试篇】TCP与UDP类

目录 一、综述 1. TCP与UDP的概念 2. 特点 3. 区别 4. 对应的使用场景 二、补充 1. 基础概念 &#xff08;1&#xff09;面向连接 &#xff08;2&#xff09;可靠的 &#xff08;3&#xff09;字节流 2. 相关问题 &#xff08;1&#xff09;TCP 和 UDP 可以同时绑定…

ISO 26262与ISO 21434:汽车安全领域的双重保障与交汇探索

ISO 26262和ISO 21434都是关于汽车安全的国际标准&#xff0c;它们在汽车安全领域各自有不同的侧重点&#xff0c;但它们也存在交集。 ISO 26262是一个针对汽车行业的功能安全标准&#xff0c;它主要关注汽车电子和电气系统的安全性。这个标准从概念阶段开始&#xff0c;贯穿了…

微信小程序时间弹窗——年月日时分

需求 1、默认当前时间2、选择时间弹窗限制最大值、最小值3、每次弹起更新最大值为当前时间&#xff0c;默认值为上次选中时间4、 minDate: new Date(2023, 10, 1).getTime(),也可以传入时间字符串new Date(2023-10-1 12:22).getTime() html <view class"flex bb ptb…

src和href的区别

src和href都是HTML中用于指定资源地址的属性&#xff0c;但它们在用途、引用方式、对文档的影响以及适用范围等方面存在显著的区别。以下是对这两者的详细比较&#xff1a; 一、用途不同 src&#xff1a;主要用于嵌入到文档中的资源。它告诉浏览器去加载指定的资源&#xff0…

深入探索:深度学习在时间序列预测中的强大应用与实现

深入探索&#xff1a;深度学习在时间序列预测中的强大应用与实现 时间序列分析是数据科学和机器学习中的一个重要研究领域&#xff0c;广泛应用于金融市场、天气预报、能源管理、交通预测、健康监控等多个领域。时间序列数据具有顺序相关性&#xff0c;通常展示出时间上较强的…

kafka里的consumer 是推还是拉?

大家好&#xff0c;我是锋哥。今天分享关于【kafka里的consumer 是推还是拉&#xff1f;】面试题&#xff1f;希望对大家有帮助&#xff1b; kafka里的consumer 是推还是拉&#xff1f; 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 在Kafka中&#xff0c;消费者&…

雷池社区版compose配置文件解析-mgt

在现代网络安全中&#xff0c;选择合适的 Web 应用防火墙至关重要。雷池&#xff08;SafeLine&#xff09;社区版免费切好用。为网站提供全面的保护&#xff0c;帮助网站抵御各种网络攻击。 compose.yml 文件是 Docker Compose 的核心文件&#xff0c;用于定义和管理多个 Dock…