YoutubeにアップロードしたRO動画の再生時間がやたら短くなる原因を探る

PreCaptで撮影したavi形式のRO動画をAviUtlとx264GUIExでmp4形式に変換してYoutubeにアップロードして再生すると・・・

『7分ちょっとの動画なのに、再生が11秒ぐらいで終わってしまう。』

といった問題があって、ずっと悩まされてきました。必ず起こるわけでなく、起こったり起こらなかったりします。

切り分けをしたところ、

・Youtube以外では問題なく再生できる。
・音声を抜いても起こる。
・エンコーダーとしてx264.exeを使っているものはすべて起こり得る。
・問題の起こる動画をエクスプローラーのプロパティ→詳細で見ると、『フレーム率』(フレームレート)の項目が異常になる。30のはずが1146など。
MediaInfoで見たときに”Source Duration”が表示されている動画で起こる。ここに設定されている時間で動画が終わる。

といったことがわかりました。ここまで来るのにおよそ1年かかったかも知れない・・・。

それで、MediaInfoのソースコードをダウンロードしてきて、”Source Duration”が表示される条件を詳しく調べていくと、mp4形式のファイル内に存在する映像トラックのsttsボックス(アトム)のsample_deltaがやたら大きな数となっている場合だと判明。

sample_deltaの値はどこから来ているのかと、x264.exeのソースコードを調べたら、–fpsオプションの分母の値だった。AviUtlでavi形式のファイルを開くときに、ドラッグアンドドロップしていたり、fps変換の指定をしていない場合、30fpsの動画だと–fpsの指定が10000000/333333になってしまう。これはAviUtlの『その他→ファイルの情報』のフレームレート欄で確認できる。分数が表示されていない場合は、30/1となっていました。

PreCapt、AviUtl、x264.exe・・・誰が悪いのかは分からないけど、ひとまずコレを強制的に30/1とすれば解決できます。avi形式のファイルを開くときにfps変換で30fpsと明示的に指定するか、『編集→再生速度の情報を変更』でフレームレート欄に30と入力するか、拡張編集で30fpsの土台を作ってそこにavi形式のファイルを放り込むかのいずれかでok。

よし、長年悩まされた問題もこれで解決だ・・・とおもいきや。

アップロード中に映像と音声の同期に問題があるといったエラーが出てしまいました。

アップロード完了後に再生してみると、エラーメッセージに反して問題は起こらないので、このまま放置しておいても良いのですが、ついでだったのでコレについてもなぜ起こるのか調べました。

・MediaInfoで見たとき、音声トラックに”Delay relative to video”の値が表示されている(33msなど)場合、エラーメッセージが表示される。

–bframesの値が0よりも大きい場合、H.264/AVCの仕様上1フレーム分の遅れが出るため、音声との同期がズレないように初期ディレイとしてedtsボックス内のmedia_timeに0よりも大きい値を設定しているようです。再生するFlash Playerがedtsを正しく認識しないため、Youtube側で警告を出しているのかも知れません。

1フレーム程度、正直に気になるものでもないですが、x264GUIExの『フレーム』タブのBフレーム欄、最大連続Bフレーム数を0に設定して、x264.exeに渡されるオプションの–bframesを0にすればエラーメッセージが出なくなります。圧縮率は10~20%ほど悪くなりますが・・・。

・Windows Movie Maker Version 2012 だとmp4形式で保存しても問題なし!

edtsを出力しないためにエラーメッセージが出ません。しかし、本質的に問題を解決しているわけではなく、細かい圧縮オプションの設定ができず、文字がボヤけやすいのでRO動画に使うのはオススメしません。edtsを後から削除するのであれば、Atomic Parsleyを使う方法もあります。(参考:Understanding the MPEG-4 movie atom)

最後に・・・

・MKV形式でアップロードすれば、上記の問題は起こらない。

んですけど、mp4形式のほうがいろんな機器で再生できて便利だもんね。

環境:
PreCapt Version 1.1.23
AviUtl 0.99m
x264GUIEx 1.73
x264 core:130 r2274M+r717[x64] release1
L-SMASH isom/mov re-muliplexer rev715

Comments are closed.