使用 vlcj 验证字幕文件 (Java)
Validate subtitles file using vlcj (Java)
我正在使用 vlcj DefaultEmbeddedMediaPlayer
的一个实例来播放视频。在为视频添加字幕时,我想查看字幕文件是否有效,如果无效则抛出异常。这是我的代码:
File subtitlesFile = new File("subs.srt");
player.setSubTitleFile(subTitleFile);
方法 setSubTitleFile(File subTitleFile)
没有 return 值,但查看它的实现我可以看到它将调用传递给 libvlc,调用 libvlc_video_subtitle_file(libvlc_media_player_t p_mi, String psz_subtitle)
,returns 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
}
令人惊讶的是,这总是给我状态 1
,这意味着成功。即使我传递的是空文本文件。这是一个错误吗?我真的不想事先手动解析字幕文件。使用本机 VLC 播放器,如果字幕无效,我会收到预期的错误。我可以在这里做些什么?
编辑:
这是在播放过程中添加空 SRT 文件时来自本机 VLC 播放器的屏幕截图。
VLC subtitles file error
据我所知,当您调用libvlc_video_set_subtitle_file时,LibVLC/VLC并没有解析字幕文件。它基本上所做的就是在稍后将使用的某些本机结构上设置一个字符串值。因此,您获得 "success" 的状态,因为该调用完成了设置该字符串值的工作。
因此,只有当 VLC 开始播放您的媒体并尝试加载该文件时,您才会知道字幕文件是否有效。即便如此,我认为您不会收到特定的错误消息 - 只是缺少字幕轨道。
我正在使用 vlcj DefaultEmbeddedMediaPlayer
的一个实例来播放视频。在为视频添加字幕时,我想查看字幕文件是否有效,如果无效则抛出异常。这是我的代码:
File subtitlesFile = new File("subs.srt");
player.setSubTitleFile(subTitleFile);
方法 setSubTitleFile(File subTitleFile)
没有 return 值,但查看它的实现我可以看到它将调用传递给 libvlc,调用 libvlc_video_subtitle_file(libvlc_media_player_t p_mi, String psz_subtitle)
,returns 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
}
令人惊讶的是,这总是给我状态 1
,这意味着成功。即使我传递的是空文本文件。这是一个错误吗?我真的不想事先手动解析字幕文件。使用本机 VLC 播放器,如果字幕无效,我会收到预期的错误。我可以在这里做些什么?
编辑: 这是在播放过程中添加空 SRT 文件时来自本机 VLC 播放器的屏幕截图。 VLC subtitles file error
据我所知,当您调用libvlc_video_set_subtitle_file时,LibVLC/VLC并没有解析字幕文件。它基本上所做的就是在稍后将使用的某些本机结构上设置一个字符串值。因此,您获得 "success" 的状态,因为该调用完成了设置该字符串值的工作。
因此,只有当 VLC 开始播放您的媒体并尝试加载该文件时,您才会知道字幕文件是否有效。即便如此,我认为您不会收到特定的错误消息 - 只是缺少字幕轨道。