VLCJ-RTP流无法取消暂停mp3,但是可以取消暂停mp4

时间:2019-12-15 17:25:43

标签: vlcj

我这样创建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文件时,它会暂停,但不会取消暂停。它只播放十分之一秒或根本不播放然后停止。但是,如果我告诉它跳过,则跳过确实起作用,并且它将开始播放下一首歌曲,这意味着播放器没有死声或什么声音。我不明白为什么它适用于视频而非音乐。 任何帮助都非常感谢

0 个答案:

没有答案