我目前正在研究可以播放mkv
格式的java媒体播放器。我正在使用VLCJ
,一切正常,除非我尝试更改无效的音轨。
这是代码
public class mediaplayer {
private static JFileChooser filechooser = new JFileChooser();
public mediaplayer() {
}
public static void main(String[] args) {
String vlcPath = "", mediaPath = "";
File ourfile;
filechooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
filechooser.showSaveDialog(null);
ourfile = filechooser.getSelectedFile();
mediaPath = ourfile.getAbsolutePath();
EmbeddedMediaPlayerComponent mediacom = new EmbeddedMediaPlayerComponent();
JFrame frame = new JFrame();
frame.setContentPane(mediacom);
frame.add(canvas);
frame.setLocation(100, 100);
frame.setSize(1050, 600);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
MediaPlayer mplayer = mediacom.getMediaPlayer();
mplayer.playMedia(mediaPath);
mplayer.setAudioTrack(1);
}
}
在vlc 2.0.5之前的libVLC版本中,设置音轨的本机API调用被窃听。
通过libVLC 2.0.5中的修复,设置音轨可以正常工作,但你不能只假设一个简单的0..N索引而你不能假设顺序音轨号码 - 你必须通过调用mediaPlayer.getAudioDescriptions来枚举音轨( )。返回的TrackDescription对象包含应与mediaPlayer.setAudioTrack()一起使用的音轨标识符。
要禁用音频,您可以选择带有“禁用”描述的音轨的音轨标识符。
另请注意,在调用mediaPlayer.playMedia()后,您可能无法立即设置音轨。媒体以异步方式启动,您可能需要等到媒体实际启动和/或在轨道信息可用之前已经解析。