swift - 在 Swift 2 Xcode 7 中从 .pls 接收元数据

标签 swift url metadata internet-radio

我正在编写一个广播应用程序,想要从 .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 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")
}

关于swift - 在 Swift 2 Xcode 7 中从 .pls 接收元数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33660736/

相关文章:

php - 使用 PHP 为目录中的文件显示 docx 属性(标题、标签)

swift - 如何将 MKUserLocation 转换为 CLLocation? - swift

ios - 在 Firebase 返回结果后为变量赋值?

url - Golang 提供主页并提供模板页面

java - 如何在 java 的确认邮件中准备 Web 应用程序的完整 URL

javascript - 使用 Javascript/HTML5 检索 Youtube 视频元数据

java - 使用 gson 从 URL 动态加载 JSON 元数据

ios - 应用程序在单元格初始化时崩溃

ios - '无效更新 : invalid number of items in section 0 in my collection view

python - Django NoReverseMatch 错误,美元符号添加到 url 模式