libVLC:我怎么知道字幕(文本轨道)是外部的还是视频容器文件的一部分?
libVLC: How do I know if subtitles (text track) are external or part of video container file?
当为 Android 使用 libVLC 时,我如何知道 字幕 (文本轨道)是否 外部 (.srt, ass) 或部分视频容器文件 (text轨道内 .mkv)?
https://code.videolan.org/videolan/libvlc-android-samples
https://code.videolan.org/videolan/vlc-android
// MediaPlayer.getSpuTracks() - Get the list of available spu (subtitle) tracks.
MediaPlayer.TrackDescription[] trackDescriptions = mMediaPlayer.getSpuTracks();
for (int i = 1; i < trackDescriptions.length; i++) {
MediaPlayer.TrackDescription description = trackDescriptions[i];
Log.i(TAG, "loadSpuTrack " + description.name + ", id " + description.id);
}
输出
loadSpuTrack Track 1, id 2
loadSpuTrack Track 2, id 3
loadSpuTrack Track 3, id 4
loadSpuTrack Track 4, id 5
loadSpuTrack Track 5, id 6
它只是从视频文件 (.mkv) 的父文件(目录)和视频文件本身搜索并添加所有外部文本轨道文件(.srt、.ass)
但是没有API(MediaPlayer
或LibVLC
类中的Java方法)来识别添加的字幕是外部的还是内部的(来自视频文件容器),无法禁用添加外部字幕的方法
有什么解决办法吗?
如果在列表末尾添加外部字幕(从属),这应该有效(将有助于确定外部字幕):
当为 Android 使用 libVLC 时,我如何知道 字幕 (文本轨道)是否 外部 (.srt, ass) 或部分视频容器文件 (text轨道内 .mkv)?
https://code.videolan.org/videolan/libvlc-android-samples
https://code.videolan.org/videolan/vlc-android
// MediaPlayer.getSpuTracks() - Get the list of available spu (subtitle) tracks.
MediaPlayer.TrackDescription[] trackDescriptions = mMediaPlayer.getSpuTracks();
for (int i = 1; i < trackDescriptions.length; i++) {
MediaPlayer.TrackDescription description = trackDescriptions[i];
Log.i(TAG, "loadSpuTrack " + description.name + ", id " + description.id);
}
输出
loadSpuTrack Track 1, id 2
loadSpuTrack Track 2, id 3
loadSpuTrack Track 3, id 4
loadSpuTrack Track 4, id 5
loadSpuTrack Track 5, id 6
它只是从视频文件 (.mkv) 的父文件(目录)和视频文件本身搜索并添加所有外部文本轨道文件(.srt、.ass)
但是没有API(MediaPlayer
或LibVLC
类中的Java方法)来识别添加的字幕是外部的还是内部的(来自视频文件容器),无法禁用添加外部字幕的方法
有什么解决办法吗?
如果在列表末尾添加外部字幕(从属),这应该有效(将有助于确定外部字幕):