Время начала потокового видео VLCJ - PullRequest
0 голосов
/ 08 мая 2018

Я пытаюсь передать видео с определенной минуты с помощью vlcj

Что у меня есть и что отлично работает

public static void main(String[] args) throws Exception {
    System.setProperty("VLC_PLUGIN_PATH", "C:\\Program Files\\VideoLAN\\VLC\\plugins");
    File vlcInstallPath = new File("C:\\Program Files\\VideoLAN\\VLC");
    NativeLibrary.addSearchPath(
            RuntimeUtil.getLibVlcLibraryName(), vlcInstallPath.getAbsolutePath());
    Native.loadLibrary(RuntimeUtil.getLibVlcLibraryName(), LibVlc.class);
    LibXUtil.initialise();

    String[] media = {"C:\\clips\\clip.mp4"};

    String options = ":sout=#transcode{vcodec=h264,vb=100,venc=x264{profile=baseline},fps=10,width=1920,height=1080,acodec=mp3,ab=24,channels=1,samplerate=44100}:http{mux=ffmpeg{mux=flv},dst=:8080/";
    MediaPlayerFactory mediaPlayerFactory = new MediaPlayerFactory(media);
    HeadlessMediaPlayer mediaPlayer = mediaPlayerFactory.newHeadlessMediaPlayer();
    mediaPlayer.playMedia(media[0], options);
    Thread.currentThread().join();
}

Но это всегда начинается с самого начала, когда я запускаю поток, используя VLC Media Player.

То, что я ожидал, было то, что время потока продолжает прогрессировать, и каждый раз, когда я присоединяюсь к потоку, я прыгаю к этому времени, но этого не происходило. Есть ли способ добиться этого?

Если нет, возможно ли запустить поток в определенную минуту?

я пробовал mediaPlayer.setTime(100); но это не имеет никакого эффекта

1 Ответ

0 голосов
/ 08 мая 2018

Я получил мою ошибку

Как понять разницу между двумя онлайн-видео: RTSP и HTTP?

public static void main(String[] args) throws Exception {
    System.setProperty("VLC_PLUGIN_PATH", "C:\\Program Files\\VideoLAN\\VLC\\plugins");
    File vlcInstallPath = new File("C:\\Program Files\\VideoLAN\\VLC");
    NativeLibrary.addSearchPath(
            RuntimeUtil.getLibVlcLibraryName(), vlcInstallPath.getAbsolutePath());
    Native.loadLibrary(RuntimeUtil.getLibVlcLibraryName(), LibVlc.class);
    LibXUtil.initialise();

    String[] media = {"C:\\clips\\clip.mp4"};

    //String options = ":sout=#transcode{vcodec=h264,vb=100,venc=x264{profile=baseline},fps=10,width=1920,height=1080,acodec=mp3,ab=24,channels=1,samplerate=44100}:http{mux=ffmpeg{mux=flv},dst=:8090/";
    String options = formatRtspStream("127.0.0.1",8080, "demo");//":sout=#transcode{vcodec=h264,vb=100,venc=x264{profile=baseline},fps=10,width=1920,height=1080,acodec=mp3,ab=24,channels=1,samplerate=44100}:rtp{sdp=rtsp://:8090/}";
    MediaPlayerFactory mediaPlayerFactory = new MediaPlayerFactory(media);
    HeadlessMediaPlayer mediaPlayer = mediaPlayerFactory.newHeadlessMediaPlayer();
    mediaPlayer.playMedia(media[0],
            options,
            ":no-sout-rtp-sap",
            ":no-sout-standard-sap",
            ":sout-all",
            ":sout-keep"
    );
    Thread.currentThread().join();
}

private static String formatRtspStream(String serverAddress, int serverPort, String id) {
    StringBuilder sb = new StringBuilder(60);
    sb.append(":sout=#rtp{sdp=rtsp://@");
    sb.append(serverAddress);
    sb.append(':');
    sb.append(serverPort);
    sb.append('/');
    sb.append(id);
    sb.append("}");
    return sb.toString();
}

https://github.com/caprica/vlcj/blob/master/src/test/java/uk/co/caprica/vlcj/test/streaming/StreamRtsp.java

...