AvPlayer 正在下载 mp3 而不是流式传输

Posted

技术标签:

【中文标题】AvPlayer 正在下载 mp3 而不是流式传输【英文标题】:AvPlayer is downloading mp3 instead of streaming 【发布时间】:2019-09-24 06:30:26 【问题描述】:

当我想流式传输 mp3 文件时,我正在创建一个应用程序。我正在使用 AvPlayer 类。 当我创建 avplayer 实例时,我将文件 uri 放入构造函数中,例如:

_player = AVPlayer.FromUrl(NSUrl.FromString("Url");
_player.Play();

这是一个 c# 代码,但我认为它与 swift 非常相似。 当我调用播放方法时,mp3 文件正在下载而不是流式传输。我尝试播放长 mp3 文件(大约 50 分钟)并且加载确实需要很长时间。加载结束时,播放 mp3,但是当我关闭互联网连接并搜索到最后时,播放继续。

我如何告诉 avplayer 他必须流式传输。 我发现了一个 SO 问题 Why AVPlayer downloading first instead live streaming? 但没有解决方案。

android MediaPlayer 流式传输此 mp3 没有任何问题。

【问题讨论】:

Xamarin 论坛有一个例子,检查github.com/xamarin/ios-samples/tree/master/StreamingAudio ***.com/a/19791333/4984832 @PrakashShaiva 我找到了那个,但如果可能的话我想使用 AvPlayer。 @SushiHangover 这是一个七岁的答案。这仍然有效吗? 【参考方案1】:

从 iOS 10 开始,将AutomaticallyWaitsToMinimizeStalling 设置为false 或自定义延迟时间:

public override void ViewDidLoad ()

    base.ViewDidLoad ();
    // Perform any additional setup after loading the view, typically from a nib.

    AVPlayerItem item = new AVPlayerItem(new NSUrl("https://www.soundhelix.com/examples/mp3/SoundHelix-Song-1.mp3"));
    AVPlayer _player = new AVPlayer(item);
    _player.AutomaticallyWaitsToMinimizeStalling = false;
    _player.Play();

参考:avplayer-stops-playing-video-after-buffering

【讨论】:

以上是关于AvPlayer 正在下载 mp3 而不是流式传输的主要内容,如果未能解决你的问题,请参考以下文章

通过 AvPlayerItem 和 AvPlayer 流式传输时监控下载的字节数 - iOS

流式传输 MP3 而不是使用 HTML5 音频标签下载它

在 Swift 3 中从服务器流式传输 mp3 文件

为啥这个 mp3 文件没有流式传输 [重复]

AVPlayer/AudioPlayer:没有错误但没有声音

从网络服务器流式传输音频