Я пишу пользовательский видеоплеер в java, используя VLCJ, и мне нужно иметь возможность воспроизводить видео в обратном порядке. Это возможно?Может ли VLCJ играть в обратном направлении?
0
A
ответ
1
Простой ответ «нет».
Ни Vlcj, ни VLC не могут воспроизводить видео в обратном порядке.
0
Постоянно устанавливая время в обратной последовательности, может показаться, что видео воспроизводится в обратном порядке.
import com.sun.jna.Native;
import com.sun.jna.NativeLibrary;
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.util.TimerTask;
import javax.swing.JFrame;
import uk.co.caprica.vlcj.binding.LibVlc;
import uk.co.caprica.vlcj.component.EmbeddedMediaPlayerComponent;
import uk.co.caprica.vlcj.player.embedded.EmbeddedMediaPlayer;
import uk.co.caprica.vlcj.runtime.RuntimeUtil;
public class SamplePlayer extends JFrame {
long ttt;
EmbeddedMediaPlayer ePlayer;
public SamplePlayer() {
String vlcPath = "C:\\Program Files (x86)\\VideoLAN\\VLC";
NativeLibrary.addSearchPath(RuntimeUtil.getLibVlcLibraryName(), vlcPath);
Native.loadLibrary(RuntimeUtil.getLibVlcLibraryName(), LibVlc.class);
EmbeddedMediaPlayerComponent playerComp = new EmbeddedMediaPlayerComponent();
playerComp.setPreferredSize(new Dimension(800, 600));
this.setLayout(new BorderLayout());
this.add(playerComp);
this.pack();
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
ePlayer = playerComp.getMediaPlayer();
ePlayer.prepareMedia("video.mp4");
ePlayer.play();
java.util.Timer t = new java.util.Timer();
t.schedule(new TimerTask() {
@Override
public void run() {
ePlayer.pause();
playReverse();
}
}, 1000);
}
private void playReverse() {
ttt = ePlayer.getLength();
java.util.Timer t = new java.util.Timer();
t.schedule(new TimerTask() {
@Override
public void run() {
ttt -= 5;
if (ttt < 1) {
cancel();
}
ePlayer.setTime(ttt);
}
}, 1000, 1);
}
public static void main(String[] args) {
new SamplePlayer();
}
}