[C++] 180 FLTK : 動画の一部をぼかす FFmpeg

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

動画の一部(四角形領域)をぼかす機能を実装しました。

今のところ1ヶ所のみですが、複数の領域にモザイクをかけられるようにします。

// 計算ボタンのコールバック関数 変数x,yはmathライブラリで使われているためxx,yyを使用
void calcCB(Fl_Widget*, void*) {
    xa = (int)(xx1 * ((float)widthSub1/480));
    xb = (int)(xx2 * ((float)widthSub1/480));
    ya = (int)(yy1 * ((float)heightSub1/360));
    yb = (int)(yy2 * ((float)heightSub1/360));

    cout << "widthSub1 " << widthSub1 << " heightSub1 " << heightSub1 << endl;
    cout << "xx1 " << xx1 << " xx2 " << xx2 << " yy1 " << yy1 << " yy2 " << yy2 << endl;
    cout << "xa " << xa << " xb " << xb << " ya " << ya << " yb " << yb << endl;

    wa = xb - xa;
    ha = yb - ya;

    filter = to_string(wa) + ":" + to_string(ha) + ":" + to_string(xa) + ":" + to_string(ya);
    filter2 = to_string(xa) + ":" + to_string(ya);

    fil_input -> value(filter.c_str());
}
// フィルタボタンのコールバック関数
void filCB(Fl_Widget*, void*){
    const char* output = outputLine2 -> value();
    const char* output2 = out2_input -> value();

    string filtercmd = "ffmpeg -i " + string(output) + " -filter_complex \"[0:v]crop=" + filter + ",boxblur=4[fg];[0:v][fg]overlay=" + filter2 + "[v]\" -map \"[v]\" " + string(output2) + " 2> " + filterFile;

    // CMD追加
    cmdBuffer2 -> append(filtercmd.c_str());
    cmdBuffer2 -> append("\n");
    cout << "filtercmd: "<< filtercmd << endl;

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

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

    // browserにfilterFileの内容を表示する
    browser2 -> load(filterFile.c_str());
    int line_num = browser2->size();
    browser2 -> bottomline(line_num);

}