[C++] 171 FLTK : 動画のリサイズ FFmpeg

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

ビデオツールアプリにリサイズ機能を搭載しました。

簡単な動画加工にはFinal Cut Proではなくこのツールを使えるよう、さらに機能を充実させていきたいです。

void resize(){
    char    cmd[512];
    char    count[100];
    const char* del = ".";

    // 元ファイルパス取得
    const char* path = input_line->value();
    cout << "path "<< path << endl;

    // stringへ変換
    string path_str = string(path);

    // 拡張子を削除
    string prefix0 = spt.splitJoin(path_str, del, 0, -2);
    cout << "prefix0 "<< prefix0 << endl;
    prefix0.pop_back();

    // _resizedを付加
    string prefix = prefix0 + "_resized";

    // 拡張子を付加
    vector<string> list_path = spt.splits(path_str, del);

    string extension = list_path[list_path.size()-1];
    cout << "extension "<< extension << endl;

    string newPath = prefix + "." + extension;
    cout << "newPath "<< newPath << endl;

    // リサイズcmd作成
    sprintf(cmd,"/opt/homebrew/Cellar/ffmpeg/5.1/bin/ffmpeg -i %s -s %d:%d %s 2>&1 && echo ffmpeg完了", path_str.c_str(), width2_int, height2_int, newPath.c_str());
    cout << "cmd: "<< cmd << endl;

    // cmdをtextBufferに追記
    string cmd_str(cmd, 512);
    string cmdstr2 = "cmd: " + cmd_str + "\n";
    textBuffer->append(cmdstr2.c_str());

    // 文字数と行数をカウントしtextBufferに追記
    int length_buf = textBuffer -> length();
    int num_lines = textBuffer -> count_lines(0, length_buf);

    printf("length_buf %d num_lines %d\n",length_buf,num_lines);
    sprintf(count, "length_buf %d num_lines %d\n",length_buf,num_lines);
    textBuffer->append(count);

    // textDisplayを最終行表示する
    textDisplay->buffer(textBuffer);
    textDisplay->scroll(num_lines + 1, 0);

    // cmd実行
    outputTextMake(cmd);

    // browserを最終行表示する
    browser->load(outputText);
    int line_num = browser->size();
    browser->bottomline(line_num);

    cout << "リサイズ完了!" << endl;
}