我用swift编写了一个使用vlckit框架的应用程序。我已经设法让字幕工作通过使用
let url = URL(string: "file://Users/lonespeaker/test-subitltle.srt")
mediaPlayer.addPlaybackSlave(url, type: .subtitle, enforce: true)但是,如果用户在选择一个字幕后想要禁用字幕,我就卡住了。
我试过以下几种方法,但没有成功
let url = URL(string: "")
mediaPlayer.addPlaybackSlave(url, type: .subtitle, enforce: true)我已经在谷歌上搜索了删除PlaybackSlave的答案,但似乎还没有解决这个问题的API。
以下是我的代码的摘录:
guard let url = URL(string: "file://Users/lonespeaker/test-file.mkv") else { return }
let media = VLCMedia(url: url)
mediaPlayer.media = media
mediaPlayer.delegate = self
mediaPlayer.drawable = self.movieView
mediaPlayer.play()然后在IBAction中禁用字幕
@IBAction func disableSubtitles(_ sender: Any) {
let url = URL(string: "")
mediaPlayer.addPlaybackSlave(url, type: .subtitle, enforce: true)
}我本以为PlaybackSlave会被新的网址更改/覆盖,因此会禁用字幕。
我还期望API调用禁用播放Slave,但似乎没有这样的调用。
有人能帮上忙吗?谢谢。
发布于 2019-10-25 18:11:37
你的方法太复杂了。您可以添加无限数量的播放从机,但此时使用VLCKit确实无法清除这些从机。
但是,VLC将在回放期间显示可用字幕轨道的列表,而不考虑其来源(您无法区分视频内部的字幕和通过输入从站添加的字幕),您可以迭代这些字幕并显示给用户。此外,还有播放器选项来设置您想要显示的字幕曲目ID。这些ID也可以从API中查询(注意,ID可以是0,1,2,...但它是完全合法的201,4022,8444,...,也)。但是,要仅禁用,请将此选项设置为-1。
发布于 2019-10-03 12:39:29
看起来它不是由vlckit公开的,但是libvlc确实提供了libvlc_media_slaves_clear。
您应该尝试在本地vlckit fork中添加对它的支持,如果有效,则打开一个拉取请求。其他人可能会感兴趣。
https://stackoverflow.com/questions/57937372
复制相似问题