C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

コマンドプロンプトで逐次的にデータを取得する方法 [1]

[トピック内 26 記事 (21 - 26 表示)]  << 0 | 1 >>

■95291 / inTopicNo.21)  Re[20]: コマンドプロンプトで逐次的にデータを取得する方法
  
□投稿者/ くまくま (12回)-(2020/07/11(Sat) 11:52:37)
>p.WaitForExit()で止めるのではなくループでp.HasExitedを確認
>(System.Windows.Forms.Application.DoEvents()とSystem.Threading.Thread.Sleep()で調整が必要)
またはpをpublic変数としてButton2_Clickでp.StandardInput.WriteLine("q")でも大丈夫。
(ただしバックグラウンドプロセスの終了確認は必要)


引用返信 編集キー/
■95292 / inTopicNo.22)  Re[21]: コマンドプロンプトで逐次的にデータを取得する方法
□投稿者/ aaap (10回)-(2020/07/11(Sat) 16:03:20)

ありがとうございます。

大体分かってきました。

コマンドラインから実行するのではなく、直接ffmpegを実行するとうまく停止させることができました。

> やっぱりソースいる?

もし差し支えなければアップしていただけますでしょうか?


あと、一つ気になっているのですが、
コマンドラインだと、
最初にエンコード条件が表示された後に、

frame= 7653 fps=1271 q=18.0 size= 116480kB time=00:04:15.58 bitrate=3733.5kbits/s speed=42.5x

というようなコードが逐次的に表示されますが、
エンコード条件だけは消えずに残るのに対し、
この逐次的に表示されるコードだけは累積せずに、
過去のコードが消えては新しいコードに書き換わってというのを繰り返しています。

これをプログラム上でも行いたいのですが、
どのようにすれば良いですか?

単に出力コードの先端が、frame= であるかどうか確認するしかないのでしょうか?

コマンドライン上でそのようなことをしているとは思えないので、
何か方法があるのでしょうか?


引用返信 編集キー/
■95293 / inTopicNo.23)  Re[22]: コマンドプロンプトで逐次的にデータを取得する方法
□投稿者/ くまくま (13回)-(2020/07/11(Sat) 20:43:06)
2020/07/11(Sat) 20:44:42 編集(投稿者)

No95292 (aaap さん) に返信
> もし差し支えなければアップしていただけますでしょうか?
少々おまちください。コメント等整理します。

>コマンドラインから実行するのではなく、直接ffmpegを実行するとうまく停止させることができました。
ソースコメントには記載しておきますがcmd.exeでコマンド実行終了しても
cmd.exeは終了せずに次のコマンドを受け付ける為に待機状態になります。
(コマンドプロンプトで複数のコマンドが実行できる事で想像できるかと思います)
その為今回必要ありませんが終了判定で「一定時間、標準・エラー出力がない場合」の処理が含まれますので
ご了承下さい。

> 単に出力コードの先端が、frame= であるかどうか確認するしかないのでしょうか?
はい。ffmpegがエラー出力を消して再表示を行っていますが
「消す」イベントを取得することがvb.net上でできません。
(取得できるのはライン追加のみ)
形式が決まっているので"frame="で判定するしかないです。
(ほかにfpsが1000単位でメッセージが表示されたような...)
引用返信 編集キー/
■95294 / inTopicNo.24)  Re[23]: コマンドプロンプトで逐次的にデータを取得する方法
□投稿者/ くまくま (14回)-(2020/07/11(Sat) 22:32:32)
2020/07/11(Sat) 22:33:32 編集(投稿者)

ソースアップしておきました。
http://kumakuma.g1.xrea.com/vb.net/shell/ffmpegtest.zip
(vb.net2017 Framework4.5.2)
※必ずファイルをウイルス検査する事

Form1.vbの6行目
Call Shell.Exec("""ffmpeg.exe"" -c copy ""c:\test.mp4"" -i ""c:\Test.avi""", vbHide, "UTF8")
ここを変更すれば動くはずです。(実行内容は「出力」タブに表示されます)

また簡易確認だったので5秒で停止としていますかボタンでStopBool変数にtrueを設定して対応することも可能です。

あと気になっていたのですが、このトピック分類は「VB.NET/VB2005 以降」では?

引用返信 編集キー/
■95296 / inTopicNo.25)  Re[24]: コマンドプロンプトで逐次的にデータを取得する方法
□投稿者/ aaap (11回)-(2020/07/13(Mon) 06:43:55)
ありがとうございます。
ダウンロードできました。

試してみて
もし、疑問点があればまた質問いたします。

引用返信 編集キー/
■95354 / inTopicNo.26)  Re[25]: コマンドプロンプトで逐次的にデータを取得する方法
□投稿者/ aaap (12回)-(2020/07/21(Tue) 11:44:01)
ありがとうございます。

ちなみに
https://upload.wikimedia.org/wikipedia/commons/1/17/Ffmpeg-3.4.png

この画像のようにFFmpegは異なる色のメッセージを出力することがありますが、
この色情報を取得するにはどのようにすれば良いですか?

引用返信 編集キー/

このトピックをツリーで一括表示

<前の20件
トピック内ページ移動 / << 0 | 1 >>

このトピックに書きこむ