如何从URL流音频而不在设备上下载mp3文件

use*_*333 1 audio url xcode ios swift

如何在Swift中从URL流音频而不在设备上下载mp3文件?我需要导入什么?我需要某些图书馆吗?将任何内容添加到info.plist吗?请注释您的代码。

Ani*_*mar 11

class MusicPlayer {
    public static var instance = MusicPlayer()
    var player = AVPlayer()

    func initPlayer(url: String) {
        guard let url = URL(string: url) else { return }
        let playerItem = AVPlayerItem(url: url)
        player = AVPlayer(playerItem: playerItem)
        playAudioBackground()
    }
    
    func playAudioBackground() {
        do {
            try AVAudioSession.sharedInstance().setCategory(AVAudioSession.Category.playback, mode: AVAudioSession.Mode.default, options: [.mixWithOthers, .allowAirPlay])
            print("Playback OK")
            try AVAudioSession.sharedInstance().setActive(true)
            print("Session is Active")
        } catch {
            print(error)
        }
    }
    
    func pause(){
        player.pause()
    }
    
    func play() {
        player.play()
    }
}
Run Code Online (Sandbox Code Playgroud)

该类将在后台播放音乐并播放任何音频/视频 URL。


Tai*_*man 8

您可以使用iOS AVPLayer从网址流式传输音频。

var player: AVPlayer!
let url  = URL.init(string:   "https://www.soundhelix.com/examples/mp3/SoundHelix-Song-1.mp3")

let playerItem: AVPlayerItem = AVPlayerItem(url: url!)
player = AVPlayer(playerItem: playerItem)

let playerLayer = AVPlayerLayer(player: player!)

playerLayer?.frame = CGRect(x: 0, y: 0, width: 10, height: 50)
        self.view.layer.addSublayer(playerLayer!)
player.play()
Run Code Online (Sandbox Code Playgroud)

  • 可以确认此代码在Swift 4中是否完美运行 (2认同)

小智 2

对于在线流媒体,您必须使用 AVFoundation 框架。

var player: AVPlayer!

let url = URL.init(string: "https://www.soundhelix.com/examples/mp3/SoundHelix-Song-1.mp3")
player = AVPlayer.init(url: url!)
Run Code Online (Sandbox Code Playgroud)

玩:

    player.play()
Run Code Online (Sandbox Code Playgroud)

暂停:

    player.pause()
Run Code Online (Sandbox Code Playgroud)

  • 您好,我尝试过,但没有播放任何内容。我已导入 AVFoundation 并导入 AVKit 并使用此代码,但歌曲无法播放。有什么建议么? (2认同)