我正在尝试使用TVVLCKit和MobileVLCKit获得远程媒体的元信息或轨道信息,但tracks信息仅返回一个空数组。
这是我的代码
import UIKit
import TVVLCKit
class ViewController: UIViewController, VLCMediaDelegate, VLCMediaPlayerDelegate {
var mediaPlayer = VLCMediaPlayer()
@IBOutlet weak var videoView: UIView!
override func viewDidLoad() {
super.viewDidLoad()
let url = URL(string : "https://www.sample-videos.com/video123/mp4/720/big_buck_bunny_720p_10mb.mp4")
let media = VLCMedia(url: url!)
mediaPlayer.media = media
mediaPlayer.delegate = self
mediaPlayer.drawable = self.videoView
mediaPlayer.play()
mediaPlayer.media.parse(withOptions: VLCMediaParsingOptions(VLCMediaParseLocal | VLCMediaFetchLocal | VLCMediaParseNetwork | VLCMediaFetchNetwork))
print("Tracks information = \(mediaPlayer.media.tracksInformation)")
print("Meta Dictionary = \(mediaPlayer.media.metaDictionary)")
}
}
输出为
Tracks information = []
Meta Dictionary = [AnyHashable("title"): big_buck_bunny_720p_10mb.mp4]
我自己编译了TVVLCKit,从VLCLibrary.m中删除了无统计信息,并从黑名单过滤器中删除了统计信息。
有人遇到过这种情况,请知道解决方法吗?
您需要等待,直到VLC完成对媒体的解析。解析是异步的,因此您要查找的数据一旦完成就不会完成创建。等待相应的事件被触发,然后获取信息。 stats模块与此无关。统计信息仅用于回放(例如处理了多少个数据包,..)。