您的位置:首页 > 其它

使用FFMPEG进行视频截取与合并

2013-11-02 10:27 561 查看
   SHELLEXECUTEINFO ShExecInfo = {0};

   ShExecInfo.cbSize = sizeof(SHELLEXECUTEINFO);

   ShExecInfo.fMask = SEE_MASK_NOCLOSEPROCESS;

   ShExecInfo.hwnd = NULL;

   ShExecInfo.lpVerb = _T("open");

   char pBuf[512];

   _getcwd(pBuf, 512);  ////获取当前路径

   string ffmpegPath = string(pBuf) +"/"+"ffmpeg";

   wchar_t lpFile[512];

   Acsii2WideByte(ffmpegPath.c_str(), lpFile);

   ShExecInfo.lpFile = lpFile;  ///默认为当前目录下

   string shExe_lpParameters = "";

   if(is_codec)

   {

       sprintf(pBuf, " -vframes %d -s %dx%d -r %d ", frames, width, height, fps);

       shExe_lpParameters = "-y -i " + input_video +" -ss " + start_time + pBuf +"-vcodec flv1 " + out_video;

   }

   else

   {

       sprintf(pBuf, " -vframes %d -r %d ", frames, fps);

       shExe_lpParameters = "-y -i " + input_video +" -ss " + start_time + pBuf +"-vcodec copy " + out_video;

   }

   wchar_t lpParam[512];

   Acsii2WideByte(shExe_lpParameters.c_str(), lpParam);

   ShExecInfo.lpParameters = lpParam;

   ShExecInfo.lpDirectory = NULL;

   ShExecInfo.nShow = SW_HIDE;

   ShExecInfo.hInstApp = NULL;

   BOOL bResult = ShellExecuteEx(&ShExecInfo);

   WaitForSingleObject(ShExecInfo.hProcess, INFINITE);

   if( ShExecInfo.hProcess != NULL)

   {

       TerminateProcess(ShExecInfo.hProcess,0);

       CloseHandle(ShExecInfo.hProcess);

       ShExecInfo.hProcess = NULL;

   }
   ShExecInfo.lpFile = NULL;

SHELLEXECUTEINFO ShExecInfo = {0};

    ShExecInfo.cbSize = sizeof(SHELLEXECUTEINFO);

    ShExecInfo.fMask = SEE_MASK_NOCLOSEPROCESS;

    ShExecInfo.hwnd = NULL;

    ShExecInfo.lpVerb = _T("open");

    char pBuf[512];

    _getcwd(pBuf, 512);

    string memcoderPath = string(pBuf) +"/"+"mencoder.exe";

    wchar_t lpFile[512];

    Acsii2WideByte(memcoderPath.c_str(), lpFile);

    ShExecInfo.lpFile = lpFile;  ///默认为当前目录下

    string shExe_lpParameters = videoname1 + " " + videoname2 + " -ovc copy -o " + mergeVideoPath;

    wchar_t lpParam[512];

    Acsii2WideByte(shExe_lpParameters.c_str(), lpParam);

    ShExecInfo.lpParameters = lpParam;

    ShExecInfo.lpDirectory = NULL;

    ShExecInfo.nShow = SW_HIDE;

    ShExecInfo.hInstApp = NULL;

    ShellExecuteEx(&ShExecInfo);

    WaitForSingleObject(ShExecInfo.hProcess, INFINITE);

    if( ShExecInfo.hProcess != NULL)

    {

        TerminateProcess(ShExecInfo.hProcess,0);

        CloseHandle(ShExecInfo.hProcess);

        ShExecInfo.hProcess = NULL;

    }

    ShExecInfo.lpFile = NULL;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: