2016-03-08 76 views
0

我的計劃是顯示服務器端腳本在可顯示在我的網頁上的視頻中生成的數據。到目前爲止,我的方法如下:從服務器端腳本的數據創建視頻

  1. C腳本中的三維整數數組用於累加圖像數據。尺寸是寬度,寬度和顏色(R,G和B)。
  2. 該數組被寫入ppm文件。
  3. 下一張圖片被累積和寫入等等。
  4. 使用ffmpeg腳本將ppm文件合併到mp4視頻。

基本上這個工作,但當然更快會更好。我將不勝感激以下細節完全不同的方法的建議以及幫助:

  • 是否有一個文件格式簡單PPM使用的顏色,而不是三胞胎的十六進制代碼?這將減少我的數組的大小以及寫操作的數量。
  • 如果我用fprintf操作將每一個值打印到文件中,而不是將行累加到字符串中,是否會浪費很多時間?還是編譯器優化這種寫入序列?
+0

歡迎來到SO。請考慮將您的帖子分成多個問題,並向我們展示您迄今嘗試過的代碼。 –

回答

1

根據視頻所需的長度,動畫gif可能比視頻格式容易得多。你可能想看看的GIF動畫庫在github https://extrapixel.github.io/gif-animation/

要在另一臺(更多C-相關的)問題: fprintf中()確實格式化輸出,這絕對不是二進制輸出慢,因此ppm(文本)格式對於速度而言並不是特別已知的。您可能需要查找二進制格式(如上面的.gif)和該格式的匹配庫。應該快得多。

fprintf中()緩衝區輸出,因此,除了增加額外的開銷,積累你的數據轉換成字符串不會快很多。

編輯:鑑於你提到的大小和運行時間,你最好的選擇可能寫入一個簡單的二進制像素格式,ffmpeg能夠消化 - .XWD或.PNG可能是一個不錯的選擇,經過測試的庫可用於繪製並存儲由您繪製的設備相關位圖到這些文件。

二進制格式只需要存儲比基於ASCII的數據少得多的數據 - 假定一個字節是二進制字節並且在ASCII中至少有兩個(可能更多根據格式)。而轉換需要時間....

+0

非常感謝。長度應達到5分鐘左右,分辨率可能爲640x320。這部分取決於產出的效果。所以我認爲GIF可能不是一種選擇。我會研究二進制輸出。 PPM非常方便,因爲我可以逐像素地生成圖像,但大約90%將會是相同顏色的背景。只有「有趣」的部分是逐像素繪製的。 –