[C++] 183 FLTK : 動画を結合する FFmpeg

[M1 Mac, Big Sur 11.6.8, clang 13.0.0, FLTK 1.3.8, NO IDE]

ビデオツールアプリに動画を結合する機能を実装しました。

これで簡単な編集であればこのアプリで済ませることができるようになりました。

アプリ搭載機能
1.動画からサイズ、時間、フレームレートなどメタ情報を取得する
2.動画を各フレームに切り出す(静止画としても利用可)
3.指定したフレームから動画を作成する
4.動画にぼかしを入れる(FFmpegライブラリやハードが許す限り何ヶ所でも)
5.動画を結合する

string listFile = "list.txt";
string concatFile = "concat.txt";

void concatCB(Fl_Widget*, void*){
    // LIST欄の文字列をテキストファイル化
    const char* list = list_input -> value();
    cout << "list "  << list << endl;

    std::ofstream file;
    file.open(listFile, std::ios::out);
    file << string(list) << endl;
    file.close();

    const char* output = out3_input -> value();
    string cmd = "/opt/homebrew/Cellar/ffmpeg/5.1/bin/ffmpeg -f concat -safe 0 -i " + listFile + " -c copy " + string(output) +  " 2>" + concatFile;
    cmdBuffer2 -> append(cmd.c_str());
    cmdBuffer2 -> append("\n");
    cout << "cmd: "<< cmd << endl;

    // cmdTextDisplay2にcmdを表示する
    cmdTextDisplay2->buffer(cmdBuffer2);

    // コマンド実行
    system(cmd.c_str());

    // browser(STDOUT)にコマンドのログを表示する
    browser2 -> load(concatFile.c_str());
    int line_num = browser2->size();
    browser2 -> bottomline(line_num);
}