Java LibVLC无法显示流式视频的字幕

Java LibVLC无法显示流式视频的字幕,java,android,video,libvlc,Java,Android,Video,Libvlc,我尝试在android设备上创建一个视频播放器,可以从本地服务器上播放视频。我找到了一个例子。我遵循了指南,最终我能够在我的设备上播放本地视频。然后我开始修改这个项目。我将VideoActivity设置为launcher活动,并注释掉以前活动中收到的所有数据。我从中修改了媒体的初始化 Media m = new Media(libvlc, media); mMediaPlayer.setMedia(m); 到 添加了2个新方法(如您所见,这些方法只是为了查看结果而使用的伪方法) 在比赛中给他们

我尝试在android设备上创建一个视频播放器,可以从本地服务器上播放视频。我找到了一个例子。我遵循了指南,最终我能够在我的设备上播放本地视频。然后我开始修改这个项目。我将VideoActivity设置为launcher活动,并注释掉以前活动中收到的所有数据。我从中修改了媒体的初始化

Media m = new Media(libvlc, media);
mMediaPlayer.setMedia(m);

添加了2个新方法(如您所见,这些方法只是为了查看结果而使用的伪方法)

在比赛中给他们打电话

@Override
    public void onEvent(MediaPlayer.Event event) {
        VideoActivity player = mOwner.get();

        switch(event.type) {
            case MediaPlayer.Event.EndReached:
                Log.d(TAG, "MediaPlayerEndReached");
                player.releasePlayer();
                break;
            case MediaPlayer.Event.Playing:
 --->           player.seekTo(1000);
 --->           player.setSubtitles();
            case MediaPlayer.Event.Paused:
            case MediaPlayer.Event.Stopped:
            default:
                break;
        }
    }
但是当我试着播放视频时,我得到了
12401-12591/?A/libc﹕ @@@ 中止:dlfree中的堆地址无效
。我在字幕ar显示几秒钟后出现这个错误(字幕太小)。仅当我尝试显示字幕时才会显示此错误。没有字幕的视频播放没有任何错误


我尝试在VLC应用程序上播放这个视频,它能够显示字幕。我试图创建一个新的项目-得到了同样的错误。我分析了VLC android源代码,看起来他们在加载字幕时使用了几乎相同的逻辑(只是为视频和字幕设置了不同的SurfaceView,但它给了我相同的错误)。那么我错过了什么?是什么导致玩家刹车?如何修复?也许已经有了显示字幕的代码示例。

对此也感兴趣……不,我没有找到答案。由于a完成该任务的时间有限,我只需制作一个自定义字幕文件解析器,并在自定义修改的文本视图元素中显示解析后的数据。它工作得很好,也给了我调整字幕外观的额外可能性
private void setSubtitles(){
    MediaPlayer.TrackDescription[] tds = mMediaPlayer.getSpuTracks();
    mMediaPlayer.setSpuTrack(tds[tds.length - 1].id);
}

private void seekTo(long time) {
    mMediaPlayer.setTime(time);
}
@Override
    public void onEvent(MediaPlayer.Event event) {
        VideoActivity player = mOwner.get();

        switch(event.type) {
            case MediaPlayer.Event.EndReached:
                Log.d(TAG, "MediaPlayerEndReached");
                player.releasePlayer();
                break;
            case MediaPlayer.Event.Playing:
 --->           player.seekTo(1000);
 --->           player.setSubtitles();
            case MediaPlayer.Event.Paused:
            case MediaPlayer.Event.Stopped:
            default:
                break;
        }
    }