アマレコTV Win8でオーバーレイを使って遅延軽減
オーバーレイレンダラーを使うとアマレコTVのプレビューの表示遅延を減らすことができるので、次のアマレコTVではそのあたりを売りにしようといろいろテストしていましたが、特別なことをしなくても現状のアマレコTVにてオーバーレイレンダラーが利用できることがわかりました。
なので、現行のアマレコTVを使ってオーバーレイレンダラーがどの程度効果あるかテストします。
1.テスト方法
PCを2つ用意して「SC-512N1-L/DVIのスルー出力について検証」で利用した「くるくるベンチ for DirectDraw」を一つ目のPCで実行しHDMI出力を分配器(LKV312)で分配します。
二台目のPC(Windows8.1)にはキャプチャカードを2つ(SC512とSC500)挿して、それぞれ分配したHDMIを接続します。
分配した後のビデオ信号は基本的には同じもののようですし、使用したキャプチャカードも同じような挙動を示すため、アマレコTVを2つ使って次のようにほぼ同じタイミングでプレビューできます。

緑色の数値8092がフレーム番号で1/60秒毎にカウントアップしていきます。
数値がどちらも同じ8092なので分配器やキャプチャカードによる遅延の差はほとんど生じないことがわかります。
ここから、一方をオーバーレイレンダラーに設定してどうなるかテストします。
2.SC500(右)をオーバーレイレンダラーに設定

オーバーレイレンダラーに設定した右側のSC500の方が2114と一つ大きい数値になっています。
これは左のSC512 EVRより1フレーム分(1/60秒)早く表示できていることを示しています。
つまり、「オーバーレイレンダラーを使うとEVRより1フレーム遅延を軽減できる」と言うことがわかります。
これだけだと、たまたま差が出ただけなんじゃないかとか、本当にオーバーレイによる差なのか となるので、今度はSC512の方をオーバーレイに設定してテストします。
3.SC512(左)をオーバーレイレンダラーに設定

今度は左のオーバーレイレンダラーに設定したSC512の方の数値が大きくなりました。
このことから、キャプチャカードや分配器とは関係なくオーバーレイレンダラーにより差が出ていることがわかります。
4.まとめ
今回のテストによりWindows8で遅延を減らしたい人はオーバーレイレンダラーが有効であることがわかりました。
現行のアマレコTVでも高度な設定で「オーバーレイのみを使う」を選択することで利用できますので、プレビューの遅延を減らしたい人はお試しください。
■Windows8にてアマレコTVでオーバーレイレンダラーを使う
現行のアマレコTVでオーバーレイレンダラーを使うにはアマレコTVの高度な設定で「オーバーレイのみを使う」を選択します。

※ Windows7でデスクトップコンポジションが有効な場合、オーバーレイレンダラーは使えません。
※ オーバーレイレンダラーは同時に一つのアプリケーションでしか使えません。
次期アマレコTVではWindows8+オーバーレイレンダラーをメインとし、Windows7に関しては使えないことは無いけど制限付での動作となる予定です。
マイコンソフトHDキャプチャカードの新ドライバ v1.1.0.140
http://micomsoft.co.jp/sc-512n1.htm
変更点
(1) 古いパソコンの特殊な解像度へ対応
(2) 未圧縮AVIでの録画に対応 (ビデオキーパー2)
(3) 画質調整プロパティの実装
(4) DirectShow解像度の一覧表示を、「固定式」から「検出式」に変更
(5) 疑似RGBモード追加
(6) 長時間の録画において音声がズレにくくなりました (ビデオキーパー2???)
(7) 法人向けに関する改善
(1)はX68000への対応です。
(2)この記事の最後 に書かれているようなケースへの対応と思われます。業務用途なので一般の利用者には関係ないでしょう。
(3)は一般の利用者でも恩恵を受ける部分なので後述します。
(4)は一見デメリット(それも致命的な)と読み取りましたが、実際はそうでもなさそうです。後述します。
(5)はYUY2でキャプチャしたものをソフトウエア処理によりRGBへ変換するとのことなので、以前私が試用したアルファ版から進展なさそうです。現状、このフォーマとを選択する意味はありません。むしろ、YUY2でキャプチャしたものはYUY2のまま扱うほうがロスが少ないので「疑似RGB」は使わない方がいいと思われます。
(6)はドライバレベルの改善なのかビデオキーパー2の改善なのか不明です。
(7)は一般の利用者には関係なさそうです。
と言うことで、一般の利用者が関係するのは3,4なのでそのあたりを試してみました。
新ドライバ v1.1.0.140

画質調整のプロパティ

このプロパティが使えるようになった
調整なし

調整あり (明るさを下げて、コントラストと鮮やかさを上げた場合)

今回はPlayStation4をHDMIで接続してデジタルキャプチャしているので正確なキャプチャ結果を望む場合、調整する必要は無いと思いますが、このプロパティを使って好みの画質へ調整できます。
最後に一番気になるフォーマット一覧の仕様変更です。
文面を見ると
「ゲーム機を起動して解像度が確定してからアマレコTVを起動しないと使えなくなった。」
「アマレコTV起動中にゲーム機の解像度が変化したら、その都度、アマレコTVを再起動しなければならなくなった(プリセットの切り替えでは対応できない、もしくはエラーが発生する)。」
と読み取れたので絶望感が漂いましたが、あくまで特殊な解像度(「1024x600」、「640x400」、「640(512)x384」など)を使う場合の話のようなので、1080p、720p、480pなどは常にリストに存在していて今まで通りの使い方ができます。

ゲーム機の電源を切って、No Signal状態でアマレコTVを起動しても一般的な解像度は今まで通り選択できる。
まとめ
いろいろな機能が追加されたように見えますが、一般の利用者に恩恵があるのは画質調整の一点のみと思われます。
ちょっと使った限りではデメリットを感じなかったので、画質調整が必要な人は試してみてはいかがでしょうか。
AMV4は動画エンコード支援機能QSVを凌ぐ超低負荷
一方、AMV4ビデオコーデックも極まった処理速度によりCPUの負荷を大幅に軽減できますので、どちらがよりCPU負荷が低いのか実際に録画中の様子を観察して比較してみました。
また、QSVと同様にCPU負荷を軽減できるNVIDIAのNVEncについてもテストしています。
1.テスト概要
できるだけ同じ条件で観察したいので一つのキャプチャソフトでQSVとAMV4の両方が使えるものを探しましたが、見つかりませんでした。
なので、QSVに関してはOBS(Open Broadcaster Software)とキャプチャカードに付属するVideoKeeper2を使い、AMV4はアマレコTVを使うことにします。画像サイズやフレームレートを揃え、ドロップフレームが生じない条件でテストしましたが、やはりキャプチャソフトによる違いが無いとは言い切れないためその点はご容赦ください。
1.1.テスト方法
各キャプチャソフト(配信ソフト)にて録画を行い、その時のタスクマネージャのグラフ(CPU使用率)を観察します。
ビデオキャプチャにはマイコンソフト社のSC-512N1-L/DVIを使いPS4版のBATTLE FIELD 4のキャンペーンモードのオープニングシーン(※)を録画します。
※ この動画の冒頭1分50秒と同じ内容
下図はOBSを使ってソフトウエア・エンコーダのx264にてローカル録画した時のグラフになります。
キャプチャ条件はHDMI 1920x1080 60p YUY2です。

