Pez*_*eza 5 audio audio-streaming http-streaming ios swift
我有一个来自 http 响应的音频数据流。我使用URLSessionDataDelegate方法接收字节数据包:
urlSession(_ session: URLSession, dataTask: URLSessionDataTask, didReceive data: Data)
在使用AVAudioPlayer对象及其initWithData:初始化方法将所有数据包附加到单个 Data 对象后,我成功播放了音频。
我真正想做的是在数据仍在传入的同时开始音频播放 -有效地流式传输音频。对于这个用例,我还没有看到任何看起来很优雅的答案。
我见过的选项是:
我将如何从传入的数据包中实现音频流播放?
最简单的方法是使用AVPlayer框架AVFoundation。使用您的 URL 实例化 playerItem 并将其传递给播放器。以下代码将为您提供帮助。
let urlString = "your url string"
guard let url = URL.init(string: urlString)
else {
return
}
let playerItem = AVPlayerItem.init(url: url)
player = AVPlayer.init(playerItem: playerItem)
player.play()
Run Code Online (Sandbox Code Playgroud)
考虑AVPlayer您的要求,如下所示:
import AVKit
var player: AVPlayer?
func audioPlayer() {
do {
try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback)
player = AVPlayer(url: URL.init(string: "your url")!)
//This is for a player screen, if you don't want to show a player screen you comment this part
let controller = AVPlayerViewController()
controller.player = player
controller.showsPlaybackControls = false
self.addChildViewController(controller)
let screenSize = UIScreen.main.bounds.size
let videoFrame = CGRect(x: 0, y: 130, width: screenSize.width, height: (screenSize.height - 130) / 2)
controller.view.frame = videoFrame
self.view.addSubview(controller.view)
// till here
player?.play()
} catch {
}
}
Run Code Online (Sandbox Code Playgroud)
欲了解更多信息,请阅读:https ://developer.apple.com/documentation/avfoundation/avplayer
| 归档时间: |
|
| 查看次数: |
11056 次 |
| 最近记录: |