2009年4月7日火曜日

Veoh動画の再構成〔承前〕

先に,2つの Veoh 動画から映像と音声を抜き出して再構成する実験について書いた.

動画Aの映像と動画Bの音声をくっつけようとしたら,AとBのフレームレートが違っていたので,動画B(音声ストリームを使う方)の方に揃えてから合成する必要がありました,という話だったのだが,その時「へぇ~」と思った事があったので記しておく.

■同じ動画なのに再生時間が違うワケ

Veoh 等の動画共有サイトにある動画の中には,ソースが同じなのに,上げ主によって再生時間が違っているものがある.動画の前後が端折ってあれば短くなるのは当然だが,頭も尻尾も同じなのに何故か長さが違っている,という場合もある.前記事の動画 [1] と [2] がその例だ.

この例の場合,
 動画 [1] はフレームレートが 25 fps で再生時間 106m16s,
 動画 [2] は 23.98 fps で 110m49s
だった.オリジナルの再生時間は 110 min なので,動画 [2] はまともだが動画 [1] の方は何やらおかしい.

フレームレートと再生時間を掛けてみると分かるが,両者のフレーム数はほぼ同じなのだ.つまりオリジナルのどこかが 4min 分欠落して再生時間が短くなったのではなく,[1] はフレームレートが大きいせいで微妙に再生速度が速くなっていた訳である.

25fps は PAL(欧州,豪州等で使われるテレビ規格)のもの,一方 23.976 fps は映画の規格だ.ちなみに日米は NTSC で 29.97 fps.

リッピングに使ったメディアの出自と方法によってフレームレートが異なること自体には問題ないのだが,疑問に思うのは,なぜ再生時間が違ってしまうのかという点.

23.976 fps で作成された映画やアニメが DVD になる時にはフレームレートが変更され,日本なら 29.97 fps,欧州なら 25 fps に変更されているはずだ.ところが,フレームレートが変わるとコマ数の勘定が合わなくなってしまう.

例えば 1000 秒のアニメには 23976 フレームが含まれるが,欧州の DVD なら 1000 秒の動画には 25000 フレームが必要だから,1024 フレーム足りない.日本なら 5994 フレーム足りない.この不足分をどのように処理しているのだろう.

1つの方法は,もともとあった 23976 フレームしか使わないというもの.この場合,23976 フレームを 25 fps で再生すれば 959 秒になるし,29.97 fps なら 800 秒になる.どちらのケースでも再生時間は短くなる.

もう1つの方法は DVD 化する際にコマ数を増やすというやり方.不足分の 1024 あるいは 5994 フレーム(1000秒あたり)をどうにかして追加することになるが,その方法や如何に?

動画 [1] の再生時間が短いことを考えると,DVD 化する際にフレームが追加されたとは思えず,前者が正しいと推定される.となれば,TV で DVD を見た場合の方が,映画館で見るよりもフレームレートが早い分,若干早送りで見させられていると事になる.実際はどうなのだろう.謎だ.

【参考】
Flashビデオ習得ガイド@Adobe
フレームレート用語解説

■「フレームレート変更」の働き

動画のフレームレート変更をやってみて気づいたことがもうひとつ.Superで映像のフレームレートを変更しても再生時間は変わらないが,Virtual Dub だと変わるのだ.

Virtual Dub でフレームレートをオリジナルの値より小さくすると再生時間は長くなり,大きくすれば短くなる.例えばここで挙げた動画の場合だと,[1]のフレームレートは25fpsだが,これを23.976fpsに変換すると再生時間は
   25/23.976=1.043倍
になる.実際,[1]と[2]の再生時間はそれぞれ 1:46:16=6376sec,1:50:49=6649sec であり,その比をとると 1.043 になる.

Virtual Dub でこのような変換ができたお陰で,フレームレートの異なる動画から抽出した映像と音声を統合して意図する動画が作れた訳だ.

考えてみれば Virtual Dub がやっているのは単純なことで,映像の各フレームを映示する時間間隔を広げたり狭めたりしているに過ぎないと思われる.つまり,単にヘッダを書き換えているだけなのだろう.

これに対し,Super だとフレームレートを変更しても再生時間が変わらないのだが,実はこれは凄い作業なのではなかろうか.例えばフレームレートが1fpsの映像ストリームを考えると,それは1秒,2秒,3秒、、、の各時刻における映像の集合である.これを0.9fpsに変換するためには 0.9秒,1.8秒,2.7秒,3.6秒、、、の各時刻における映像がなければならない.これを Super は内挿により生成しているのではなかろうか.例えば 1.8秒の映像は1秒と2秒の映像を補間する,という具合に.実際にそうだとすれば,大層難しい作業をしていることになる.いや大したものだ(本当に凄いのは Super が内部で利用しているフリーのプログラムなのだけど).

実際そのような事が可能ならば,映画を DVD 化する際に同様の処理でフレーム数を増やすことだって可能なはずだ.ならば同じ映画であっても,ヨーロッパで買ったDVDより日本で買ったDVDの方がフレーム数は多いことになるのだが、、、一体どうなっているのだろう.
 

0 件のコメント: