is it possible to read metadata using HTTP live streaming in the iPhone SDK

后端 未结 4 925
被撕碎了的回忆
被撕碎了的回忆 2021-01-31 12:40

When playing a live stream using the HTTP Live Streaming method, is it possible read the current metadata (eg. Title and Artist)? This is for an iPhone radio app.

4条回答
  •  自闭症患者
    2021-01-31 12:45

    Swift solution. This is a sample of simple streaming audio player. You can read metadata in the method of delegate AVPlayerItemMetadataOutputPushDelegate.

    import UIKit
    import AVFoundation
    
    class PlayerViewController: UIViewController {
        var player = AVPlayer()
    
        override func viewDidLoad() {
            super.viewDidLoad()
            configurePlayer()
            player.play()
        }
    
        private func configurePlayer() {
            guard let url = URL(string: "Your stream URL") else { return }
            let asset = AVAsset(url: url)
            let playerItem = AVPlayerItem(asset: asset)
            let metadataOutput = AVPlayerItemMetadataOutput(identifiers: nil)
            metadataOutput.setDelegate(self, queue: DispatchQueue.main)
            playerItem.add(metadataOutput)
            player = AVPlayer(playerItem: playerItem)
        }
    }
    
    extension PlayerViewController: AVPlayerItemMetadataOutputPushDelegate {
        func metadataOutput(_ output: AVPlayerItemMetadataOutput, didOutputTimedMetadataGroups groups: [AVTimedMetadataGroup], from track: AVPlayerItemTrack?) {
            let item = groups.first?.items.first
            item?.value(forKeyPath: "value")
            print(item!.value(forKeyPath: "value")!)
        }
    }
    

提交回复
热议问题