ちょっとテストのためにビデオカメラで録画した画像をエンコードしていたのですが、どうも音ずれが発生しておかしいな~と思っていたときのこと。
FullHDの動画をエンコードしては「画像と音がずれる」という現象に悩まされていました。
エンコード自体はHandBrakeを使っていたのですが、オプションをいろいろと調べてフレームレート固定やら各種フィルタ設定やらを合わせてもどうにもうまくいかない。
で、困り果てて変なことをしてみると気がついてしまったこと。
まさかハードウェアデコードがないために・・・
試しに同じオプションのまま、解像度だけを落としてエンコードしてみたときになぜか音ずれが止まるという現象を見つけてしまいました。
・・・あれ?
と言うわけで何となく分かった原因。
私のPCはWindowsMediaPlayer12でハードウェアデコードを使わないようにするには?の設定をしてあるため、通常はソフトウェアデコードを使用するようになっています。
が、どうも高解像度(+高フレームレート)の動画になるとCPUの処理が追いつかなくなるらしく、デコードが遅れると言う状態になるようなのです。
PCに設定した特殊な状態が引き起こした現象で、これに気がつかなかったので何回動画を作っても音ずれの状態が発生すると言う現象に。
ffdshowの表示でも見て状態を確認すれば良かったのですね・・・。
64bit版OSと言う状態をうまく使いました
どうするかと言いますと、
- 32bit版WindowsMediaPlayer : ffdshow経由のソフトウェアデコード(MediaFoundationや各種ハードウェアデコードフィルタを使用しないようにする)
- 64bit版WindowsMediaPlayer : 通常状態(MediaFoundationの状態を復帰させる)
と言う状態にすることで、32bit版を通常再生、64bit版を高解像度の再生に割り当てて何とか乗り切るという方法を考えつきました。
卑怯くさいですが、再生できればこちらの勝ちなので。わっはっは。
ハードウェア支援が無い状態で高解像度動画を再生して音ずれとは・・・
それは「音ずれ」ではなく単に「パワー不足」というのですよ・・・。