目前,我正在制作android应用程序,该应用程序应具有从upnp服务器到android上的vlc媒体播放器播放带有字幕的电影的功能。问题是vlc媒体播放器无法识别与媒体关联的任何字幕。从我的应用程序执行意图后,媒体本身的播放效果很好,唯一的问题是字幕没有显示出来(vlc Player中的字幕选项显示为灰色)。到目前为止,我一直在使用的技术如下:
Serviio upnp媒体服务器,
核心和支持库2.1.1,
和2个测试设备:
设备1:API 26,VLC播放器版本3.0.13
设备2:API 22,VLC播放器版本2.0.6
在Serviio上,媒体服务器上的电影以及代表其字幕的.srt文件都包含在它们各自的目录中。绑定用于与媒体服务器进行交互(获取电影,元数据等)。与媒体服务器交互的代码是这样的:
this.upnpService.getControlPoint().execute(new Browse(service, "V_M", BrowseFlag.DIRECT_CHILDREN) {
@Override
public void received(ActionInvocation arg0,
DIDLContent didl) {
int id = 0;
for (Item item : didl.getItems()){
movieParcelables.add(
new MovieParcelable(id,
item.getTitle(),
item.getFirstPropertyValue(DIDLObject.Property.DC.DESCRIPTION.class),
Integer.parseInt(item.getFirstPropertyValue(DIDLObject.Property.DC.DATE.class).substring(0, 4)),
item.getFirstPropertyValue(DIDLObject.Property.UPNP.ICON.class).toString(),
item.getFirstResource().getValue()));
id++;
}
这是为所选电影创建并启动意图的方法:
public void onPlayClick(View v){
//TODO implement play movie intent...
Uri uri = Uri.parse(movie.getmURL());
Intent vlcIntent = new Intent(Intent.ACTION_VIEW);
vlcIntent.addFlags(Intent.FLAG_GRANT_PERSISTABLE_URI_PERMISSION);
vlcIntent.addFlags(Intent.FLAG_GRANT_PREFIX_URI_PERMISSION);
vlcIntent.addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
vlcIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
vlcIntent.setDataAndTypeAndNormalize(uri, "video/*");
vlcIntent.putExtra("title", movie.getmTitle());
vlcIntent.putExtra("subtitles_location", movie.getmURL());
startActivity(vlcIntent);
}
猜想我错过了重要的事情,但不确定是什么。。。还值得一提的是,如果我自己一个人去vlc媒体播放器,手动发现,手动浏览媒体服务器,然后以这种方式播放电影,并且还提供所选电影的字幕。因此可以确定服务器为客户端提供了字幕选项。
在此先感谢您的帮助。