使用Xamarin MediaManager流式传输音频

时间:2018-04-30 22:46:09

标签: c# android xamarin xamarin.android audio-streaming

我正在构建一个使用MediaManager播放音频的Android Xamarin应用。

播放本地mp3文件甚至像这样的文件:https://ia800806.us.archive.org/15/items/Mp3Playlist_555/AaronNeville-CrazyLove.mp3效果很好。

但我无法通过以下链接播放视频:“http://stream.radiosai.net:8002/

    private readonly IMediaManager mediaPlayer;
    public IMediaManager MediaPlayer => mediaPlayer;
    public IMediaQueue Queue => mediaPlayer.MediaQueue;
    public IMediaFile CurrentTrack => Queue.Current;
   //..
   mediaPlayer = CrossMediaManager.Current;
   //..
   Queue.Clear();
   var mediaUrls =
        new[] {                            
     "https://ia800806.us.archive.org/15/items/Mp3Playlist_555/AaronNeville-CrazyLove.mp3",
     "http://stream.radiosai.net:8002/"
   };

   foreach (var mediaUrl in mediaUrls)
   {
     Queue.Add(new MediaFile() { Type = MediaFileType.Audio, Url = mediaUrl });
   }

第一个链接有效,但第二个没有,我在这里缺少什么?

Ps:可以找到完整的样本here

2 个答案:

答案 0 :(得分:0)

您是否尝试使用Exoplayer?

((MediaManagerImplementation)CrossMediaManager.Current).MediaSessionManager = new MediaSessionManager(Application.Context, typeof(ExoPlayerAudioService));
var exoPlayer = new ExoPlayerAudioImplementation(((MediaManagerImplementation)CrossMediaManager.Current).MediaSessionManager);
CrossMediaManager.Current.AudioPlayer = exoPlayer;

答案 1 :(得分:0)

问题似乎是您没有等待足够长的时间来初始化MediaManager(即基础ExoPlayer)。 尝试参加此活动:

MediaManager.Current.PropertyChanged += propertyChanged;

然后,这就是我要做的:

private void propertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
{
    if (e.PropertyName == "IsInitialized")
    {
        init();
    }
}

我刚刚发现我的错误/解决方案,所以可能会有更优雅的解决方案。 但是我摆脱了例外-是的

相关问题