如何流音频只有一个已知的持续时间使用swift



我正在使用AVPlayer(我不需要,但我想要流式传输并尽快开始播放)来播放m4a文件(这是iTunes音频预览)。只是我只想让它播放文件的一部分。我可以设置开始时间,但不能设置结束时间。

使用计时器不工作,因为我使用URL作为http地址。我在加载时播放,没有下载文件。

我也看到了解决方案在Objective-C中使用KVO知道音乐何时开始播放,但我认为这不是最好的方法,因为我使用swift,也因为可能发生的故障,所以歌曲不会在正确的时刻停止。

你可以添加一个addBoundaryTimeObserverForTimes到你的AVPlayer,如下所示:

更新: Xcode 3.1 8.3.2•斯威夫特

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")
    }
}

相关内容

  • 没有找到相关文章

最新更新