【问题标题】:Receiving metadata from .pls in Swift 2 Xcode 7在 Swift 2 Xcode 7 中从 .pls 接收元数据
【发布时间】:2016-02-13 03:29:21
【问题描述】:

我正在编写一个广播应用程序,并希望从 .pls 格式的 url 和以下代码中获取元数据:

var PlayerItem: AVPlayerItem!
var asset :  AVAsset? // init with url of .pls format

PlayerItem = AVPlayerItem(asset: asset!)
PlayerItem.addObserver(self, forKeyPath: "timedMetadata" [...]

PlayerItem.timedMetadata - is always nil or 0

我应该添加什么来接收元数据?

【问题讨论】:

    标签: swift url metadata radio


    【解决方案1】:

    快速 Swift 2 实现:

    var player: AVPlayer!
    var playerItem: AVPlayerItem!
    
    override func viewDidLoad() {
        super.viewDidLoad()
        ....
        playerItem = AVPlayerItem(URL: NSURL(string: <streamURL>)!)
        player = AVPlayer(playerItem: playerItem)
    
        // To be informed when metadata changes  
        playerItem.addObserver(self, forKeyPath: "timedMetadata", options: [], context: nil)
    }
    
    override func observeValueForKeyPath(keyPath: String?, ofObject object: AnyObject?, change: [String : AnyObject]?, context: UnsafeMutablePointer<Void>) {  
        // Get medatata, making sure to support a wider range of characters
        let origMetaTitle = (playerItem.timedMetadata?.first?.stringValue?.dataUsingEncoding(NSISOLatin1StringEncoding, allowLossyConversion: true))!
        let convertedMetaTitle = String(data: origMeta, encoding: NSUTF8StringEncoding)!
        ....
        }
    
    deinit {
        // Be a good citizen
        playerItem.removeObserver(self, forKeyPath: "timedMetadata")
    }
    

    【讨论】:

      猜你喜欢
      • 2015-10-24
      • 2014-12-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-24
      • 1970-01-01
      • 1970-01-01
      • 2015-10-16
      相关资源
      最近更新 更多