使用vlcj(Java)验证字幕文件

时间:2018-12-14 08:28:36

标签: java vlc libvlc subtitle vlcj

我正在使用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

1 个答案:

答案 0 :(得分:0)

据我所知,当您调用libvlc_video_set_subtitle_file时,LibVLC / VLC没有解析字幕文件。它基本上要做的就是在某些本机结构上设置一个字符串值,稍后将使用它。因此,您的状态为“成功”,因为该调用完成了设置该字符串值的工作。

因此,只有在VLC开始播放媒体并在此时尝试加载该文件时,您才知道字幕文件是否有效。即使那样,我认为您也不会收到特定的错误消息-只会缺少字幕轨道。