使用 AVplayer 在 swift3 中制作 class

Make class in swift3 with AVplayer

这是代码:

import Foundation
import UIKit
import AVFoundation

class MP3PLAYER {

    var player = AVPlayer()

    func PLAY (){

       player.play()

    }

    init ( url_ : String , autoplay_ : String , player_ : AVPlayer) {

       player = player_

       let url = url_

       let playerItem = AVPlayerItem( url:URL( string:url )! )
        player = AVPlayer(playerItem:playerItem)
        player.rate = 1.0;


        if autoplay_ == "YES" {
        player.play()
            print("autoplay is on")
        }

   }
}

这段代码没有错误甚至警告。

根本玩家不会玩。如果我将代码直接放在 viewController 中而不是播放器工作......

我在viewController中这样使用class:

<code>
import UIKit
import AVFoundation
class Mp3Stream_example: UIViewController {
    var player = AVPlayer()
    override func viewDidLoad() {
     super.viewDidLoad()
     let STREAM1 = MP3PLAYER(url_: "http://listen.181fm.com:181-soul_128k.mp3" , autoplay_: "YES" , player_ : player )
     STREAM1.player.play()
     //player.play()   
     .....
 </code>

您的播放器 STREAM1 超出范围并正在被释放,因此没有声音。使它成为 class 成员变量而不是局部变量。例如

class Mp3Stream_example: UIViewController {
    let STREAM1 = MP3PLAYER(url_: "http://listen.181fm.com:181-soul_128k.mp3" , autoplay_: "YES" , player_ : AVPlayer() )
     ....

P.S。您有不需要的额外 AVPlayer