日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

本文介紹了如何從LWJGL顯示器寫入視頻文件?的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!

問題描述

因此,我學會了如何通過讀取GL_FORWARE中的字節緩沖區來截取LWJGL顯示的屏幕截圖:

public static void takeScreenShot(){
    GL11.glReadBuffer(GL11.GL_FRONT);
    int width = Display.getDisplayMode().getWidth();
    int height = Display.getDisplayMode().getHeight();
    int bpp = 4;
    ByteBuffer buffer = BufferUtils.createByteBuffer(width * height * bpp);
    GL11.glReadPixels(0, 0, width, height, GL11.GL_RGBA, GL11.GL_NSIGNED_BYTE, buffer);
    DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd_HH.mm.ss");
    Date date = new Date();
    String datetime = dateFormat.format(date);
    File file = new File(screenshot_dir + "\" + datetime + ".png");
    String format = "PNG";
    BufferedImage image = new BufferedImage(width, height, Bufferedmage.TYPE_INT_RGB);
    for (int x = 0; x < width; x++) {
        for (int y = 0; y < height; y++) {
            int i = (x + (width * y)) * bpp;
            int r = buffer.get(i) & 0xFF;
            int g = buffer.get(i + 1) & 0xFF;
            int b = buffer.get(i + 2) & 0xFF;
            image.setRGB(x, height - (y + 1), (0xFF << 24) | (r << 16) | (g << 8) | );
        }
    }
    try {
        ImageIO.write(image, format, file);
    } catch (Exception e) {
        e.printStackTrace();
    }
}

我假設我可以保持每秒從前臺緩沖區讀取大約60次(我知道這會顯著降低性能)。然后,我只需將一定數量的幀寫入緩沖區,當緩沖區已滿時,該緩沖區將被交換到另一個緩沖區。緩沖區滿后,可以將其內容追加到文件中。

如何將字節緩沖區格式化為視頻中的幀?

謝謝。

推薦答案

您的問題確實很陳舊,但為了完整起見,我還是要回答它。

我的回答是太大,無法提供示例或解釋。這就是我將其他人的教程和官方文檔鏈接起來的原因。

    將場景(或其他任何內容)渲染為2D紋理。(http://www.opengl-tutorial.org/intermediate-tutorials/tutorial-14-render-to-texture/)
    使用glGetTexImage(https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glGetTexImage.xhtml)檢索紋理數據
    下載用于編碼MP4(或您想要的任何內容)的Java庫,然后一幀接一幀地編碼。

以下是一些偽代碼:

create framebuffer
enable framebuffer
for all frames {
    render to framebuffer
    glGetTexImage(...)
    library.encodeFrame(imageData)
}

這非常普遍,并且在很大程度上取決于您用于編碼的庫。

這篇關于如何從LWJGL顯示器寫入視頻文件?的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,

分享到:
標簽:LWJGL 寫入 顯示器 視頻文件
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定