グラフの下部にある5枚の画像はキャプチャ中のおおよその映像を示しています。グラフのこの地点ではこんな感じの映像を処理していると思ってください。
グラフの左端はプレビューも、録画も行っていないため、ほぼCPU使用率が0%となっています。
そこから録画を開始し画像1の付近では、真っ黒な画面に小さい文字でゲーム制作会社などのテロップが表示されるシーンとなります。
このシーンは単調(1枚の画像として見たとき複雑でない、べた塗りやグラデーションの面積が広いなど)かつ動きが全く無い映像なためかCPU使用率は20%強と低めです。
グラフの中盤(画像2、3付近)は普通に動きのあるシーンとなり、CPU使用率は約55%と跳ね上がります。
グラフの後半(画像4、5付近)はオープニングが終わり、プレイ中となりますが、操作を行っていないためほとんど動きのない映像が続きます。動きがほとんどない映像ではCPU使用率も30%強と低めになるようです。
このようなテストを、エンコーダを変えて行います。
2.テスト条件
OS | Windows8 x64 Professional | |
CPU | Intel(R) Core(TM) i7-4770 CPU @ 3.40GHz Haswell | |
GPU | GeForce GTX 650 Driver 337.88 | |
MB | ASRock H87 Performance (Intel H87) | |
Memory | DDR3 1600 16GB(8GBx2 Dual Channel)read=25.4GB/s write=14.8GB/s | |
HDD | 録画用のHDD WD30EZRX 3TB | |
Software | OBS Ver0.624b 32bit版 Video keeper2 ver1.1.0.124.4 (SC512のキャプチャソフト) AmaRecTV Ver3.00e (Ver3.00cと同じ) | |
Capture Card | ||
SC-512N1-L/DVI DVI-D Driver:1.1.0.125.0, 2013.11.12 | ||
Video Source | PS4版BATTLE FIELD 4のオープニングシーンを HDMI 1080 60p YUY2でキャプチャ この動画の冒頭1分50秒と同じ内容 | |
備考 | CPUは4コア、8スレッド、HTT対応、AVX2対応。動作クロックを3.4GHz(定格)で固定し、 省電力設定およびTurbo BoostはBIOSで無効化、動作クロックがテスト中に変動しないようにしています。 |
3.各キャプチャソフトの主な設定
詳細設定は長くなるので「続きを読む」に記載します。ここでは特に重要と思われる内容のみ記載します。
3.1.OBS
QSVおよびNVEncにてローカル録画するように設定します。
ビットレートは8Mbpsとしました。
サウンドはアマレコTVとできるだけ同じ条件となるようMP3 128kbps 2chとしています。
デスクトップの音とキャプチャカードの音がミキシングされます。

3.2.VideoKeeper2
QSVを使って録画するように設定します。
ビットレートは20Mbps。
オーディオミキサーの処理はありません。

3.3.アマレコTV
AMV4ビデオコーデックをDY3(YUY2高圧縮可逆)に設定しSSE4版とAVX2版のそれぞれで録画します。
ビットレートの設定はありませんが出来上がった動画ファイルから逆算すると約320Mbpsとなります(今回のテスト条件では秒間約40MByteなのでHDD単体でもドロップなく録画可能)。
オーディオ圧縮にLAME MP3 128kbpsを使います。
オーディオミキサーの処理はありません。

4.テスト結果
各エンコーダで録画した際のタスクマネージャのグラフに色を付けて合成したのが下図になります。

グラフの前半部は録画していない状態(プレビュー処理のみ)のCPU使用率です。OBSの前半は停止状態(プレビューもしていない)です。
プレビュー中はPCを操作しているためグラフが少し乱れていますが、アマレコTV、VideoKeeper2ともにCPU使用率は約4%から5%です。
グラフの後半は録画中のCPU使用率となります。録画中はPCを一切操作していないためグラフが安定しています。
また、いずれのエンコーダも映像の内容によるCPU使用率の変動がほとんど生じていないこともわかります。
録画中のCPU使用率は全体的に6%から10%の間にひしめき合っていて僅差となりますが、最もCPU使用率を抑えられたのはアマレコTVとAMV4(AVX2版)の組み合わせとなりました。
二番手はVideoKeeper2のQSVとなります。同じQSVを使ったOBSよりCPU使用率が少ないことがわかります。
AMV4のSSE4版は処理が遅い分CPU使用率も少し高くなります。
OBSは他と比べるとCPU負荷が若干高めという結果になりました。純粋な録画とプレビュー処理のほかに、何かしら処理を行っていると推測されます(少なくともオーディオミキサーの処理が行われています)。
また、OBSのQSVとNVEncを比較するとNVEncの方がCPU負荷を抑えられています。
最後に録画したビデオファイルの画質を比較します。
下図は録画したビデオファイルをAviUtlで読み込んだ画像です。
ゲーム側の都合によりプレイする度に完全に同じ映像がレンダリングされるわけではないようなので、類似するフレームを抜き出しての比較となります。

AMV4はYUY2の可逆なのでオリジナルの画質に忠実です。
VideoKeeper2はビットレートが高い分、OBSより若干画質はよくなっています。
OBSの3つはこの例ではほとんど差が無いように感じますが、一般的にはx264、QSV、NVEncの順に画質が良いと言われています。
OBSの3つの色味が他と違っていますが原因は不明です。OBS側の設定で何かあるのか、AviUtlでmp4ファイルを読み込む際の入力プラグインの都合なのか・・・
ビデオキャプチャカードで録画できるようになった Play Station 4
SONY Play Station 4 (以下PS4)が2014年4月30日のシステムソフトウエア・アップデート(1.70)によりビデオ信号のプロテクト(HDCP)を解除できるようになりました。これによりHDMI対応のビデオキャプチャカードを使ってプレビュー&録画が可能となります。
注意 プロテクトはコンテンツ毎に管理されていると思うのでPS4のすべてのコンテンツが録画可能というわけではありません。
◇アップデート前
アップデート前はビデオ信号のプロテクトによりビデオキャプチャカードなど録画機能を持った映像機器ではPS4の映像を扱えませんでした。
画像はマイコンソフト社のビデオキャプチャカードSC-512N1-L/DVI を使ってキャプチャした様子です。アップデート前はプロテクト(HDCP)によりこのようになってしまいます。
◇アップデート後
PS4を1.70へアップデートすると設定のシステム項目に「HDCPを有効にする」が追加されます。この項目のチェックを外すと録画機能をもつ映像機器へもビデオ信号を出力するようになります。その結果(録画機能を持つ)ビデオキャプチャカードでもプレビュー&録画できます。
注意 アップデートした直後はHDCPが有効になっていますので、PS4をテレビなどに接続してHDCPを無効にしてからビデオキャプチャカードへ接続します。
「HDCPを有効にする」のチェックを外すとビデオキャプチャカードでプレビュー&録画できるようになる。
◇ゲームを起動
ゲームを起動するとばっちりプレビューできます。
◇録画も可能
1080 60pでしっかり録画できますが、ゲームソフトによってはPS4でも30fpsでレンダリングされるガッカリなものもまだまだあるようです。キャンペーンを少し遊んだだけですがBATTLE FIELD 4は60fpsでレンダリングされているようなので造りにぬかりはななさそうです。
ここ数年でゲーム機やビデオキャプチャカードは1080 60pに対応してきましたが、ゲームソフト自体は720pで制作されていたり、1080 60pにするとフレームレートや画質が下がるなど数値上の対応のみといった状態でした。PS4になりゲーム機やゲームソフトの状況も改善され始めましたが、今度はビデオ出力がHDMIのみとなり録画機能のある映像機器が一切使えない惨状です。
今回のアップデートでようやくゲーム機の性能、ビデオキャプチャカードの性能、ビデオ信号の問題が解消されて次世代と呼べる状況がそろったのかな、2006年ころにHDキャプチャが一般ユーザに広まり始めてからだいぶかかりましたね。
マイコンソフトXCapture-1用新ドライバを試してみました
XCapture-1
SC-512N1
今回はXCapture-1のドライバの改善点とVideoKeeper2の新機能である「CUDAによるGPUエンコード」を試してみます。以前の記事「USB3.0対応HDキャプチャカード「XCAPTURE-1」を使ってみた」と合わせてご覧ください。
1.XCapture-1用新ドライバ Ver1.1.0.123.4

設定項目がいくつか増えています。

画像の調整(画質調整)もできるようになっています。(前からできたっけ?)
2.VideoKeeper2 Ver1.1.0.124

