[C#]Microsoft Expression Encoderを使用して簡易画面キャプチャソフトを作る、その4。

簡易キャプチャソフト改良。
Formクラスの枠を使ってキャプチャ範囲を指定するという手抜きソフトですが、意外と使いやすいというwww
Img20130228204806

改良点
◇動画録画中途中キャンセル可
 これは、録画中に録画停止ボタン(右上)を右クリック、左クリック同時押しでその録画をキャンセルできるというもの。
◇録画範囲のエラーチェック
 キャプチャ対象エリアをディスプレイ外に指定された場合に強制終了する不具合をエラーを表示させるように修正。
◇キャプチャサイズ保持
 最後に使用した時のキャプチャサイズを設定ファイルに保持できるように修正。
◇簡易エンコーダー(EasyEncoder)同梱
 このキャプチャソフトは録画ファイルを00.xesc~99.xescまで作成するが、簡易エンコーダー(EasyEncoder)はこのファイルをWMVエンコードするソフト。通常は録画停止時にエンコードするが、されなかった場合用。
xescファイルと同ディレクトリ内で実行するか、xescファイルのディレクトリをコマンドライン引数で指定することでwmvへエンコードすることができる。
◇操作パネル小さくした
◇動画録画時、音声の録画とマウスカーソルのキャプチャありなしをコントロールに表示させるようにした。

既知のバグ
◇動画録画時の一時停止について
 試用版のExpression Encoderは録画開始時から10分経つと一時停止中でも構わず停止する。そのため、一時停止中に10分経ってしまい自動停止された後に新規JOBが開始され録画が始まってしまうという現象。そこまでして一時停止にこだわらないので今回はメッセージを表示して録画を停止してしまうようにした。
◇キャプチャフォームの大きさ変更不可問題
 これはキャプチャフォームの大きさを変更しているとあるところから変更できなくなる(Formの境界線に変更矢印が表示されなくなる)という致命的な問題。キャプチャフォームは録画中はWndProc()で移動不可、大きさ変更不可にしているのだが、この現象はわかんない状態。
◇設定ファイルバッティング問題
 このソフトは複数起動が可能なのだが、アプリケーション終了時に設定ファイルに設定データを保存している。なので、どっかでファイルIOがバッティングするとエラーになる。まぁ、しょうがない。

今後の改良
◇全画面キャプチャ
 全画面を対象としたキャプチャ。Expression EncoderはHD画質での録画も可能なのでWXGAのモニタ全画面もおk。
◇Expression Encoderのプリセット選択
 Expression Encoderには豊富なプリセットが用意されていてプログラム的に指定が可能だったりする。

プリセットの種類
Expression Bumper
Silverlight トレーラー
VC-1 256k DSL CBR
VC-1 256k DSL VBR
VC-1 512k DSL CBR
VC-1 512k DSL VBR
VC-1 HD 1080p VBR
VC-1 HD 720p VBR
VC-1 IIS スムーズ ストリーミング – 720p CBR
VC-1 IIS スムーズ ストリーミング – HD 1080p VBR
VC-1 IIS スムーズ ストリーミング – HD 420p VBR
VC-1 IIS スムーズ ストリーミング – SD 480p VBR
VC-1 IIS スムーズ ストリーミング – 画面エンコード VBR
VC-1 Windows Mobile
VC-1 Xbox 360 HD 1080p
VC-1 Xbox 360 HD 720p
VC-1 Zune 1
VC-1 Zune 2
VC-1 Zune 2 (AV ドック再生)
VC-1 Zune HD
VC-1 Zune HD (AV ドック再生)
VC-1 ブロードバンド CBR
VC-1 ブロードバンド VBR
VC-1 モーション サムネイル VBR
VC-1 画面エンコード VBR
VC-1 高速ブロードバンド CBR
VC-1 高速ブロードバンド VBR
WMA Lossless 5.1 オーディオ
WMA 音声オーディオ
WMA 高品質オーディオ
WMA 最良 VBR
WMA 低品質オーディオ
WMA 良質オーディオ
サンプルのオーバーレイ
ソース エンコード設定の適用
バランス
最速
最良

エンコード実施時のプリセットの指定

var job = new Job();
job.MediaItems.Add(item);

// プリセットの設定
job.ApplyPreset(Presets.AACGoodQualityAudio);

// エンコードの開始
job.Encode();

プリセットを指定することで出力されるファイルがそれぞれに応じた音声コーデック、画面の大きさに変更されるようになる。

Expression Encoder4自体のソフトを見ているとかなりカスタマイズが可能なようなので、プログラムレベルでこれらが指定できるのは非常にありがたい。うーん、本当に開発が終わってしまうのが惜しい。
Img20130228205755

今回作成したソースはこちら

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA


This blog is kept spam free by WP-SpamFree.