如何使用swift只在已知的时间内stream式传输audio
我使用的AVPlayer(我不需要,但我想stream,尽快开始播放)播放m4a文件(这是一个iTunesaudio预览)。 只有我只想让它扮演那个文件的一部分。 我可以设置开始时间,但不是结束时间。
使用计时器不起作用,因为我使用URL作为http地址。 我正在玩,因为它没有下载文件。
我也看到了Objective-C中的解决scheme,使用KVO来了解音乐什么时候开始播放,但我认为这不是最好的方法,因为我使用的是快捷方式,也是因为可能发生的故障,所以歌曲不会停在正确的时刻。
任何帮助? 任何build议? 谢谢
你可以添加一个addBoundaryTimeObserverForTimes到你的AVPlayer,如下所示:
更新: Xcode 8.3.2•Swift 3.1
import UIKit import AVFoundation class ViewController: UIViewController { var player: AVPlayer! var observer: Any! override func viewDidLoad() { super.viewDidLoad() guard let url = URL(string: "https://www.example.com/audio.mp3") else { return } player = AVPlayer(url: url) let boundary: TimeInterval = 30 let times = [NSValue(time: CMTimeMake(Int64(boundary), 1))] observer = player.addBoundaryTimeObserver(forTimes: times, queue: nil) { [weak self] time in print("30s reached") if let observer = self?.observer { self?.player.removeTimeObserver(observer) } self?.player.pause() } player.play() print("started loading") } }
- 正在播放video时,允许“自动locking”
- MPMoviePlayerViewController观察'_serverConnectionDiedNotification'
- AVCaptureMovieFileOutput后用AVPlayer播放video
- 使用远程io进行录制,并使用AVPlayer连续播放ipodaudio库
- 如何caching一个AVPlayerItem(video)在UITableview中重用
- 从AVPlayer获取HLS的PCM数据
- 如何replaceMPMoviePlayer通知?
- 如何在iOS上用MPMoviePlayerController或AVPlayer播放没有文件扩展名的电影文件?
- AVPlayer:如何处理networking中断