録画設定にNVIDIAのCUDAを使ってエンコードする設定が増えています。NVIDIA製のビデオカードを増設して条件を満たすと設定をONにできるようです。また、ビデオカードを増設するとIntel(R) Quick Sync Videoは使えません。これは、Intelの仕様によるものらしいです。
なお、マイコンソフトの推奨スペックはGTX760以上とのことなのでCUDAによるGPUエンコードはかなりハードルが高く感じます。
3.デインターレースについて
以前の記事「USB3.0対応HDキャプチャカード「XCAPTURE-1」を使ってみた」ではXCapture-1の方でデインターレースされてしまって、30fpsの録画、プレビューしかできないことを書きました。これはスーパーファミコン等の古いゲーム機の疑似NTSCの場合において大きなデメリットでしたが今回この点が改善されています。
以下はアマレコTVの場合です。(VideoKeeper2では60fpsの録画、プレビューはできないようです。 )
アマレコTVの設定画面のデバイス設定にある「デバイス設定」ボタンを押してキャプチャカードのプロパティを開きます。プロパティの「VIDEO DEINTERLACE METHOD」で「WEAVE (NONE)」を選択します。

そうするとXCapture-1の方でデインターレース処理をしなくなります。

XCapture-1の方でデインターレースしないためインターレースの特徴である横シマのノイズが見て取れます。
あとは、アマレコTV側でデインターレース処理の設定をして完了です。今回はスーパーファミコンの疑似NTSCなので「レトロゲーム」を選択します。

これで、60fpsのプレビューや録画が可能。あとは240pに対応してくれれば完璧ですね。

4.CUDAによるGPUエンコード
GTX760以上推奨となっていますが、私が所有している一番高性能なビデオカードがGF240なので心もとないですが、イチかバチかZOTAC GT240 512MB 128BIT DDR5で試してみました。
結論から書くと、今回はスーパーファミコンをS端子で接続してテストしたので推奨スペックを下回るGF240でも問題なく録画できました。ただし、若干画質が悪いように感じるのでそのあたりがビデオカードの性能によるものなのかどうか気になるところです。
■サンプル動画
スーパーファミコンをS端子で接続して録画したサンプル動画です。
ダウンロード | ファイル名 | 内容 |
XCapture1 | xcap_amarectv_60fps_amv3_s2_x264_4mbps | アマレコTVとAMV3ビデオコーデックで録画したものをX264でエンコード。 ファイルサイズがVideoKeeper2と近くなるよう4Mbpsでエンコード。60fps |
xcap_videokeeper2_30fps_cpu(no QSV) | VideoKeeper2でGPU支援機能を使わずに録画したもの。30fps、画質「高」 | |
xcap_videokeeper2_30fps_cuda_gf240 | VideoKeeper2でGPU支援機能のCUDAを使って録画したもの。30fps、画質「高」 | |
SC-512N1 | 以前の記事で公開したサンプル動画です。 SC-512N1-L/DVI スーファミS端子画質比較 を見てください。 |
■サンプル動画の画質比較
感想・・・
今回は使用したビデオカードがGF240と相当低スペックなため何とも言えませんが、推奨スペックのGF760でも同様の画質だとするとCUDAによるGPUエンコードは厳しいような気がします。Intel(R) Quick Sync Video(以下QSV)の方が画質が良いのでQSVを支持したいところですが、QSVはQSVでビデオカードを増設すると使えなくなると言うもどかしさ。
アマレコTV Ver3.00a 不具合修正版とMP3
【更新内容】
(1) 6個以上の入力端子を持つキャプチャデバイスを使った場合にエラー落ちする不具合を修正。
(2) MP3形式で録画する際、ビットレートを指定できるようになった。
ダウンロード
入力端子の問題はアマレコTV初期からずっと潜んでいた不具合でメモリ破壊を起こすため、どのような症状に
なるか不定です(私のところではアマレコTV終了時にエラー落ちする)。
入力端子が6個を超えるキャプチャデバイスと言うのがあまりないと思うので、今までは問題が表面化しませんでしたが、Ver3.00から入力端子が沢山あるSC500に対応したため、問題が表面化しました。
MP3で録画する際のビットレートは今までもiniファイル上で変更できましたが、今回から設定画面でも
変更できるようになりました。
音声の圧縮に関しては、48000Hz、16bit、2chのフォーマットにて無圧縮で録画すると約6時間で音データが4GBを超えます。ビデオファイルそのものはおそらく問題ないと思いますが、AviUtlで編集などを行うと4GBを超えた部分(約6時間を超えた部分)の音声が正しく扱えないようなので、6時間を超えるような録画を行う場合はMP3で圧縮しながら録画するようにして下さい。
試していないですが、128kbpsで圧縮すれば、60時間くらいは行けると思います。
なお、あくまでAviUtlの話なので、AviUtlを使わない人はMP3を使わず今まで通り無圧縮で録画して構いません。
あと、MP3はなんでも使えるわけではありません。私のところで使えたのは次のものです。
Windows7 64bit Lame ACM 3.99.5
WindowsXP 32it Lame ACM 3.98.2
アマレコTV Live アマミキ! Ver3.00 先行公開
主な変更点は、デスクトップキャプチャ機能を実装したことと、オーディオレンダラーの可変再生速度の再調整によりプレビュー音がゆがみにくくなったことです。
その他、1fps以下のフレームレートで録画できたり、ネットワークドライブなどに録画する場合もドロップフレームが生じにくくなるなど録画処理も改良されています。
また、アマステがマルチチャンネルに対応したので、4スピーカーや6スピーカー、8スピーカーのPC環境のまま利用可能となりました(録音時はステレオにダウンミックスされる)。96kHz以上で使えない不具合も修正されていますので、オーディオ周りの勝手も向上しています(アマミキ!のほうも同様に向上しています)。
■デスクトップキャプチャ簡易ヘルプ
現在Ver3.00に対応したヘルプがありません。ブログ内の記事を見てください。
■更新内容
【アマレコTV Ver3.00】
(1) デスクトップキャプチャ機能実装。
(2) 録画設定の録画フレームレートの初期値を999fpsに変更。また、0.2fps(5秒に一回画像を記録する)など1fps未満の設定も可能になりました。
(3) 録画保存先にドロップフレームが起こりやすいドライブ(NAS等のネットワークドライブなど)を指定してもドロップし難くなりました。
(4) 1fps以下で動作するビデオキャプチャデバイスに対応しました。
(5) 規定外(29.97とか30fpsなど以外)のフレームレートで動作するビデオキャプチャデバイスを使って録画した場合に、
作成されるビデオファイルのフレームレートができるだけ正確になるようになりました。
【例】 24.99fpsなどの場合、作成されるビデオファイルが24fpsになっていたのを24.990fpsとなるようにしました。
(6) 全般設定に「最小化でトレイに収納」オプションを追加。
(7) 録画設定に「ハーフサイズ」オプションを追加(画像サイズの調整(横16、縦8の倍数)も自動で行われる)。
(8) スクリーンショット設定に「クリップボードにコピー」オプションを追加。
(9) SC500系のビデオキャプチャカードの入力端子を選択できるようになりました。
(10) ホットキーの誤動作対策として、アマレコTV起動時に押されっぱなしのキーがあったら警告を表示するようになりました。
(11) ホットキーに「グローバル フック」オプションを追加。アマレコTV以外のアプリケーションにフォーカスがある場合にもホットキーが使えます。
(12) よく使うホットキーの初期値を変更(録画など、初期値でグローバールフックがONのホットキーは
誤動作防止のためCTRLを押しながら操作するようにしました)。
(13) ステータスモニターのオーディオレンダラー部にマイクロフィードバックによる補正状況を追加。
(14) アマレコTVのプレビュー音が歪みにくくなりました(オーディオレンダラーの可変再生速度による補正を、今までより緩やかに行うようにした)。
(15) アマステがマルチチャンネルに対応しました。(ステレオ以外の場合はステレオにダウンミックスして動作します)
(16) アマステが96kHz以上で使えなかった不具合を修正。
(17) 動画が分割された場合に、グラフが止まる不具合を修正。
【アマミキ! Ver1.05】
(1) アマミキ!の再生音がゆがみにくくなりました(オーディオレンダラーの可変再生速度による補正を、今までより緩やかに行うようにした)。
(2) オーディオレンダラーの反応時間と補正状況をステータスバーに表示するオプションを追加。
(3) アマミキ!を起動したままOSを終了した場合にボリューム設定なども保存するようになりました。
(4) アマステがマルチチャンネルに対応(ステレオ以外の場合はステレオにダウンミックスします)。
(5) アマステが96kHz以上で使えなかった不具合を修正。
(6) アマミキ!起動時にアマステのボリュームが常に100%になっていた(GUIの設定値が反映されない)のを修正。
■設定が初期化される項目
録画設定 | フレームレートの目安(旧:30、 新:999) |
ホットキー | 全般 |
オーディオレンダラー | 目標反応時間(旧:30、 新:40) 反応時間許容範囲(旧:5、 新:10) |
■アマレコTVの細かい(微妙な)変更点
(1) ホットキー押しっぱなしでスクリーンショットを撮った場合、ファイル名が連番になるように変更しました。
旧:時間が同じなら連番、時間が違ったら連番が途切れる。
新:ホットキーが押しっぱなしの場合、時間が違っても連番となります。
(2) 動画ファイルと静止画ファイルに付加する連番を"[番号]"から"#番号"に変更した。
(3) ほんのちょっとでもアマレコTVのウインドウが画面の外にはみ出していると、次回起動時にウインドウの位置が初期化されてしまうのを、
ほんのちょっとは許容するように変更しました。大きくはみ出していたら位置を初期化します。
(4) アマレコTV起動時に「Syntax error "auto_deint.ini" in 15 lines. 」等のエラーが出ないようになったかもしれません。
もともと私のところではエラーが出ないので改善されるかどうか不明です。
■ダウンロード
ダウンロード
マイコンソフトSC512N1-L/DVIとVideoKeeper2を使ってみました
ただし、出荷開始は5月中旬とのことです。
マイコンソフトSC512N1-L/DVIの紹介ページ
それに伴い付属のソフトウエアについても公開されましたのでダウンロードして使ってみました。
SC512N1-L/DVI(以下SC512)については以前、記事を書きましたが、その時は付属のソフトウエア(キャプチャソフト)が無かったためアマレコTVを使っての紹介でした。今回は付属するキャプチャソフト「VideoKeeper2」を中心に紹介します。
今回試したこと
・VideoKeeper2の動作
・IntelのGPU支援機能を使った録画機能
・キャプチャカードを2つ使った二画面キャプチャ
1.VideoKeeper2

