我正在使用vlcj DefaultEmbeddedMediaPlayer
的实例播放视频。将字幕添加到视频时,我想查看字幕文件是否有效,如果不是,则抛出Exception。这是我的代码:
File subtitlesFile = new File("subs.srt");
player.setSubTitleFile(subTitleFile);
方法setSubTitleFile(File subTitleFile)
没有返回值,但是查看它的实现,我可以看到它将调用传递给libvlc,调用了libvlc_video_subtitle_file(libvlc_media_player_t p_mi, String psz_subtitle)
,该方法返回了1
或{ {1}}取决于字幕是否已成功添加。因此,我从0
继承并编写了该方法的自己的版本:
DefaultEmbeddedMediaPlayer
令人惊讶的是,这总是给我身份public void setSubTitleFile(String subTitleFileName) {
final int status = libvlc.libvlc_video_set_subtitle_file(mediaPlayerInstance(), subTitleFileName);
System.out.println(status);
// throw Exception if status is false
}
,这意味着成功。即使我传递的是空文本文件。这是错误吗?我真的不想事先手动解析字幕文件。使用本机VLC播放器,如果字幕无效,则会出现预期的错误。我在这里能做什么?
编辑: 这是来自本地VLC播放器的屏幕快照,是在播放过程中添加空的SRT文件时得到的。 VLC subtitles file error
答案 0 :(得分:0)
据我所知,当您调用libvlc_video_set_subtitle_file时,LibVLC / VLC没有解析字幕文件。它基本上要做的就是在某些本机结构上设置一个字符串值,稍后将使用它。因此,您的状态为“成功”,因为该调用完成了设置该字符串值的工作。
因此,只有在VLC开始播放媒体并在此时尝试加载该文件时,您才知道字幕文件是否有效。即使那样,我认为您也不会收到特定的错误消息-只会缺少字幕轨道。