Liveの正式版をホームページで公開しました。・ベータ版の設定ファイルと互換性がありません。FAQ録音デバイスと再生デバイスのフォーマットが合わない場合について・異なるフォーマットを再生できるかどうかは再生デバイス次第です。サンプリングレートがあっていなくても再生できる場合もあります。・オーディオレンダラーを排他モードに設定すれば再生デバイスのフォーマットは関係なく再生できるようです。DirectShowの64bit版です。アマレコTV4などの64bitのビデオキャプチャソフトで使えるビデオソースフィルターです。4K設定も追加してあります。注意アマレコTV4でVIDEOINFOHEADER2を使うとエラー落ちします。ベータ版公開お待たせいたしました、アマレコTV4のベータ版を公開します。オンラインヘルプはまだなので、自力でやりくりできる方が対象となります。・ライブ機能は簡易版となります。ライブ機能(簡易版)・AMV4ビデオコーデックのライセンス登録がされていない場合は録画した映像にロゴが入ります。・SSE4.1に対応したCPUが必須となります。64bitのみとなります。・32bit版のOSでは実行できません。使えないことは無いと思いますがデスクトップキャプチャやオーバーレイレンダラーなど使えない項目があります。PCに詳しい人なら使えるんじゃないでしょうか。・オーディオキャプチャデバイスのサンプリングレートと再生デバイスのサンプリングレートが一致していないと音のプレビューができ無い場合があります。・録画時にMP3で圧縮するには64bitに対応したMP3エンコーダーが必要です。入手困難なので実質MP3の圧縮はできないものと思ってください。・今回のバージョンにはオーディオミキサーが含まれません。そのためアマレコTV4単体での実況動画の作成はできません。・アマレコTVを起動するとものすごい雑音が流れる、一度ミュートすると治る。・Hキーでオンラインヘルプを表示すると、ヘルプを閉じても閉じてもヘルプが表示されてしまう。・録画中だけプレビューがカクカクするまたは止まってしまう(改善されるか半信半疑)。(GUIのレイアウトが崩れる)。【起動オプション】-path:"d:\movie"dドライブのmovieフォルダに動画を保存します。アマレコTVの保存先1の設定は無視されます。-nodateファイル名に日付をつけません。不具合などありましたら、この記事のコメント欄に書き込んでいただけると助かります。ライブ機能(簡易版)今回のアマレコTV4のライブ機能は簡易版となります。Captureフィルター)が必要となりますので、事前に「live_setup300.exe」をインストールしてください。Ver3.10と同じなので戸惑うことは無いと思います。・リサイズリサイズはできません。キャプチャした画像サイズをそのまま扱います。クロップ、アスペクト比の調整もないので配信ソフト側で調整してください。・ライン映像、音声ともライン1に固定されます。Ver3.10に同梱されているライブ機能(のフィルター)は32bit版です。従って、映像や音声を受け取れるアプリケーションは32bitのアプリケーションのみとなります。プログラムの方は一通り完成したのでベータ版を近々ブログで先行公開します。その後は、ユーティリティソフトの公開などしつつ、不具合修正&オンラインヘルプを作成し、最終的にホームページにて正式版公開となります(2月下旬予定)。4で新しくないります。Audioで実装してあります。・音質向上?と言ったメリットがあるらしいです。音質の向上については一般的に「排他モードを使うことでカーネルミキサーを通さずビットパーフェクトを達成できるので高音質になる」とされていますが、アマレコTV自体で扱う音の質がそもそもそこまで良くないと思いますので猫に小判と言った感じです。APIより少ない反応時間でも安定した再生を行えますのでこの分部が新オーディオレンダラーの優位性となります。オーディオレンダラーに関する項目はアマレコTVの高度な設定にあります。今まで通り、再生デバイスと、配信デバイスの最大2系統でアマレコTVの音を再生することができます。Audioの排他モードを使って再生します。排他モードにするとOSのカーネルミキサーを通さないためその部分の音質低下を防げるとされています。排他モードにするとアマレコTVの音しか再生できなくなります(他のアプリケーションの音は再生できなくなる)。アマレコTVが再生デバイスを独占するため”排他モード”と言うことになります。ちなみに、排他モードでない場合を”共有モード”と言い、様々なアプリケーションの音をカーネルミキサーがミキシングして一つの再生デバイスで再生するらしいです。アロケータに関する設定はビデオキャプチャカードを使う場合ほぼ意味がない(変更できない)ので廃止にしようかと思いましたが、実験用に設定を残しました。通常OFFで使ってください。再生プロパティ・配信プロパティ各オーディオレンダラーの設定画面を表示します。各オーディオレンダラーの設定値は共通となるので別々の設定値にすることはできません。最後に設定した値が有効となります。・バッファサイズ100msから1000msの間で設定できます。通常200msから変更する必要はありません。Audioが確保したバッファサイズです。重要な反応時間(レイテンシ、再生遅延)の設定です。反応時間を大きくすると遅延が増えますので基本的には小さく調整します。反応時間が小さくなり過ぎるとプチプチノイズが生じますので、ノイズが目立たない範囲を見極めて設定してください。実際の反応時間は画面下部に表示しています。上図だと目標が40msで現在36msの遅延(36ms分のデータが再生バッファに溜まっている)で音が再生されています。・許容範囲1・許容範囲2目標値からどの範囲を許容するかの設定です。反応時間が目標値とぴったり一致していなくても許容範囲に収まっているうちは補正を行いません。許容範囲を超えた場合は目標値になるよう音データを補正します。この時(補正中は)音質が低下します。補正中は画面下部の「補正回数」がどんどん増えていくので、今補正しているかどうかは補正回数で判断してください。許容範囲1は狭い範囲の設定で補正もほとんどわからないように処理されます。許容範囲2は広い範囲の設定で、許容範囲を超えた場合、かなり強引に補正しますので音質低下が目立ちます。その代り素早く目標値まで持っていけます。・最低バッファリング許容範囲の設定値によっては、許容範囲の下限が0となってしまったり、マイナスになることがあります。その状態だと補正できないので、この値を下回った場合は僅かに補正して目標値まで持っていきます。設定例1目標反応時間:40ms許容範囲1:10ms許容範囲2:40ms最低バッファリング:10msの場合、反応時間が30msから50msの範囲にあるうちは補正を行いません。29ms以下、もしくは、51ms以上になったら反応時間が40msとなるまでほんの少しずつ補正を行います。反応時間が81msを超えた場合は短時間で反応時間が40msとなるよう強引に補正します。最低バッファリングは先に許容範囲1の下限が働くのでこの場合意味を成しません。設定例2目標反応時間:10ms許容範囲1:10ms許容範囲2:40ms最低バッファリング:5msの場合、許容範囲1と許容範囲2の下限がそれぞれ0以下なのでいずれも働きません。その代りに反応時間が5msを下回った時に最低バッファリングが働き10msになるまでほんの少しずつ補正を行います。この値は再生バッファに溜まっている(再生待ちの)データ量から算出しています。行った回数を表示します。補正を行っている最中はこの値がどんどん増えていきます。・ドロップ再生バッファにデータが溜まり過ぎてデータを捨てた回数を表示します。この値が1以上になるようならバッファサイズを増やす必要があるかもしれませんが、まともに音を再生できる環境ではない可能性が高いです。・デバイスロストHDMIなどでリンクが切れて再生デバイスが使えなくなった場合にカウントされます。カウント値をリセットします。・受け取ったサンプル実際のアロケータサイズを表示します。・デフォルトボタンオーディオレンダラーの設定値を初期値に戻します。新オーディオレンダラーではキャプチャデバイス(キャプチャカード)のサンプリングレートと再生デバイスのサンプリングレートを一致させる必要があります。一致しない場合は接続エラーとなります。OSの設定で再生デバイスのサンプリングレートを合わせて下さい。アマレコTVの高度な設定の「フォーマットエラーを無視する」をONにすると音のプレビューはできませんが、録画等そのほかの機能は使えるようになります。録画ステータス録画中に表示するステータスの内容がすこし変わるのでその説明です。4の録画処理フローを説明します。4の録画処理フローキャプチャカードは画像データをアロケータに入れてカスタムフィルターへ渡します(参照渡し)。カスタムフィルターはアロケータの内容をレンダラーのビデオメモリへコピーします。Graphの基本的なプレビュー処理となります。カスタムフィルターはこれに加え、録画中はアロケータの内容を(4)のリングバッファへコピーします。既存のアマレコTVの場合はこの分部がリングバッファへのコピーではなく録画処理へアロケータそのものを渡してアロケータをロックするようになっています。(5)のエンコード処理が終わった後にアロケータのロックを解除します。キャプチャカードはアロケータがロックされている間次の処理ができない場合がありますが、通常アロケータは複数あるので問題ありません。Graphの処理も滞ることになります。アマレコTVの録画処理(録画処理スレッド)はリングバッファにデータが溜まっていないか監視し、溜まっているデータがあったら音ズレ処理とエンコードを行い、結果を(6)の書込みバッファへ書き出します。アマレコTVのファイル処理(ファイル処理スレッド)は書込みバッファを監視し、既定の量(書込みブロックサイズ)溜まっていたらまとめてファイルへ書き出します。Graphへ影響がないようになっています。録画ステータスはこれらの処理の状況を把握することができますので、異常がある場合の原因特定や改善のヒントとなります。2.ステータスDropドロップフレーム数と(+)ドロップ、(-)ドロップの3つを表示します。(+)と(-)は既存のアマレコTVと同じで、音ズレ処理により調整されたフレーム数をカウントします。4では(4)のリングバッファがいっぱいで書き込むことができなかったフレーム数をカウントします。この値は通常0となるので、もし1以上になっていたら異常と思ってください。(+)と(-)は必ずと言っていいほど生じますので1以上になっていても問題ありません。HDD1秒間にHDDへ書き込むデータ量(フローの7)と書込みバッファの使用率(フローの6)を表示します。1秒間に書き込むデータ量は既存のアマレコTVと変更ありません。4では使用率なので読み方が真逆になることに気をつけてください。使用率については録画開始直後は0%から始まり、ファイル処理が滞ると徐々に数値が増えていきます。50%を超えるなど数値が大きいほど具合が悪いとなります。悪い状態」となるよう統一するための変更です。CPUこれも既存のアマレコTVから内容が変わります。4では総合的なCPU使用率(ほぼタスクマネージャのCPU使用率と同じ)を表示します。これにはエンコード処理だけでなくアマレコTVの処理全体、さらには他のアプリケーションの処理まで加味されます。次に説明するエンコードの処理時間が規定時間の50%を超える場合、このCPU使用率は999%と表示されます。Encエンコードの処理時間(ビデオコーデックが1フレーム処理するのにかかる平均時間)とビデオコーデックの名前を表示します。これらは既存のアマレコTVと同じ内容を表示します。規定時間は例えば60fpsで録画する場合、約16msです。エンコード処理時間が規定時間を超える場合は完全にPCのスペック不足です。既定の処理時間の50%を超えた場合、CPUの使用率が999%となります。3.分析方法フローの下流から異常がないか確認します。HDDのステータスで書込みバッファの使用率が高くないか(50%を超えていたら危ない)確認します。1秒間にHDDへ書き込むデータ量が妥当かどうか見ます。書き込む量が多く(100MB/s程度)て使用率が高くなっている場合は純粋にスペック不足です。・アマレコTVの高度な設定で書込みバッファのバッファサイズを大きくする・ビデオコーデックの設定で圧縮効果の高いものを選択する・ビデオコーデックそのものをもっと高圧縮なものへ替える・HDDのスペックを上げる・アマレコTVの録画設定のフレームレートの目安を下げる書き込む量が少ない(50MB/s程度)のに使用率が高いようならHDDが壊れているなどを疑う必要があります。・別のドライブで録画するまずは、書込みバッファの使用率が低くなるようにするにはどうしたら良いかを考えてください。ここを改善できないとどうにもなりません。CPUステータスを確認する・999%となっていたらCPUのスペック不足です。4へ・50%以下なら問題ありません。CPUステータスが999%となっていたらCPUのスペック不足です。Dropステータスを確認します。Dropが0なら問題ありません。Dropが1以上になるならどこか問題があります。一度1から確認してください。(+)と(-)は環境にもよりますが1分に1くらいのカウントアップはしょうがないかも知れません。約16秒毎に1フレーム誤差が生じるので、16秒ごとに(+)か(-)がカウントアップします。4の高度な設定にある録画詳細設定で行えます。書込みバッファ:フロー6の書込みバッファの量を設定します。設定値が8MBなら書込みバッファに8MB以上データが溜まっていたら8MBずつファイルへ書き出します。リングバッファサイズ:フロー4のリングバッファの量を設定します。4Kを使ってRGBキャプチャするとカラーフォーマットが対応せず録画できなかったり、プレビュー映像が上下反転するなどで上手く使えませんでした。4KのRGBキャプチャにも対応するので、YUVだけでなくRGBによる録画やプレビューが可能となります。4Kではビデオソースフィルタ(アマレコTVで言うところのキャプチャデバイス)が2つ登録されて、使えるカラーフォーマットが多少異なります。10bit)でキャプチャできます。8bit)の場合を説明します。Captureと(アマレコTV的には)同じです。YUV系に関しては現行のアマレコTVと同じですのでこの記事では省略します。具体的な動作としてはアルファチャネル付のARGB(内容はRGB32と同じ)としてアマレコTVのカスタムフィルタに渡されるので、サブタイプをRGB32へ書き換えることで対応しました。フレームデータの内容はおそらく同じなのでヘッダ情報だけ書き換えます。余計な変換処理はアマレコTVの方では行っていません。8bit)が使えません。10bit)専用となります。YUV系に関しては現行のアマレコTVと同じですのでこの記事では省略します。8bit)へ変換して動作します。8bitのクオリティとなります。captureの方は確実に10bit-8bit変換が行われるのでビデオ信号が8bitだった場合、この処理が無駄と言えます。Captureを使った方が無駄がなく無難に見えますが、ビデオソースフィルタの内部で変換処理を行っているかもしれないので、結局何とも言えません。どちらも同じように使えるので、どっちでもいいのかなと思います。(BitBltなどのAPI)と呼ばれるWindows95のころから使われていたOSの機能を利用してきましたが、Windows8でも依然としてGDIは使えるものの、GDIを使ったデスクトップキャプチャに相当厳しい制限が加わったため本格的なデスクトップキャプチャは無理(最大30fps)となってしまいました。API(以下デュプリケータ)という新しいOSの機能です。デュプリケータはWindows8から追加されたデスクトップキャプチャ専用の機能で、アプリケーションはDirectXとデュプリケータを使ってデスクトップ画像を取得することができるようになりました。4のデスクトップキャプチャ処理はこのデュプリケータを使うのでWindows8のPCであればほとんどのPCで60fpsのデスクトップキャプチャが可能となります。DirectXを使うのでビデオカード(VGA)の性能が重要で、古いCPUのオンボードVGAやノートPCのVGAでは30fps程度になってしまう場合があります。Windows7以前のOSでは使えません。60pを快適に録画できました。60pを快適に録画できました。オンボードVGAでフルHDともなると新しめのデスクトップPCでないと厳しい印象です。ビデオカードを使う場合はGTX650は高性能でもないし、最新でもないので、ほぼクリアできる条件だと思います。使い方は今までと変わりません。デバイス設定でデスクトップキャプチャとアマステを選択します。フレームレートなどの設定も今までと同様、取り込み枠を右クリックして表示されるメニューで行います。ツールバーの青い枠のアイコンを右クリックしてもメニューを表示することができます。キャプチャモードについて・デスクトップ・キャプチャデュプリケータを使ったキャプチャ処理です。デスクトップの任意の領域を録画します。・デスクトップ・ウインドウ指定デュプリケータを使ったキャプチャ処理です。指定したウインドウの位置や大きさに合わせてキャプチャ範囲が調整されます。デスクトップの様子がそのままキャプチャされますので他のウインドウも映ります。・ウインドウ・キャプチャGDIを使ったキャプチャ処理です。指定したウインドウのオフスクリーン画像をキャプチャします。他のウインドウは映りません。Rate」の場合は60fpsで動作します。フレームレートについてフレームレート(fps)はモニターのリフレッシュレートに合わせて使うことになります。Rate」を選択します。30fpsなどを選択するとモニターのリフレッシュレートを元に30fpsに近いfps(たとえば29.97など)の動画となります。この辺りはアマレコTVの録画設定にあるフレームレートの目安と同じです。キャプチャモードが「ウインドウキャプチャ」の場合はデュプリケータを使わないので(モニターデバイスに依存しないので)リフレッシュレートと言った概念はありません。fpsの設定がそのまま使われます。30fpsを選択するとモニターのリフレッシュレートが59.94だったとしても30fpsの動画となります。目的のfpsがメニューにない場合は同梱されている「AmDesktopCaptureFps.ini」をメモ帳で開いて編集してください。fpsは小数点を含めて記述します。正確に指定する場合は100ns単位のフレーム持続時間を記述します。ダミーピクセルについてダミーピクセルはデュプリケータのキャプチャタイミングを作るために画面の端に透明のピクセルを表示し、モニターのリフレッシュレートに合わせて内容を常に更新します。透明なので見た目の影響はありません。ダミーピクセルをOFFにするとガクガクと言った動きの悪い動画になる場合がありますので通常はダミーピクセルをONにしてください。マルチモニターについてデュプリケータはモニターデバイス単位の処理となりますので、マルチモニターの場合は範囲指定の対象となるモニターのみキャプチャされます。他のモニターにまたがる部分は真っ黒となります。次回は新デスクトップキャプチャについて紹介しますと言いましたが、その前にAviUtl+x264guiなどで再エンコードする際の音声処理に対する高速エンコード支援の効果がどの程度あるのかテストしたので紹介します。今回のテストはあくまで一例です、使い方によって効果は変わってきますのでその点はご注意ください。今回はHDDを使ってテストしましたが、SSDだともっと効果が薄くなると思われます。他にも画像サイズやフレームレート、PC性能によっても効果の割合が変わってきます。1.テスト方法アマレコTVで1時間程度録画したビデオファイルをAviUtlとx264guiを使って再エンコードするのにかかる時間を比較し、どの程度エンコード時間を短縮できるかみます。各数値はx264guiのコンソールに表示される値から読み取っています。音エンコード時間は総エンコード時間から映像エンコード時間を引いた値です。厳密には音のエンコード時間のほかにmux処理など他の処理の時間も含まれますが、大半が音のエンコード時間です。映像のエンコード時間は3パターン全てにおいてほぼ同じ約19分となっています。音のエンコード時間はオーディオブロックサイズが200msの場合はアマレコTVのバージョンと関係なくほぼ同じエンコード時間であることがわかります。オーディオブロックサイズを50倍の10,000ms(約10秒)としオーディオデータをまとめてビデオファイルに保存するとエンコード時間が半分以下に短縮できています。(約8%)短縮できています。・この効果はランダムアクセス性能の悪いHDDの特性を改善することにより得ています。ランダムアクセス性能に優れたSSDを使って録画した場合の効果は薄くなると思われます。・x264guiの設定により映像と音声を同時にエンコードした場合は効果が得られません。・オーディオブロックサイズを大きくし過ぎると、対応できないアプリケーションがあるかもしれません。・基本的にオーディオブロックサイズを大きくしてもデメリットは無いですが、効果はある程度で頭打ちになります。それ以上大きくするメリットもありませんので、目安としては10秒程度と思ってください。・インターリーブの方が良いんじゃないの?イメージだけで語るとインターリーブも良い結果がでそうですが実態を考えると結局ランダムアクセスになってしまうケースがありそうなので何とも言えないです。0あまラボへようこそこのブログでは自作ソフトの最新情報やtips、PC動画に関する話題を掲載していきます。各記事へは下にあるカテゴリからアクセスして下さい。