2013-02-19 57 views
1

我是一個C的完整新手。我來自PHP背景,但碰巧我在PHP中編寫的代碼需要轉換爲C.它是Java在第一,但現在的要求是C.將提取的幀名存儲在一個數組中 - ffmpeg

通過一些教程去後,我得到了C的基礎知識和編碼下面從交流程序中

#include <stdio.h> 
#include <stdlib.h> 

int main() 
{ 

    char *app = "D:\\ffmpeg\\bin\\ffmpeg.exe -i"; 
    char *input = " D:\\video.mpg"; 
    char *output = " D:\\frames\\image%d.jpg"; 
    char *param = " -r 10"; 
    char str[300];  
    snprintf(str, sizeof str, "%s%s%s%s", app, input, param, output); 
    // str contains "D:\ffmpeg\bin\ffmpeg.exe -i D:\video.mpg -r 10 D:\frames"\image%d.jpg 
    system(str); // <-- working fine, frames are being extracted 
    /* 
     do something here to store each extracted frame in an array 
     so that the array contains image1.jpg, image2.jpg, image3.jpg...and so on 
    */ 
    getch(); 
    return 0; 
} 

運行ffmpeg.exe編譯和運行程序,我正在按照預期的方式獲取輸出文件夾中的幀。問題是我想將每個幀名稱存儲在數組中,因爲它被提取。到目前爲止,我還沒有遇到類似的問題,所以我決定爲它創建一個新線程。我希望這是可能的,並希望在正確的方向推動。

+0

確實命令d:\ ffmpeg的\ BIN \ ffmpeg.exe -i d:\ video.mpg -r 10 d:\幀「\圖像%D.JPG輸出文件在標準輸出的名稱??? – Anshul 2013-02-19 10:18:35

+0

我不知道'stdout' ....它的使用或如何在屏幕/終端上使用它 – asprin 2013-02-19 10:19:35

+0

,可能你希望所有的文件名創建爲D:\ frames \ image%d。 jpg在一個數組的權利??? – Anshul 2013-02-19 10:20:12

回答

1

現在由於文件名不會顯示爲使用popen輸出到系統命令或fork不起作用。我會推薦你​​在輸出目錄(D:\ frames)上執行一個nftw。它會列出文件夾中的所有文件。

樣品的編號: http://linux.die.net/man/3/nftw

+0

Yeh。其實這個選擇在我心中。但是,在循環目錄內的文件時,文件不會按照正確的升序排列。這很重要,因爲我需要數組按照升序包含文件。正確的順序 - image1,image2,image3 ..等等。在循環目錄時顯示的順序 - image1,image100,image101,..等等 – asprin 2013-02-19 10:28:52

+2

在這種情況下只計算文件夾中存在的所有文件。文件名將按順序排列,因此您可以在運行時創建文件名。例如,如果有100個文件,則順序文件名將從圖像1到圖像100 – Anshul 2013-02-19 10:31:01

+0

這是一個很好的技巧。但我認爲'nftw'是基於Linux的...而我在Windows上。 – asprin 2013-02-19 10:41:17

相關問題