我第一次使用AVPlayer,我想用HTTP请求播放一个MP3文件。我使用的AVPlayer
可以很好地播放mp3文件,但问题是AVPlayer
需要先下载mp3,然后再播放。我不知道为什么AVPlayer
下载文件,然后播放它,而不是现场播放。我的Xcode 8.2.1和我使用的Swift 3。
这是我的代码片段。
var audioPlayer = AVPlayer()
var avplayerItem : AVPlayerItem?
override func viewDidLoad() {
super.viewDidLoad()
let fileurl:URL = URL(string : "http://www.noiseaddicts.com/samples_1w72b820/2514.mp3")!
avplayerItem = AVPlayerItem(url : fileurl)
audioPlayer = AVPlayer(playerItem : avplayerItem)
audioPlayer.rate = 1.0
audioPlayer.play()
}
如果AVPlayer
需要下载整个文件才能播放,音频直播应该怎么做?
谢谢
2条答案
按热度按时间m3eecexj1#
你基本上是使用mp3作为容器来在整个互联网上传输你的音频,所以播放器必须全部下载,如果你想使它有效或避免下载的延迟,你必须使用HLS,DASH,CMAF或WebRTC来传输它,所以播放器将按块下载它,并在下载时播放它,类似于Spotify或苹果音乐的东西。
tvz2xvvm2#
另外编辑:Luaan也是对的。* 直播需要服务器支持-至少能够进行部分下载。其他播放器是否允许使用该URL进行直播?* ”您还应该尝试使用未定义持续时间的声音URL。
你有没有试过把它当作一个未定义持续时间的音频流?
CachingPlayerItem将从URL准备AVURLAset。
初始化AVPlayerItem后,从中创建一个AVPlayer对象,以便它可以启动从给定URL加载音频流的过程:
安装资源后:
然后,开始将数据字节接收到delegate函数中:
现在您已经开始接收实时音频流。
现在创建一个OutputStream对象,打开它,然后附加我们在上面的delegate函数中接收到的字节,就是这样,我们保存了实时音频流的所需部分。
来源:Medium Article, Mohan Pandey