スーパーファミコンをS端子で接続しキャプチャした様子です。
SC512にスルーアウトが付いたためかキャプチャソフトである「VideoKeeper2」は録画に重点が置かれている印象です。おそらくこの画面を見ながらゲームをして下さいというコンセプトはなく、ゲームプレイはスルーアウトを使ってくださいとなっているものと思われます。
VideoKeeper1では入力切替(コンポーネントとかHDMIとか)が簡単にできたりフルスクリーンにできたりとプレビューの勝手がよかったためそのあたりを期待すると裏切られるかもしれません。SC500N1/DVI(以下SC500)でもVideoKeeper2は使えますので、SC500を持っている人は試してみてはいかがでしょうか。
また、ドライバーも前回の記事から更新されています。

2.IntelのGPU支援機能を使った録画機能
VideoKeeper2ではIntelのCPUに搭載されているGPUを使って動画のエンコード(圧縮処理)を行うことができるようです。これにより録画中のCPU使用率を軽減できるメリットがあります。
ただし、GPUの支援機能を使うには制限が多々あり、基本的にビデオカードの拡張ができません(GeForceとかRadeonとか使えない)。
支援機能はCPU内臓のGPUをメインのビデオカードとして使う必要があります。今回はビデオカードを取り外してテストしました。また、使えるCPUも限られますので注意が必要です。
今回使ったCPUとマザーボード
・Intel(R) Core(TM) i5-3470S CPU @ 2.90GHz Ivy Bridge
・ASRock H77 Pro4-M (Intel H77)
VideoKeeprer2の設定画面

VideoKeeprer2の設定画面で「GPU支援機能」にある「Intel(R) Quick Sync Video」をONにします。CPUが未対応だったり、GeForceなどのビデオカードを使っていると、この設定をONにできません。今回はビデオカードを取り外してオンボードVGAを使うことでこの設定をONにできるようになりました。
VideoKeeper2のウインドウ(タイトルバー)

GPU支援機能が使える条件が整っていると「GPU:Yes」と表示されます。CPUが非対応だったりGeForceなどのビデオカードを使っていると「GPU:No」と表示されます。また、VideoKeeper2の設定のGPU支援機能のOn/Offも後ろに表示されています。
■録画テスト
PlayStation1の疑似NTSCのゲームをPlayStation2の本体でプレイ
コンポーネントケーブルを使ってフォーマット「720x240 60p」でキャプチャ
スケーラーまたはダブラーを使って縦に2倍にした720x480 60pで録画テストしました。
※ キャプチャカードはSC500を使用(データが残っていないけどS512でも同様の結果でした)
録画していないときのCPU使用率は約4%です。

GPU支援なしで録画しているときのCPU使用率は約14%です。

GPU支援ありで録画しているときのCPU使用率は約7%です。

手前味噌ですが、アマレコTVとAMV3ビデオコーデック(S3設定)を使って録画しているときのCPU使用率は約5%です。

GPU支援機能を使うことでCPU使用率を約14%から約7%へ減らすことができました。
GPU支援によるCPU負荷の軽減効果は大きいと感じましたが、純粋にCPU使用率を減らしたい場合はアマレコTVとAMVビデオコーデックの方がまだまだ有利のようです。
3.二画面キャプチャ

SC512N1-L/DVIの最後の"I"が抜けてる・・・
VideoKeeper2では対応するキャプチャカード(SC512やSC500)を2つまで同時に扱うことができます。
今回はSC512とSC500の組み合わせで試してみました。
ただし、ドライバー関連でおそらく多くの人がつまづくと思います。
私の場合、ドライバーはすぐに認識されましたが(デバイスマネージャに2つ表示される)、キャプチャソフトからはビデオソースフィルタが1つしか認識されず、そのため1つのキヤプチャカードしか使えない症状で苦労しました。
結局、何度もビデオキャプチャカードの抜き差しとVideoKeeper2のインストールを繰り返すことで何とか両方使えるようになりましたが、この辺りは使えることを信じて何度もトライするしかないか・・・
インストールさえ乗り切れば後は驚くほど簡単。

今回はSC500側にPS1の雷電IIをコンポーネントで接続、720x240 60pでキャプチャ(画面左)
SC512側にスーパーファミコンのF-ZEROをS端子で接続、720x480 60iでキャプチャ(画面右)
音についても両方のキャプチャカードの音が再生されます。さらにVideoKeeper2のウインドウの左右にある黄緑色のバーをクリックすると音量の調整(0から100%)ができます。
VideoKeeprer2設定画面

レイアウトも何種類か用意されています。
二画面時のスクリーンショットや録画のファイル

スクリーンショットや録画をするとそれぞれ別々のファイルが作成されます。
なお、マイコンソフトのホームページにあるQ&Aに次のような記述があるため、二画面表示の場合はプレビューの遅延が増えるようです。
Q. 弊社キャプチャーカード2枚同時してプレビューすると映像が遅延しているように見える。
A.2画面同時に表示しているときは、双方の映像を同期して表示するため映像が遅延する場合があります。1画面表示の時はプレビューの遅延が少なくなります。
また、直接二画面表示とは関係ありませんが、240 60pでキャプチャできる雷電IIの方は60fpsで比較的滑らかに表示される一方、S端子で接続したF-ZEROの方は30fpsでカクカクした表示となりました。さらに、疑似NTSCに対するデインターレース処理が原因と思いますがF-ZEROの方は多少のちらつきが生じます(録画した映像も同様に30fpsでちらつく動画となります)。
やはりS端子やコンポジット端子にも240 60p対応が望まれるところです。
最後にSC512N1-L/DVIの安定性についてです。
アマレコTVから見るとSC500とSC512について区別は付きません。ドライバーも共通の様なのでSC512の安定性はSC500と同等とみてよさそうです。なので安定性は極めて良いと感じます。ここ1か月ほどSC512を使っていますが致命的な不具合に気が付くことはありませんでした。画面の端が取り込めないこともなさそうだし、遅延も少ないためゲーム用のビデオキャプチャカードとしては最高峰と言えます。が、大抵SC500で十分です。
唯一気が付いたのはPCを起動してからSC512の入力端子を一度も選択せずアマレコTVを起動すると音が正常にキャプチャされない点です。100%再現でき非常にうるさい音が鳴ります。
VideoKeeperなら必ず入力端子を選択するため問題ありませんが、現行のアマレコTVはSC512に対し入力端子の選択ができないため一々デバイスの設定画面でコンポーネントなどの入力端子をクリックしてやる必要があります。
次のアマレコTVで対応できそうなので最終的に問題とはならないかもしれませんが、ドライバーの方でも対応されるといいな。
1080 60p対応HDキャプチャカード「SC-512N1-L/DVI」使ってみました
マイコンソフトの記事
4Gamerの記事
と合わせて見てください。
■変更点
現行のSC500N1/DVIからの主な変更点は次の通りです。
(1) 1080 60p対応
(2) S端子、コンポジットに対応
(3) スルー出力対応
(4) ソフトウエア強化(Video Keeper Ver2、CPUのエンコード支援機能「Intel Quick Sync Video」対応)
(5) PCIEx1 Gen2.0対応
今回送って頂いたサンプル版ではソフトウエアがドライバーのみなので(4)については不明です。
また、ドライバーもサンプル版のため製品時と異なる可能性が高いです。今回対応できなかった部分も製品版では対応されている可能性もありますので最終的にはマイコンソフトの公式情報で確認して下さい。
今回送られてきたモノ。この他にドライバーが入ったディスクがありました。

※ 写真はサンプル品のため製品に含まれる付属品と異なります。
基盤には入力用の端子と、出力用の端子があり、すべての入力に対し同じ規格のスルー出力ができるとのことです。付属するケーブルも入力用と出力用それぞれ同じものが付属するようです。真ん中はS端子とコンポジット両用。右はコンポーネント用です。
HDMI端子はありませんがDVI-HDMI変換アダプタを使うことでHDMIも扱えます(アダプタはサンプル版には含まれていませんでした)。
■増設
今回使ったマザーボード「ASRook H77 Pro4-M」の仕様です。

ちなみにPCIE Gen(ジェネレーション)1.0の帯域は250MB/s、Gen2.0は500MB/sです。
1080 60pをYUY2の無圧縮でキャプチャする場合に必要な最低帯域は
1920x1080x2x60=約248MB/s
となりますので、理論上Gen1.0では帯域が足りず倍率を4倍にする必要がありましたが、Gen2.0なら倍率1倍でも帯域は足りるようです。
SC512の場合はPCIEのジェネレーションだけGen2.0に対応しているかどうか気をつけましょう。
スロット形状x1 動作モード(倍率)x1 Gen2.0のスロットへ増設しました(上図写真の黄丸)。

4Gemerさんの記事によると出力側の小さい基盤は取り外すことができて、PCIEカード1枚分のスペースでも使えるようです。
PCの背面

■1080 60p
PlayStation3(以下PS3)をコンポーネントケーブルで接続して1080 60pのキャプチャをしてみます。
まず、アマレコTVのフォーマットで「w=1920, h=1080, fps=59.94, fcc=YUY2, bit=16」を選択します。

デバイス設定ボタンを押してキャプチャカードのプロパティから「3/COMPONENT」を選択します。そしてアマレコTVのプレビューを開始します。

PS3の電源ボタンをピッと音がするまで長押しします。PS3の画面出力フォーマットが初期化されるのでSC512の仕様に合わせて設定していきます。

出力端子で「コンポーネント/D端子」を選択します。

解像度の設定です。今回は1080 60pで使いたいので「1080p」のチェックボックスをONにします。(1080p以外が使われてしまうことが無いよう、念のため720pや1080iのチェックボックスはOFFにしておきます)

アマレコTVの画面いっぱいに表示されればSP3本体の設定は完了です。次にゲームの設定(確認)をします。

PS3のゲームを起動してゲーム側の設定も1080 60pになっているか確認します。(写真はGRAN TURISMO5の場合です。ゲームによっては解像度の設定が無い事があります。)

このときアマレコTVのステータスバーに”Cap[59.94fps 0Drop]”と表示されていれば大成功です。
※ PS3のゲームの殆どは720p専用です。その場合1080pで表示できないかPS3のスケーラーにより1080pへ引き伸ばされた表示となります。それらは720pでキャプチャする方が賢明ですので気をつけましょう(一般的にスケーラを通さず720pでキャプチャしたほうが高画質となります)。また、1080pに対応しているゲームでも処理落ちなどの弊害が起こるケースもあるようなので現状1080pを使うメリットはものすごく限られているように思います。今後のゲームに期待しましょう。
■スルー出力
左はアマレコTVのプレビュー、右のモニターにはSC512のスルー出力(コンポーネント)を接続して表示しています。

アマレコTV(キャプチャソフト)を終了してもスルー出力はされるようです。

さすがにPCの電源を落とすとスルー出力も停止します。

PCの起動中でもスルー出力されているので通電さえされていれば利用できるようです。(今回はアナログ系の端子のみ使用したためHDMIなどデジタル系の端子は不明です。)
■ファミコンとコンポジット
ファミコンをコンポジットで接続しSC512のプロパティで「6/COMPOSITE」を選択します。

240p(720x240 59.94)に設定しましたが、プログレッシブでキャプチャはされず480i(インターリーブ)でキャプチャされるようです。写真ではゲーム画面の上半分しかプレビューに映っていません。
480iに設定してキャプチャ

480i(720x480 29.27)に設定すれば正常にキャプチャされますがインターリーブだと240pと比べ17msほど余計に遅延するため残念です。
そこでSC512のコンポーネント用ケーブルの緑端子ににファミコンのコンポジットを接続し、SC512のプロパティで「3/COMPONENT」を選択すると・・・

モノクロ(輝度信号のみ)ではありますが240pでキャプチャできるようになります。

このあたりはコンポジットのまま240pでキャプチャできるようになって欲しいです。
■スーパーファミコンとS端子
スーパーファミコンをS端子で接続し、SC512のプロパティで「7/S-VIDEO」を選択します。

こちらも240p(720x240 59.94)に設定しましたがファミコンのコンポジットと同様480i(インターリーブ)でキャプチャされてしまいます。
右のモニターにはS端子がないのでコンポーネントケーブルをつないだままです(S端子のうち輝度信号のみスルー出力されているようです)。
コンポジットと同様240pでキャプチャできるようになって欲しいです。
■PS1とコンポーネント
PS2の本体でPS1のゲームを実行。コンポーネントで接続しました。

