gpt4 book ai didi

vlc - 用vlcj捕获只会提供损坏的视频文件

转载 作者:行者123 更新时间:2023-12-04 12:53:20 29 4
gpt4 key购买 nike

我正在使用vlcj捕获Java程序中的屏幕。因此,我使用以下代码:

public static void main(final String[] args) {
NativeLibrary.addSearchPath("vlc", "/Applications/VLC.app/Contents/MacOS/lib/");
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
new CaptureTest().start("screen://");
}
});
}

public CaptureTest() {
factory = new MediaPlayerFactory();
mediaPlayer = (HeadlessMediaPlayer) factory.newMediaPlayer();
}

private void start(String mrl) {

File dir = new File(System.getProperty("user.home"), "Videos");
dir.mkdirs();

DateFormat df = new SimpleDateFormat("yyyyMMdd-HHmmss");
String fileName = dir.getAbsolutePath() + "/Capture-" + df.format(new Date()) + ".mp4";

String[] options = {
":sout=#transcode{vcodec=h264,acodec=mp4a}:std{mux=mp4,access=file,dst=" + fileName + "}", ":input-slave=screen://"
};

mediaPlayer.playMedia(mrl, options);
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
mediaPlayer.stop();
mediaPlayer.release();
}


问题是视频输出文件只有4KB,您不能播放它。谁能帮我?我在Mac OS 10.6.8上,我使用VLC 1.1.12和vlcj 1.1.5

最佳答案

这是代码中有趣的部分...

    mediaPlayer.playMedia(mrl, options);
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
mediaPlayer.stop();
mediaPlayer.release();


您为什么播放媒体,睡了5秒钟,然后立即停止播放?也许,这就是为什么在屏幕录制期间文件非常小的原因。从我注意到的情况来看,转码的速度还不够快,因此文件的大小并没有立即增加(可能是由于转码时发生了缓冲,我想...)

最好是分别为播放/录制操作和停止操作创建一个按钮。

关于vlc - 用vlcj捕获只会提供损坏的视频文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9067982/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com