使用为 android 编译的 LibVLC 显示来自 MPEG2 流的 DVB 字幕
Using LibVLC compiled for android to display DVB subtitles from an MPEG2 stream
使用以下代码我能够播放具有 3 个轨道(视频、音频和 dvb 字幕)的 udp 流 (mpeg2 ts),但我正在尝试检索字幕轨道并显示它,我不能'找到关于如何做的任何明确文档。
// 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();
我正在尝试使用 mMediaPlayer.getMedia().getTrackCount()
和 mMediaPlayer.getSpuTracksCount()
,它们在所有情况下都返回零;连最基本的音视频轨都不算。
有什么帮助吗?
注意:我从 [https://wiki.videolan.org/AndroidCompile/] 编译了 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();
使用以下代码我能够播放具有 3 个轨道(视频、音频和 dvb 字幕)的 udp 流 (mpeg2 ts),但我正在尝试检索字幕轨道并显示它,我不能'找到关于如何做的任何明确文档。
// 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();
我正在尝试使用 mMediaPlayer.getMedia().getTrackCount()
和 mMediaPlayer.getSpuTracksCount()
,它们在所有情况下都返回零;连最基本的音视频轨都不算。
有什么帮助吗?
注意:我从 [https://wiki.videolan.org/AndroidCompile/] 编译了 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();