こちらはSC500と同様240p(720x240 59.94)でキャプチャでき完璧です。
■まとめ
最初アマレコTVのプレビューを開始すると「接続に必要な中間フィルターが~」と出て使えませんでしたが、SC500付属のキャプチャソフト「VideoKeeper」で映像を写してからはアマレコTVも使えるようになりました。そのほかは特にトラブルもなくSC500と同じ感覚で利用できました。スルー出力もすんなり使え、キャプチャソフトが起動していなくてもスルー出力が使える点は予想外によかったです。
■気になった点
・コンポジットとS端子の場合擬似NTSCでも240pでキャプチャできず480iになってしまう。
プログレッシブで1フレームずつ流してくれたほうがプレビューの遅延を減らせるので好ましいです。
・信号が無い時(ゲーム機の電源OFFなど)10fps程度の映像がキャプチャソフトへ流れてくる。
できればフォーマットで指定したフレームレートで流してほしいです。
・クロスバーが実装されていないので、入力端子を切り替えるのにキャプチャカードのプロパティを設定しなければならない。
クロスバーでなくてもVideoKeeperでは入力端子の選択ができるので独自のやりようがあるんだと思います。(恐らくDirect Showの)インターフェースを公開して頂けると良いな。
SC512で一番期待していたのがコンポジットやS端子による擬似NTSCの240pキャプチャでした。他のHDキャプチャカードは擬似NTSCに対応してなく、擬似NTSCに対応しているのは安価なSDキャプチャカードになってしまいますが、その殆どがインターリーブでのキャプチャであり、さらに動作タイミングもばらつきがある為遅延の大きい製品しかありません。SC512がコンポジットやS端子でも240pに対応し、このあたりをカバーできる製品になってくれることを期待します。
アマレコ・オーディオ・レンダラー デバックログとビデオキャプチャ編
またビデオキャプチャカードに搭載されているオーディオデバイスについてもふれます。
アマレコ・オーディオ・レンダラーのデバックログを見ると録音デバイス、再生デバイスの挙動がある程度見えてきます。主に次のことがわかります。
・録音デバイスが何ミリ秒単位で録音処理しているか(実際のアロケータサイズ)
・録音デバイスが何ミリ秒間隔でデータを送ってくるか(インターバルタイム)
・再生デバイスの実再生レート(再生サンプリングレート)
・そのとき再生デバイスにバッファリングされているデータ量(Latency)
・アマレコ・オーディオ・レンダラーの可変再生速度により補正された様子
1.デバックログのとり方
AmaAudioRenderer.iniのiDebugLogを1にするとAmaRecTV.exeまたはAmaMix.exeと同じフォルダに
「AmAudioRenderer(日時)[デバイス名].txt」と言ったファイル名でデバックログが作成されます。
2.デバックログの見方
例
0:02:46.341s(41ms):Smp( recv=1920, write=1901( 99%+0), 48000Hz), Latency=29(20)ms, FALSE= 0, Pos=07981185, 48040, 0:######### |
項目 | 例 | 説明 |
最初 | 0:02:46.341s(41ms) | データを記録した時間です。例ではプレビューを開始してから2分46秒341ミリ秒経過したときに録音デバイスからデータを受け取っています。 カッコ内は前のデータからの間隔(インターバルタイム)です。例では41ミリ秒間隔でデータを受け取っています。 |
Smp | Smp( recv=1920, write=1901( 99%+0), 48000Hz) | recvは録音デバイスから受け取ったデータのサンプル数(=アロケータサイズ)。例では1920サンプル(約40ミリ秒分の音声)のデータを受け取りました。 writeは再生デバイスの再生バッファへ書き出したデータのサンプル数。例では1901サンプル(約39.6ミリ秒分の音声)のデータを書き出しています。 カッコ内は可変再生速度による補正がどのように行われたかを記録しています。 100%なら補正を行っていません。99%なら1%再生時間が短くなるよう補正しています。 101%なら1%再生時間が長くなるよう補正しています。 パーセントの後の+0はさらに細かい制御(マイクロフィードバック制御)情報です。+1か-1になることがあります。 それぞれ1サンプル分再生時間を長く(短く)なるよう補正したことを表します。 最後に再生デバイスの再生レート(サンプリングレート)の実測値を10秒間の平均値で記録しています。 |
Latency | Latency=29(20)ms | その時点での反応時間です。再生バッファに溜まっているデータ量を1ミリ秒単位で記録しています。 カッコ内は設定値の目標反応時間です。この値に近づくよう可変再生速度が働きます。 例では目標が20ミリ秒に対し現在の反応速度が29ミリ秒と遅れているため、再生時間を短くし、反応時間が20ミリ秒に近づくよう可変再生速度による補正が行われています。 |
FALSE | FALSE= 0 | 可変再生速度により補正が行われた回数をカウントしています。 必ず必要な補正(プレビューの開始直後や途中で設定値が変更された場合)はカウントされません。 また、マイクロフィードバック制御の場合もカウントしません。 例では補正が行われていますが、直前に目標反応時間が30から20に変更された事による補正のためカウントされていません。 |
Pos | Pos=07981185,48040,0 | 再生デバイスのその時点での再生位置です。余り重要ではありません。 48040,0はLatencyの値を計算するのに使う補正値です。余り重要ではありません。 |
最後の# | ######### | 補正の様子を#の個数で表示します。100%の時#を10個表示します。99%の時は9個と1%ごとに#が減ります。 |
3.デバックログの例
OS | Windows7 x64 Professional SP1 | |
CPU | Intel(R) Core(TM) i5-3470S CPU @ 2.90GHz Ivy Bridge | |
MB | ASRock H77 Pro4-M (Intel H77) | |
Memory | DDR3 1600 8GB(4GBx2 Dual Cannel)read=23.7GB/s write=12.2GB/s | |
Software | アマミキ! Ver1.01 AmAudioRenderer Ver2.30 | |
Audio Device | オンボードのLine入力、Line出力 Realtek High Definition Audio | Driver:6.0.1.6482 |
Capture Card | GV-USB2 S端子 | Driver:1.1.0.93.5, 2010.06.28 |
SD-USB2CAP4 S端子 | Driver:5.2009.917.0 | |
SC-500N1/DVI コンポーネント端子 | Driver:1.1.0.108.0, 2011.08.09 |
遅延の実測はステレオ(左右同音)の片チャンネルだけPCのLine入力に接続し、PCのLine出力端子の様子と、PCを通さなかったもう一方のチャンネルの波形を記録します。PCを通さなかった方を基準にしPCを通したチャネルがどれだけ遅れたかを観察します。

3.1.オンボードのオーディオデバイスのLine入力とLine出力
0:04:51.861s(41ms):Smp( recv=1920, write=1920(100%+0), 48000Hz), Latency=10(10)ms, FALSE= 0, Pos=14006198, 47999, 639:########## 0:04:51.892s(31ms):Smp( recv=1920, write=1920(100%+0), 48000Hz), Latency=10(10)ms, FALSE= 0, Pos=14007678, 48000, 9:########## 0:04:51.932s(40ms):Smp( recv=1920, write=1920(100%+0), 48000Hz), Latency=10(10)ms, FALSE= 0, Pos=14009637, 48001, 8:########## 0:04:51.972s(40ms):Smp( recv=1920, write=1920(100%+0), 48000Hz), Latency=10(10)ms, FALSE= 0, Pos=14011559, 48002, 8:########## 0:04:52.013s(41ms):Smp( recv=1920, write=1920(100%+0), 48000Hz), Latency=10(10)ms, FALSE= 0, Pos=14013520, 48003, 7:########## 0:04:52.054s(41ms):Smp( recv=1920, write=1920(100%+0), 48000Hz), Latency=10(10)ms, FALSE= 0, Pos=14015479, 48004, 6:########## 0:04:52.095s(41ms):Smp( recv=1920, write=1920(100%+0), 48000Hz), Latency=10(10)ms, FALSE= 0, Pos=14017436, 48005, 5:########## 0:04:52.135s(40ms):Smp( recv=1920, write=1920(100%+0), 48000Hz), Latency=10(10)ms, FALSE= 0, Pos=14019357, 48006, 5:########## 0:04:52.176s(41ms):Smp( recv=1920, write=1920(100%+0), 48000Hz), Latency=10(10)ms, FALSE= 0, Pos=14021320, 48007, 5:########## 0:04:52.217s(41ms):Smp( recv=1920, write=1920(100%+0), 48000Hz), Latency=10(10)ms, FALSE= 0, Pos=14023280, 48008, 4:########## 0:04:52.257s(40ms):Smp( recv=1920, write=1920(100%+0), 48000Hz), Latency=10(10)ms, FALSE= 0, Pos=14025240, 48009, 3:########## 0:04:52.297s(40ms):Smp( recv=1920, write=1920(100%+0), 48000Hz), Latency=10(10)ms, FALSE= 0, Pos=14027158, 48010, 3:########## 0:04:52.338s(41ms):Smp( recv=1920, write=1920(100%+0), 48000Hz), Latency=10(10)ms, FALSE= 0, Pos=14029119, 48011, 2:########## 0:04:52.379s(41ms):Smp( recv=1920, write=1920(100%+0), 48000Hz), Latency=10(10)ms, FALSE= 0, Pos=14031080, 48012, 1:########## 0:04:52.420s(41ms):Smp( recv=1920, write=1920(100%+0), 48000Hz), Latency=10(10)ms, FALSE= 0, Pos=14033040, 48012, 0:########## 0:04:52.460s(40ms):Smp( recv=1920, write=1920(100%+0), 48000Hz), Latency=10(10)ms, FALSE= 0, Pos=14034958, 48012, 0:########## 0:04:52.501s(41ms):Smp( recv=1920, write=1920(100%+0), 48000Hz), Latency=10(10)ms, FALSE= 0, Pos=14036920, 47999, 639:########## 0:04:52.532s(31ms):Smp( recv=1920, write=1920(100%+0), 48000Hz), Latency=10(10)ms, FALSE= 0, Pos=14038399, 48000, 9:########## 0:04:52.572s(40ms):Smp( recv=1920, write=1920(100%+0), 48000Hz), Latency=10(10)ms, FALSE= 0, Pos=14040358, 48001, 8:########## 0:04:52.612s(40ms):Smp( recv=1920, write=1920(100%+0), 48000Hz), Latency=10(10)ms, FALSE= 0, Pos=14042280, 48002, 8:########## 0:04:52.653s(41ms):Smp( recv=1920, write=1920(100%+0), 48000Hz), Latency=10(10)ms, FALSE= 0, Pos=14044240, 48003, 7:########## 0:04:52.694s(41ms):Smp( recv=1920, write=1920(100%+0), 48000Hz), Latency=10(10)ms, FALSE= 0, Pos=14046199, 48004, 6:########## 0:04:52.735s(41ms):Smp( recv=1920, write=1920(100%+0), 48000Hz), Latency=10(10)ms, FALSE= 0, Pos=14048159, 48005, 5:########## 0:04:52.775s(40ms):Smp( recv=1920, write=1920(100%+0), 48000Hz), Latency=10(10)ms, FALSE= 0, Pos=14050087, 48006, 5:########## 0:04:52.816s(41ms):Smp( recv=1920, write=1920(100%+0), 48000Hz), Latency=10(10)ms, FALSE= 0, Pos=14052046, 48007, 4:########## 0:04:52.857s(41ms):Smp( recv=1920, write=1920(100%+0), 48000Hz), Latency=10(10)ms, FALSE= 0, Pos=14054007, 48008, 4:########## |
アロケータサイズが40msなので本来ならインターバルタイムは40msなりますが、デバックログを見ると所々31ms間隔になっているのがわかります。
これは、40ms間隔でデータを送るべきところを僅かに遅れ41ms間隔でデータが送られていて、その遅れが徐々に蓄積し10msの遅れに達したとき30ms間隔にすることでバランスをとるよう録音デバイスが動作しているためです。
長い目で見れば遅れた分を取り戻すように動作してるため問題になりませんが、遅延をできるだけ減らそうとした場合は厄介です。 結局この録音デバイスはアロケータサイズによる遅延(40ms)と動作タイミングのばらつきによる遅延(10ms)をあわせた50msの遅延が最低でも生じることになります。
3.2.キャプチャカードSC-500N1/DVI とオンボードLineアウト
0:01:01.171s(40ms):Smp( recv=1920, write=1920(100%+0), 48000Hz), Latency= 9(10)ms, FALSE= 0, Pos=02923357, 48000, 0:########## 0:01:01.211s(40ms):Smp( recv=1920, write=1920(100%+0), 48000Hz), Latency= 9(10)ms, FALSE= 0, Pos=02925278, 48000, 0:########## 0:01:01.251s(40ms):Smp( recv=1920, write=1920(100%+0), 48000Hz), Latency=10(10)ms, FALSE= 0, Pos=02927197, 48000, 0:########## 0:01:01.291s(40ms):Smp( recv=1920, write=1920(100%+0), 48000Hz), Latency= 9(10)ms, FALSE= 0, Pos=02929117, 48000, 0:########## 0:01:01.331s(40ms):Smp( recv=1920, write=1920(100%+0), 48000Hz), Latency= 9(10)ms, FALSE= 0, Pos=02931037, 48000, 0:########## 0:01:01.371s(40ms):Smp( recv=1920, write=1921(100%+1), 48000Hz), Latency= 9(10)ms, FALSE= 0, Pos=02932959, 48000, 0:########## 0:01:01.411s(40ms):Smp( recv=1920, write=1920(100%+0), 48000Hz), Latency=10(10)ms, FALSE= 0, Pos=02934878, 48000, 0:########## 0:01:01.451s(40ms):Smp( recv=1920, write=1920(100%+0), 48000Hz), Latency=10(10)ms, FALSE= 0, Pos=02936798, 48000, 0:########## 0:01:01.491s(40ms):Smp( recv=1920, write=1920(100%+0), 48000Hz), Latency=10(10)ms, FALSE= 0, Pos=02938718, 48000, 0:########## 0:01:01.531s(40ms):Smp( recv=1920, write=1920(100%+0), 48000Hz), Latency=10(10)ms, FALSE= 0, Pos=02940640, 48000, 0:########## 0:01:01.571s(40ms):Smp( recv=1920, write=1920(100%+0), 48000Hz), Latency=10(10)ms, FALSE= 0, Pos=02942557, 48000, 0:########## 0:01:01.611s(40ms):Smp( recv=1920, write=1920(100%+0), 48000Hz), Latency=10(10)ms, FALSE= 0, Pos=02944478, 48000, 0:########## 0:01:01.651s(40ms):Smp( recv=1920, write=1920(100%+0), 48000Hz), Latency=10(10)ms, FALSE= 0, Pos=02946398, 48000, 0:########## 0:01:01.691s(40ms):Smp( recv=1920, write=1920(100%+0), 48000Hz), Latency=10(10)ms, FALSE= 0, Pos=02948318, 48000, 0:########## 0:01:01.731s(40ms):Smp( recv=1920, write=1920(100%+0), 48000Hz), Latency=10(10)ms, FALSE= 0, Pos=02950237, 48000, 0:########## 0:01:01.771s(40ms):Smp( recv=1920, write=1920(100%+0), 48000Hz), Latency=10(10)ms, FALSE= 0, Pos=02952158, 48000, 0:########## 0:01:01.811s(40ms):Smp( recv=1920, write=1920(100%+0), 48000Hz), Latency=10(10)ms, FALSE= 0, Pos=02954078, 48000, 0:########## 0:01:01.851s(40ms):Smp( recv=1920, write=1920(100%+0), 48000Hz), Latency=10(10)ms, FALSE= 0, Pos=02955999, 48000, 0:########## |
アロケータサイズは40msで固定。
インターバルタイムも40msで安定しているのでまずまずの性能です。最後にまとめますが遅延の実測値は64msです。
一箇所マイクロフィードバック制御が働いています(オレンジ部)が、マイクロフィードバック制御はどのオーディオデバイスでも必ず発生するので問題ありません。
3.3.キャプチャカードGV-USB2とオンボードLineアウト
0:03:58.300s(30ms):Smp( recv=2400, write=2400(100%+0), 48000Hz), Latency=10(10)ms, FALSE= 0, Pos=11425086, 48005, 20:########## 0:03:58.360s(60ms):Smp( recv=2400, write=2400(100%+0), 48000Hz), Latency=10(10)ms, FALSE= 0, Pos=11427963, 48006, 10:########## 0:03:58.420s(60ms):Smp( recv=2400, write=2400(100%+0), 48000Hz), Latency=10(10)ms, FALSE= 0, Pos=11430844, 48006, 0:########## 0:03:58.450s(30ms):Smp( recv=2400, write=2400(100%+0), 48000Hz), Latency=10(10)ms, FALSE= 0, Pos=11432284, 48007, 20:########## 0:03:58.509s(59ms):Smp( recv=2400, write=2400(100%+0), 48000Hz), Latency=10(10)ms, FALSE= 0, Pos=11435117, 48008, 11:########## 0:03:58.570s(61ms):Smp( recv=2400, write=2400(100%+0), 48000Hz), Latency=10(10)ms, FALSE= 0, Pos=11438044, 48008, 0:########## 0:03:58.600s(30ms):Smp( recv=2400, write=2400(100%+0), 48000Hz), Latency=10(10)ms, FALSE= 0, Pos=11439484, 48009, 19:########## 0:03:58.659s(59ms):Smp( recv=2400, write=2400(100%+0), 48000Hz), Latency=10(10)ms, FALSE= 0, Pos=11442318, 48010, 10:########## 0:03:58.720s(61ms):Smp( recv=2400, write=2400(100%+0), 48000Hz), Latency=10(10)ms, FALSE= 0, Pos=11445242, 47999, 0:########## 0:03:58.750s(30ms):Smp( recv=2400, write=2400(100%+0), 48000Hz), Latency=10(10)ms, FALSE= 0, Pos=11446684, 48001, 20:########## 0:03:58.809s(59ms):Smp( recv=2400, write=2400(100%+0), 48000Hz), Latency=10(10)ms, FALSE= 0, Pos=11449518, 48002, 11:########## 0:03:58.870s(61ms):Smp( recv=2400, write=2400(100%+0), 48000Hz), Latency=10(10)ms, FALSE= 0, Pos=11452442, 48002, 0:########## 0:03:58.900s(30ms):Smp( recv=2400, write=2400(100%+0), 48000Hz), Latency=10(10)ms, FALSE= 0, Pos=11453885, 48003, 20:########## 0:03:58.960s(60ms):Smp( recv=2400, write=2400(100%+0), 48000Hz), Latency=10(10)ms, FALSE= 0, Pos=11456762, 48004, 10:########## 0:03:59.020s(60ms):Smp( recv=2400, write=2400(100%+0), 48000Hz), Latency=10(10)ms, FALSE= 0, Pos=11459644, 48004, 0:########## 0:03:59.050s(30ms):Smp( recv=2400, write=2400(100%+0), 48000Hz), Latency=10(10)ms, FALSE= 0, Pos=11461084, 48005, 20:########## 0:03:59.109s(59ms):Smp( recv=2400, write=2400(100%+0), 48000Hz), Latency=10(10)ms, FALSE= 0, Pos=11463961, 48006, 10:########## 0:03:59.169s(60ms):Smp( recv=2400, write=2400(100%+0), 48000Hz), Latency=10(10)ms, FALSE= 0, Pos=11466844, 48006, 0:########## 0:03:59.199s(30ms):Smp( recv=2400, write=2400(100%+0), 48000Hz), Latency=10(10)ms, FALSE= 0, Pos=11468284, 48007, 19:########## 0:03:59.259s(60ms):Smp( recv=2400, write=2400(100%+0), 48000Hz), Latency=10(10)ms, FALSE= 0, Pos=11471160, 48008, 10:########## 0:03:59.319s(60ms):Smp( recv=2400, write=2400(100%+0), 48000Hz), Latency=10(10)ms, FALSE= 0, Pos=11474045, 47999, 0:########## |
アロケータサイズは50msで固定。
インターバルタイムが30msから60msでばらつくため性能は悪いと言えます。
アロケータサイズが大きめなことと、インターバルタイムがばらつく分、遅延の実測値も悪く101msです。
3.4.ビデオキャプチャカードSD-USB2CUP4 とオンボードLineアウト
0:02:00.536s(32ms):Smp( recv=1536, write=1537(100%+1), 48000Hz), Latency= 9(10)ms, FALSE= 0, Pos=05714798, 48000, 0:########## 0:02:00.568s(32ms):Smp( recv=1536, write=1537(100%+1), 48000Hz), Latency= 9(10)ms, FALSE= 0, Pos=05716334, 48000, 0:########## 0:02:00.600s(32ms):Smp( recv=1536, write=1537(100%+1), 48000Hz), Latency= 9(10)ms, FALSE= 0, Pos=05717869, 48000, 0:########## 0:02:00.632s(32ms):Smp( recv=1536, write=1536(100%+0), 48000Hz), Latency=10(10)ms, FALSE= 0, Pos=05719404, 48000, 0:########## 0:02:00.664s(32ms):Smp( recv=1536, write=1536(100%+0), 48000Hz), Latency=10(10)ms, FALSE= 0, Pos=05720940, 48000, 0:########## 0:02:00.696s(32ms):Smp( recv=1536, write=1536(100%+0), 48000Hz), Latency= 9(10)ms, FALSE= 0, Pos=05722476, 48000, 0:########## 0:02:00.728s(32ms):Smp( recv=1536, write=1536(100%+0), 48000Hz), Latency= 9(10)ms, FALSE= 0, Pos=05724012, 48000, 0:########## 0:02:00.760s(32ms):Smp( recv=1535, write=1536(100%+1), 48000Hz), Latency= 9(10)ms, FALSE= 0, Pos=05725550, 48000, 0:########## 0:02:00.792s(32ms):Smp( recv=1535, write=1535(100%+0), 48000Hz), Latency=10(10)ms, FALSE= 0, Pos=05727084, 48000, 0:########## 0:02:00.824s(32ms):Smp( recv=1536, write=1536(100%+0), 48000Hz), Latency= 9(10)ms, FALSE= 0, Pos=05728620, 48000, 0:########## 0:02:00.856s(32ms):Smp( recv=1536, write=1536(100%+0), 48000Hz), Latency=10(10)ms, FALSE= 0, Pos=05730157, 48000, 0:########## 0:02:00.888s(32ms):Smp( recv=1536, write=1536(100%+0), 48000Hz), Latency=10(10)ms, FALSE= 0, Pos=05731693, 48000, 0:########## 0:02:00.920s(32ms):Smp( recv=1536, write=1536(100%+0), 48000Hz), Latency= 9(10)ms, FALSE= 0, Pos=05733229, 48000, 0:########## 0:02:00.952s(32ms):Smp( recv=1536, write=1536(100%+0), 48000Hz), Latency= 9(10)ms, FALSE= 0, Pos=05734764, 48000, 0:########## 0:02:00.984s(32ms):Smp( recv=1536, write=1537(100%+1), 48000Hz), Latency= 9(10)ms, FALSE= 0, Pos=05736302, 48000, 0:########## 0:02:01.016s(32ms):Smp( recv=1536, write=1536(100%+0), 48000Hz), Latency=10(10)ms, FALSE= 0, Pos=05737837, 48000, 0:########## |
アロケータサイズは約32msで固定。
良く見ると受け取るサンプル数(recv)が1536の場合と1535の場合があります。恐らく端数の帳尻を合わせるためと思われますが、これは問題ありません。
インターバルタイムも安定していて、アロケータサイズも小さ目なため遅延の実測値は58msと良好です。
ただ、何で32msなんだろうという疑問はあります。33msなら映像とあわせる為かなと思いますが、小さくできるならもっと小さくてもいいのに・・・
4.まとめ
前回のテストでオンボードのアロケータサイズを20ms以下にしても頭打ちされたと書きましたが、 アマレコ・オーディオ・レンダラーの設定の最小バッファサイズ(iMinimumBuffSizeMS)が20msなので、その部分で頭打ちされていました。
iMinimumBuffSizeMSを0とすることで20ms以下のアロケータサイズのテストができますのでその部分を再テストしました。 その結果も合わせて最後にデータをまとめて記します。
録音デバイス | 設定 | 遅延 実測値 | 補足 | |
アロケータ サイズ | iLatency | |||
Lineイン | 40ms | 40ms | 104ms | |
Lineイン | 40ms | 30ms | 94ms | 初期値 |
Lineイン | 40ms | 20ms | 84ms | |
Lineイン | 40ms | 10ms | 74ms | |
Lineイン | 30ms | 40ms | 88ms | |
Lineイン | 20ms | 40ms | 78ms | |
Lineイン | 10ms | 40ms | 68ms | iMinimumBuffSizeMS=0 |
Lineイン | 20ms | 20ms | 58ms | このあたりが妥当 |
Lineイン | 10ms | 10ms | 44ms | iMinimumBuffSizeMS=0 |
SC-500N1/DVI | 40ms | 10ms | 64ms | アロケータサイズは40msで固定 |
GV-USB2 | 50ms | 10ms | 101ms | アロケータサイズは50msで固定 |
SD-USB2CUP4 | 32ms | 10ms | 58ms | アロケータサイズは32msで固定 |
※ 遅延の実測値には±5ms程度の誤差があります。
オンボードLineインのアロケータ40ms、iLatency10msとキャプチャカードのSC500を比べるとアロケータサイズ、Latencyが同じなので遅延の実測値も近くなるはずですが、10msオンボードのほうが遅れています。これはデバックログのところでお話した録音デバイスのインターバルタイムが不安定なためです。同様にLineインのほかの実測値も10ms余計に多くなっているものと推測できます。もし、インターバルタイムが安定していたらアロケータ10ms、iLatency10msで実測遅延34msとなるのかもしれません。
一方ビデオキャプチャカードの方はアロケータサイズの変更ができないためこれ以上遅延を減らすことができません。もう一歩踏み込んでアロケータサイズの変更に対応してもらえると良いなと思います。