ffmpegのスクリプト

1、カレントディレクトリのtxt

BAT:DIR / ON / B> 0の.txt 

現在のファイル+サブファイルバットDIR / S / / Bの > 0.txt

2、バルクフォルダの画像生成ビデオ

 / F " delimsの= [ "%I (INPUT.TXT)を行う D:\\ソフトウェア\\ ffmpeg- 20191026 - 1054752 -win64- 静的 \\ビン\\ ffmpeg.exe -f画像2 -i F:\\ cqVideo \\ 19 - 10 - 24 \\ 19 - 10 -24_16 \\%I \\%D.JPG -vcodec libx264 -r 25 -b 700000 F:\\%i.h264

3バッチのビデオフォーマット変換

%のA "F:\\ cqVideo \\ 19-10-26 \\ 19-10-26_00 \\ * H264 "を行う D:\\ \\ソフトウェアffmpeg- 20191028 -68f623d-win64- 静的を \ \ binに\\ ffmpeg.exe -i " " -threads 2 -vcodec libx264 -preset -crf遅い20 -y " F:\\ 00result \\%〜na.mp4を"

4は、ビデオはビデオ画像を作成するためのフォルダとサブフォルダ、サブフォルダを作成し、画像として保存されます

int型のmain()
{
    ::はifstreamのFINのSTD(" F:\\ cqVideo 19-10-26MP4 \\ \\ 0.txt "); //は、元のサンプル画像ファイルリストの開き   
    文字列imgNameを。
    マットcolorImage;

    INT videoCnt = 0 ;
     一方(のgetline(FIN、imgName))// 行ずつファイルリストを読み込みます   
    {
        videoCnt ++ ;
        文字列 videoPath = imgName。
        VideoCapture(とvideoPath)をキャプチャ; // 読み出された映像

        IF(!capture.isOpened())// ビデオファイルを開くかどうかを判断   
        {
            coutの << videoPath << " ビデオ開いていない... " << てendl;
            続け;
        }
        文字列 dirNameに= videoPath.substr(videoPath.find_last_of(" \\ ")+ 1 );
         文字列 saveImageName dirName.substr =(0、dirName.find_first_of(" ")); // Picturesフォルダは、新しい作成する必要があり、文字列 = hourDirNameをvideoPath.substr(2611); // 時間フォルダは、新しい作成する必要が
                                                       // coutの<<てendl << saveDirNameを。
        

                                                      // 保存图片
        文字列 hourDir = " F:\\ cqVideo \\ 19-10-25 \\ " + hourDirName + " \\ " ;
        もし(_mkdir(hourDir.c_str())== - 1 
        {
            _mkdir(hourDir.c_strは());    // -1失敗したことを示し、0は正常に作成返します
        }

        文字列 IMAGEDIR = hourDir + saveImageName + " \\ " ;
        もし(_mkdir(imageDir.c_str())== - 1 
        {
            _mkdir(imageDir.c_strは());    // -1失敗したことを示し、0は正常に作成返します
        }

        int型のカウント= 0 ;
        しばらく
        {
            カウント ++ ;

            キャプチャ >> colorimageを; // 絵に読み込ま
            IF (colorImage.empty())
            {
                裁判所未満 << " ノーイメージ... " << てendl;
                破ります;
            }

            もし(colorImage.channels()!= 3 
            {
                裁判所未満 << " ではない3 ... " << てendl;
                cvtColor(colorImage、colorImage、CV_GRAY2BGR)。
            }
            もし(colorImage.rows!= 640 
            {
                COUT << videoPath << " 行エラー" << ENDL。
            }
            
            RECTのROI(29762378 )。
            // 矩形(colorImage、ROI、スカラー(0、255、255)、1)。
            以下のためのint型 I = 623 ;私は< 632 ; iが++ 
            {
                INT J = 297、J < 305 ; J ++ 
                {
                    // COUT <<(INT)colorImage.at <Vec3b>(I、J)[0] << ENDL;
                     // [1] << COUT(INT)colorImage.at <Vec3b>(I、J)<< ENDL;
                     // COUT <<(INT)colorImage.at <Vec3b>(i、j)は、[2] << ENDL;
                     // 各画素値の操作
                     // 青チャネル 
                    colorImage.at <Vec3b>(I、J )[ 0 ] = 20 ;
                     // 緑色チャネル 
                    colorImage.at <Vec3b>(I、J)[ 1 ] = 20 ;
                     // 赤チャネル 
                    colorImage.at <Vec3b>(I、J)[ 2 ] = 20 
                }
            }
            putText(colorImage、" 5 "、CV ::ポイント(297630)、CV_FONT_HERSHEY_COMPLEX_SMALL、0.5、スカラー(255255255)、1 )。

            文字列名= IMAGEDIR + to_stringに(カウント)+ " .JPG " 
            関数imwrite(名前、colorImage)。


            // 関数imshow( "colorImage"、colorImage)。
            // waitKey(0); 
        }
    }

    リターン 0 ;
}

図5に示すように、単一のビデオフォーマット変換

ffmpegの-i input.avi output.mp4

 

おすすめ

転載: www.cnblogs.com/crazybird123/p/11785239.html