Android隐式意图从UPnP服务器到VLCMedia播放器播放带字幕的视频

时间:2018-10-31 01:21:09

标签: android vlc upnp dlna cling

目前,我正在制作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媒体播放器,手动发现,手动浏览媒体服务器,然后以这种方式播放电影,并且还提供所选电影的字幕。因此可以确定服务器为客户端提供了字幕选项。

在此先感谢您的帮助。

0 个答案:

没有答案