2017-10-10 73 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格式。它使用無頭媒體播放器,因此可以輕鬆地在後臺以實用的方式開始屏幕錄製。我用它來記錄我的硒測試執行。