« FFmpegをx264入りで自前ビルド(MinGW使用) | トップページ | WindowsInstaller(未解決) »

ffmpegのログをVCでリダイレクト

ffmpegを別プロセスにしてそのログをリダイレクトしたいと思って
CreateProcess()の第二引数(exe起動文字列)に「ffmpeg -i [c:\test.mov] -vcodec copy c:\test.mp4 > log.txt」
とかやってみたけど、出力されなかった。
どうやら、リダイレクトはcmd.exeの機能だからみたい。

いろんなインターネットから情報をもらってきた結果
ログファイルをCreateFileしてから、CreateProcessで設定するSTARTUPINFO(第9引数)の標準出力と標準エラー出力に、ログファイルを指定することでできるようだ。

// ログファイル名
sprintf_s(logfilename, MAX_PATH,"%s.log", filename_temp);

// 変数初期化
ZeroMemory(&sec_attr,sizeof(sec_attr));
ZeroMemory(&mPI,sizeof(mPI));
ZeroMemory(&mSI,sizeof(mSI));

// 子プロセスにオブジェクトのハンドルを継承させる
sec_attr.bInheritHandle = TRUE;
hnd_ffmpeg_log = CreateFile(logfilename, GENERIC_WRITE, FILE_SHARE_WRITE | FILE_SHARE_READ,    &sec_attr, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL );

mSI.cb = sizeof(STARTUPINFO);
mSI.dwFlags = STARTF_USESTDHANDLES;
mSI.hStdOutput =hnd_ffmpeg_log;   // 標準出力にログファイル指定
mSI.hStdError =hnd_ffmpeg_log;     // 標準エラー出力にログファイル指定

// ffmpegコマンド
sprintf_s(str, 512, "c:\\ffmpeg.exe -i c:\test.mov -vcodec copy c:\test.mp4");
CreateProcess(NULL, str, &sec_attr, &sec_attr, TRUE, CREATE_NO_WINDOW | NORMAL_PRIORITY_CLASS, NULL, NULL, &mSI, &mPI);

« FFmpegをx264入りで自前ビルド(MinGW使用) | トップページ | WindowsInstaller(未解決) »

備忘録」カテゴリの記事

コメント

コメントを書く

(ウェブ上には掲載しません)

トラックバック

この記事のトラックバックURL:
http://app.f.cocolog-nifty.com/t/trackback/1022502/38078666

この記事へのトラックバック一覧です: ffmpegのログをVCでリダイレクト:

« FFmpegをx264入りで自前ビルド(MinGW使用) | トップページ | WindowsInstaller(未解決) »

最近のトラックバック

2017年9月
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
無料ブログはココログ