从代码设置.Net MAUI MediaElement源的方法是否正确?

1bqhqjot  于 2023-02-26  发布在  .NET
关注(0)|答案(2)|浏览(184)

我的问题:如何使用代码隐藏正确示例化MediaSource示例和/或MediaElement,以便我可以:

  • 在运行时以编程方式设置MediaElement源(它是FileSource)
  • 再次从代码中正确调用Play函数

我打算隐藏控制,因为我只是想能够有选择地发挥短的声音"效果"没有播放器控制可见。但首先...
WelcomeVoicePlayer是PageContent xaml中的一个名为MediaElement的元素。我尝试使用该元素来播放我在运行时设置的声音和/或在运行时在ContentPage代码中更改的声音。
不起作用的方法:

// Neither of these approaches to setting Source worked...
var voiceFile = FileMediaSource.FromFile(tempVoicePath);
//WelcomeVoicePlayer = new MediaElement { Source = voiceFile };
        
// When Play is called I hear nothing, even though audio file is good etc...
WelcomeVoicePlayer.Play();

乐意重新示例化控制,如果需要为每个新的来源,但仍然需要能够设置源代码。
任何线索都感激不尽。
戴夫·G
非常感谢所有把MediaElement带到毛伊岛的人!

sbdsn5lh

sbdsn5lh1#

您可以使用uri来设置mediaelement源:

WelcomeVoicePlayer.Source = new Uri("embed://MyFile.mp4");

以下是有关播放本地媒体的信息,您可以参考。

p1tboqfb

p1tboqfb2#

我觉得你的第一个选择已经很接近了。你可能想试试这个:

var voiceFile = MediaSource.FromFile(tempVoicePath);
WelcomeVoicePlayer = new MediaElement { Source = voiceFile };

一个完整的例子,我刚才看到自己的工作是:

var page = new ContentPage();
var stack = new VerticalStackLayout();
var mediaElement = new MediaElement
{
    ShouldAutoPlay = true,
    Source = MediaSource.FromFile("C:\\Users\\jfversluis\\Desktop\\video.mp4"),
};

stack.Children.Add(mediaElement);
page.Content = stack;

MainPage = page;

有一件事我想指出的是,文件系统的访问在Windows和macOS上是相当直接的,但在移动设备上可能不是。有更多的事情要处理,如权限,或者可能是从云提供商加载的文件,首先需要下载。
如果某些东西不起作用,您可能希望挂接MediaFailed事件,以获取更多有关出错原因的详细信息。
非常感谢所有把MediaElement带到毛伊岛的人!
不用谢!

相关问题