2017-10-10 39 views
0

我最近试图记录我的屏幕使用我在这里找到的示例代码之一的示例代码的修改版本,但你可以看到自己,保存的文件的帧率是非常可怕的。你能帮忙吗? 这里是我使用的代码:FrameRate问题与vlcj

public class CaptureTest { 

private final MediaPlayerFactory factory; 
private final HeadlessMediaPlayer mediaPlayer; 

public static void main(final String[] args) { 
    boolean found = new NativeDiscovery().discover(); 
    System.out.println(found); 
    System.out.println(LibVlc.INSTANCE.libvlc_get_version()); 
    SwingUtilities.invokeLater(new Runnable() { 
     @Override 
     public void run() { 
      new CaptureTest().start("screen://"); 
     } 
    }); 
} 

public CaptureTest() { 
    factory = new MediaPlayerFactory(); 

    mediaPlayer = (HeadlessMediaPlayer) factory.newHeadlessMediaPlayer(); 
} 

private void start(String mrl) { 

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


    String fileName = "C:\\Users\\Reza Taheri\\Documents\\video7.mp4"; 

    String[] options = { 
      ":sout=#transcode{vcodec=h264,venc=x264{cfr=16},acodec=mp4a,vfilter=canvas{width=854,height=480},samplerate=4096}:std{mux=mp4,access=file,dst=" + fileName + "}", ":input-slave=screen://",":screen-fps=24" 
    }; 



    JPanel cp = new JPanel(); 
    JButton recordButton = new JButton("Record"); 
    cp.add(recordButton); 
    JFrame frame = new JFrame("vlcj"); 
    frame.setContentPane(cp); 
    frame.setLocation(10, 10); 
    frame.pack(); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    frame.addWindowListener(new WindowAdapter() { 
     @Override 
     public void windowClosing(WindowEvent e) { 
      mediaPlayer.stop(); 
      mediaPlayer.release(); 
     } 
    }); 
    recordButton.addActionListener(new ActionListener() { 
     @Override 
     public void actionPerformed(ActionEvent e) { 
      frame.setState(JFrame.ICONIFIED); 
      mediaPlayer.playMedia(mrl, options); 
     } 
    }); 
    frame.setVisible(true); 


} 

}

我使用Windows 10 vlcj和VLC媒体播放器的最新版本。

回答

0

我承认我不知道这是可能的(用vlcj记录屏幕),但我会说这个问题不是vlcj相关的,因为你传递了很多参数到libvlc中,并且它是那些参数告诉libvlc记录你的屏幕(如果我已经正确理解代码)

我不能帮助那些,但阅读更多关于libvlc和它的参数/选项。

0

您目前的帧率是24这是很好的。我想你想说保存的视频的视频质量很差。视频质量的主要因素是视频比特率。在转码选项中设置比特率并再次检查视频质量。

例如VB = 1024或VB = 2000

此外,如果你想与你当前的桌面分辨率相匹配,那么你可以设置规模1.0的转码选项视频分辨率=

你可以找到vlcj java screen recorder example here它记录屏幕MP4格式。它使用无头媒体播放器,因此可以轻松地在后台以实用的方式开始屏幕录制。我用它来记录我的硒测试执行。