1

私は C の完全な初心者です。私は PHP のバックグラウンドを持っていますが、たまたま PHP で記述したコードを C に変換する必要があります。最初は Java でしたが、現在は C が必要です。

いくつかのチュートリアルを行った後、C の基礎を習得し、ffmpeg.exeac プログラム内から実行するために次のコードをコーディングしました。

#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;
}

プログラムをコンパイルして実行すると、期待どおりに出力フォルダーにフレームが表示されます。問題は、抽出されたときに各フレーム名を配列内に格納したいということです。これまでのところ、同様の問題に出くわすことができなかったので、新しいスレッドを作成することにしました。私はこれが可能であることを願っており、正しい方向へのナッジに感謝します.

4

1 に答える 1

1

ファイル名は popen または fork を使用したシステム コマンドへの出力として表示されないため、機能しません。出力ディレクトリ (D:\frames) で nftw を実行することをお勧めします。フォルダ内のすべてのファイルが一覧表示されます。

サンプルコード: http://linux.die.net/man/3/nftw

于 2013-02-19T10:24:51.163 に答える