使用为android编译的LibVLC显示来自MPEG2流的DVB字幕

使用为android编译的LibVLC显示来自MPEG2流的DVB字幕,android,vlc,libvlc,subtitle,vlc-android,Android,Vlc,Libvlc,Subtitle,Vlc Android,使用下面的代码,我能够播放一个udp流(mpeg2 ts),它有3个曲目(视频、音频和dvb字幕),但我试图检索字幕曲目并显示它,我找不到任何关于如何做的清晰文档 // Create LibVLC ArrayList<String> options = new ArrayList<String>(); options.add("-vvv"); // verbosity options.add("--autoscale"); libv

使用下面的代码,我能够播放一个udp流(mpeg2 ts),它有3个曲目(视频、音频和dvb字幕),但我试图检索字幕曲目并显示它,我找不到任何关于如何做的清晰文档

   // Create LibVLC
ArrayList<String> options = new ArrayList<String>();
        options.add("-vvv"); // verbosity
        options.add("--autoscale");

libvlc = new LibVLC(this, options);
        holder.setKeepScreenOn(true);

// Creating media player
mMediaPlayer = new MediaPlayer(libvlc);
        mMediaPlayer.setAspectRatio("16:9");
        mMediaPlayer.setEventListener(mPlayerListener);


// Seting up video output
final IVLCVout vout = mMediaPlayer.getVLCVout();
        vout.setVideoView(mSurface);

        if (mSubtitlesSurface != null)
        vout.setSubtitlesView(mSubtitlesSurface);
        vout.setWindowSize(1920,1080);
        vout.addCallback(this);
        vout.attachViews();
    Media m = new Media(libvlc, Uri.parse(media));
    mMediaPlayer.setMedia(m);
    mMediaPlayer.play();
//创建LibVLC
ArrayList选项=新建ArrayList();
选项。添加(“-vvv”);//冗长
选项。添加(“--自动缩放”);
libvlc=新的libvlc(此选项);
holder.setKeepScreenOn(真);
//创建媒体播放器
mMediaPlayer=新媒体播放器(libvlc);
mMediaPlayer.setAspectRatio(“16:9”);
mmediplayer.setEventListener(mplayerlListener);
//设置视频输出
最终IVLCVout vout=mmediplayer.getVLCVout();
vout.setVideoView(mSurface);
if(mSubtitlesSurface!=null)
vout.setSubtitlesView(MSSubtitlesSurface);
vout.setWindowSize(19201080);
发票(本);
附件视图();
媒体m=新媒体(libvlc,Uri.parse(媒体));
mMediaPlayer.setMedia(m);
播放者播放();
我正在尝试使用
mMediaPlayer.getMedia().getTrackCount()
mMediaPlayer.getSputrackScont()
,它们在所有情况下都返回零;即使是基本的音频和视频曲目也不计算在内

有什么帮助吗


注意:我从[中]编译了LibVLC,并将.aar归档文件保存到我的项目中。

您可能需要先调用
media.parse()
,以便能够发现spu轨迹,然后设置一个。

添加到选项中的参数将有助于显示字幕:

// Create LibVLC
    ArrayList<String> options = new ArrayList<String>();
    options.add("-vvv"); // verbosity
    options.add("--autoscale");
    args.add("--sub-track=0");//this option is used to show the first subtitle track
    libvlc = new LibVLC(this, options);
    holder.setKeepScreenOn(true);

    // Creating media player
    mMediaPlayer = new MediaPlayer(libvlc);
    mMediaPlayer.setAspectRatio("16:9");
    mMediaPlayer.setEventListener(mPlayerListener);


    // Seting up video output
    final IVLCVout vout = mMediaPlayer.getVLCVout();
    vout.setVideoView(mSurface);

    if (mSubtitlesSurface != null)
        vout.setSubtitlesView(mSubtitlesSurface);
    vout.setWindowSize(1920,1080);
    vout.addCallback(this);
    vout.attachViews();
    Media m = new Media(libvlc, Uri.parse(media));
    mMediaPlayer.setMedia(m);
    mMediaPlayer.play();
//创建LibVLC
ArrayList选项=新建ArrayList();
options.add(“-vvv”);//冗长
选项。添加(“--自动缩放”);
args.add(“--sub track=0”);//此选项用于显示第一个字幕曲目
libvlc=新的libvlc(此选项);
holder.setKeepScreenOn(真);
//创建媒体播放器
mMediaPlayer=新媒体播放器(libvlc);
mMediaPlayer.setAspectRatio(“16:9”);
mmediplayer.setEventListener(mplayerlListener);
//设置视频输出
最终IVLCVout vout=mmediplayer.getVLCVout();
vout.setVideoView(mSurface);
if(mSubtitlesSurface!=null)
vout.setSubtitlesView(MSSubtitlesSurface);
vout.setWindowSize(19201080);
发票(本);
附件视图();
媒体m=新媒体(libvlc,Uri.parse(媒体));
mMediaPlayer.setMedia(m);
播放者播放();

我可以通过这种方式获得曲目,检查下面的答案,我需要更多关于如何设置这些曲目以显示字幕的帮助。缺少的是这个参数:args.add(“--sub track=0”);