赛马林。加载 mp3 以通过 MediaPlayer 播放时遇到问题:FileNotFoundException

Posted

技术标签:

【中文标题】赛马林。加载 mp3 以通过 MediaPlayer 播放时遇到问题:FileNotFoundException【英文标题】:Xamarin. Got an issue with loading mp3 to play via MediaPlayer: FileNotFoundException 【发布时间】:2017-07-31 12:27:13 【问题描述】:

我通过 Monogame (C#) 为 android 创建了一个应用程序。为了减小我的 .apk 大小,我决定不使用 Content Pipeline 进行音频。我发现我可以将 raw mp3 与 Song.FromUri() 方法一起使用。使用下一个代码

Song mySong;
//...
mySong = Song.FromUri("track01", new System.Uri("audio.mp3", System.UriKind.Relative));
//...
MediaPlayer.Play(mySong);

我得到了异常“未处理的异常:Java.IO.FileNotFoundException:track01”

MediaPlayer.Play(mySong);

,但我在主文件夹中有文件“audio.mp3”。 Solution Screenshot

将属性“构建操作”更改为“无”/“内容”/“AndroidAsset”并将“复制到输出目录”更改为“始终复制”并没有带来任何新内容。 我搜索了解决方案,但似乎没有人有同样的问题,或者他们很容易解决。我遇到的唯一类似问题here,但他们的解决方案没有帮助。 你有什么想法可以帮助我吗?谢谢。

【问题讨论】:

【参考方案1】:

我不确定 Song.FromUri 方法,但这就是我使用声音文件的方式。

        var player = new MediaPlayer();
        var fd = global::Android.App.Application.Context.Assets.OpenFd("sounds/Wrong.mp3");
        player.Prepared += (s, e) =>
        
            player.Start();
        ;
        player.SetDataSource(fd.FileDescriptor, fd.StartOffset, fd.Length);
        player.Prepare();

我将 Wrong.mp3 保存在 Assets/sounds 文件夹中

【讨论】:

谢谢,您的解决方案有效。我认为这是我需要的。【参考方案2】:

难道不能把音频文件放到资源里吗?

如果您打开项目属性,应该有一个资源选项卡。在此选项卡中,您应该能够添加不同的值(字符串、图像等),包括音频文件。如果您已在此处添加此内容,则应该可以通过资源管理器访问它。

如果这行得通,请告诉我!

【讨论】:

恐怕我做不到,因为Android Xamarin项目中没有Resource选项卡。只有Application/Android Manifest/Android Options/Build/Build Events/Reference Paths。顺便说一句,我检查了我的 Windows 窗体应用程序中有资源选项卡。无论如何,谢谢你的回答。

以上是关于赛马林。加载 mp3 以通过 MediaPlayer 播放时遇到问题:FileNotFoundException的主要内容,如果未能解决你的问题,请参考以下文章

React JS,webpack 配置不正确以加载 mp3 播放器

渊子赛马

TZOJ 3134: 渊子赛马修改版

2023年美赛数学建模B题思路模型分析(重新构想马赛马拉岛)

通过python将MP3转换为midi(TypeError:加载插件失败:mtg-melodia:melodia)

在 jQuery 中预加载 wav/mp3 文件