我这样创建mediaListPLayer(基本上是从VLCJ示例中复制的)
public Player() {
this.ip = "127.0.0.1";
factory = new MediaPlayerFactory();
mlp = factory.mediaPlayers().newMediaListPlayer();
/*
mlp.events().addMediaListPlayerEventListener(new MediaListPlayerEventAdapter() {
@Override
public void nextItem(MediaListPlayer mediaListPlayer, MediaRef item) {
System.out.println("Playing next item: " + item + ")");
}
});
*/
playList = factory.media().newMediaList();
}
我这样将播放列表分配给播放器(字符串列表来自套接字)
public void setPlaylist(String[] strings, int port) {
String options = formatRtpStream(this.ip, port);
playList.media().clear();
for (String s : strings) {
playList.media().add("F:\\Biblioteca\\" + s, options);
}
mlp.controls().setMode(PlaybackMode.LOOP);
MediaListRef playlistRef = playList.newMediaListRef();
try {
mlp.list().setMediaList(playlistRef);
} finally {
playlistRef.release();
}
}
我在服务器端使用此方法暂停和取消暂停。 r仅用于同步目的
private String pauseUnpause() {
mlp.controls().pause();
return "r";
}
在客户端,我像这样启动并捕获流(输出是一个套接字)
private void playFromList() {
try {
ArrayList<String> r = (ArrayList<String>) MediaList.getSelectedValuesList();
StringBuilder sb = new StringBuilder();
sb.append("p##");
for (String str : r) {
sb.append(str);
sb.append(";");
}
out.println(sb.toString());
out.flush();
empc.mediaPlayer().media().play("rtp://127.0.0.1:" + port);
}
catch(ClassCastException e){
System.out.println("Lista Vazia");
}
}
流本身可以完美运行。至少直到我停下来 当我按下一个按钮时,它将通过套接字发送一个请求,该请求调用暂停/取消暂停功能。就是这个当我播放视频(mp4)时,暂停/取消暂停有效。但是,当我播放mp3文件时,它会暂停,但不会取消暂停。它只播放十分之一秒或根本不播放然后停止。但是,如果我告诉它跳过,则跳过确实起作用,并且它将开始播放下一首歌曲,这意味着播放器没有死声或什么声音。我不明白为什么它适用于视频而非音乐。 任何帮助都非常感谢