d.sunnyone.org
sunnyone.org

ページ

2015-04-15

画面を動画キャプチャするツールScreenCaptureWrapperを公開

デスクトップ画面を範囲選択して動画キャプチャするツール「ScreenCaptureWrapper」をリリースしました。

https://github.com/sunnyone/ScreenCaptureWrapper/releases よりダウンロード可能です。

と、こう書くとなんだか大変なことをしているように見えますが、単なるffmpegのラッパーなので、お好きな場所からffmpegをダウンロードするか、自分でビルドしておく必要があります。

最近のffmpegであれば、映像だけに関してはgdigrabという機能を使えるので単体でOKですが、音声が必要な場合、screen-capture-recorder DirectShowフィルタが必要です。

まぁ座標選択のUIがついていたりと、スクリーンキャプチャ用のUIになっていますが、config.ymlに書かれた引数テンプレートを展開して実行しているだけなので、恐らく別のビデオソースから読み取って出力するなんてことも可能だと思います。

出力は「後処理が前提ならやっぱHuffyuvじゃね?」ってことで今時Huffyuv / PCMになっていますが、好きにコマンドラインオプションを取り替えてもらえばいいです。(2015/5/13追記:0.0.2でwebmを足してみました。)

画面キャプチャするツールなんて山ほどあるんじゃないかと思いますが、「ウォーターマークが入ったりフォーマットに制限があったりややこしい→ffmpegでできるんじゃね?→できるじゃん→コマンドラインで座標指定するのめんどくさ」という流れでこれが登場しました。

ということで、 機会があればどうぞお使いください。

ライブラリ紹介

例によってC#のWPFアプリですが、使っているライブラリの紹介です。

Caliburn.Micro

MVVMフレームワークです。デフォルトでは、同じ名前のViewとViewModelを自動でバインドしたり、TextBoxやButtonのx:NameとViewModelのプロパティをバインドしてくれたりと、いろいろ自動な感じで動くライブラリです。とまぁそのあたりはかつてのRailsのscaffoldみたいに釣り的意味合いのおまけで、基本的には、メッセージングの仕組みだとか、このライブラリのありがたさはそういった枠組みの部分でしょう。このくらいの規模でも、さらっと書けるようになるし、入れといてもいいかなという感じです。

オブジェクトが必要になると、解決して引いてくるstyleなので(この観点ではサービスロケータって言うのかな?)、DIコンテナフレームワークを併せて使うほうが便利だと思います。サンプルではMEFの例がありました。自分だったらあと1個ウィンドウが来たらAutofacと連携させます(手元には実際にそうやったプロジェクトがある)。

YamlDotNet

.NETのYAMLシリアライザ・デシリアライザです。プリセットのUI作るのが面倒だったので、ymlに持っているので使っています。まぁ、普通な感じです。この手のファイルはJSONでいいかなと思っていたのですが、コメント書けないしWindowsパスはエスケープしなきゃいけないしでイマイチなので、YAMLは現実的かなと思います。

Cottle

前の記事で使ったテンプレートエンジン。コマンドライン引数の展開に使っています。


作っていまさら、ffmpegのラッパーならLinuxでも同じ仕組みでいけそうだし(実際x11grabがある)、もうちょっとクロスで行ける造りにすればよかったなぁと思ったりもしますが、そうしたら一晩でできなそうなので、まぁよかったのかなという感じです。

0 件のコメント:

コメントを投稿