使用为android编译的LibVLC显示来自MPEG2流的DVB字幕
使用下面的代码,我能够播放一个udp流(mpeg2 ts),它有3个曲目(视频、音频和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
// 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”);