1

目前我正在制作 android 应用程序,它应该具有从 upnp 服务器到 android 上的 vlc 媒体播放器播放带字幕的电影的功能。问题是 vlc 媒体播放器无法识别与媒体相关的任何字幕。从我的应用程序执行意图后,媒体本身播放得非常好,唯一的问题是没有显示字幕(vlc 播放器中的字幕选项显示为灰色)。到目前为止,我一直在使用的技术如下:

Serviio upnp 媒体服务器,

Cling-core 和支持库 2.1.1,

和2个测试设备:

设备 1:API 26,VLC 播放器版本 3.0.13

设备 2:API 22,VLC 播放器版本 2.0.6

在 Serviio 媒体服务器上,电影包含在它们各自的目录中,以及代表它们的字幕的 .srt 文件。Cling 用于与媒体服务器交互(获取电影、元数据等)。与媒体服务器交互的代码是这样的:

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 媒体播放器,手动发现,手动浏览媒体服务器并播放电影它开始的方式,还为所选电影提供字幕。因此可以确定服务器为客户端提供字幕选项。

提前感谢您的帮助。

4

0 回答 0