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

   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;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值