No.1ベストアンサー
- 回答日時:
テレビや映画等は1枚1枚の微妙に異なる画像を高速で表示することで動きを表示していることはご存知だと思います。
(いわゆるパラパラマンガのイメージですね)MPEGでも基本的には同じなのですが、いくつかの特長があります。
・キーフレームには1枚の静止画の全画面イメージが保存されている
・キーフレーム以外の各フレームには差分しか保存されていない
・差分以外の部分(キーフレームから変化無し)はムービー再生時には全く処理されない。
つまり、MPEGではキーフレーム以外では差分(画面上でキーフレームから変更のあった部分)のみの画像情報しか保存しないことで高い圧縮率を実現しています。
画像そのものを圧縮したりもしていますが、まぁ上の考え方でも問題無いです。
またテレビや映画、アニメなどはMPEG風に言えば全てがキーフレームで構成されているということになります。
これらを踏まえた上で、MPEGの問題点をあげてみると…
1.キーフレームの出現頻度を上げるとファイルサイズが極端に大きくなってしまうことがある
2.動きの速い場面(特に画面全体がスクロールするような)ではキーフレーム間の各フレームの差分情報が大きくなってしまう
3.画面全体に及ぶような差分による書き換えは処理が重く再生時のフレームレートが上がらずカクカクした動きになってしまう
これに関してはPCの高速化によりほとんど関係無くなってしまってますね。(^^;
前振りが長くなりました。m(_._)m
結局、キーフレームがあると3の時に非常に重い処理である「画面全体に及ぶような一部書き換え処理」ではなく、キーフレームが持つ画面情報を無条件で一括転送することで表示することが出来るため、滑らかに画面表示することが出来るようになります。
なぜ画像の一部書き換え処理が重いかについては詳細は省きますが、簡単に言えばある画像(キーフレーム)と別の画像(差分)を合成することは大変な計算量が必要と思っていただければいいです。
このため全画面に及ぶような差分があるとそのために処理する計算量が膨大になるために1画面を表示するために時間がかかる、結果、フレームレートが落ち、カクカクした動きになるというわけです。
また画面の動きが速いと差分情報も非常に大きくなってしまいますが、キーフレームをある程度の頻度でいれてやると、差分自体の情報量は相対的に減ります。
ですので、動きの速い場面が多いムービーの場合はキーフレームを少し多めに入れてやることで、逆にファイルサイズが小さくなることもあります。
また固定された背景の画面上を小さな物体が移動するだけといったアニメーションであれば、キーフレームは最初の1枚だけでも大丈夫です。
上の例はちょっと極端ですが、適切なキーフレームの量(何秒に1回とか)というのはそのムービーの内容次第なのでなんとも言えません。
こんなところでおわかりいただけたでしょうか?
大変わかりやすい説明、ありがとうございました。mpeg4で試行錯誤しているのですが、どうやら自動的にキーフレームを入れてくれる機能があるようで、あまり悩まなくて済みそうです。手持ちのムービーの場合、10~2秒おきくらいまでは大きさが変わらず、1秒以下にすると途端に大きくなるのでこれくらいが適正値ということなんでしょうね。今度はできるだけノイズを減らして効率の良い圧縮ができるように研究してみます。
・・・mpeg4のデータレート指定がかなりいい加減なので困ってはいますが。(笑)
では、ありがとうございました。
No.2
- 回答日時:
普通は1~2秒、長くても3秒くらでしょうか。
何パターンか実際に試してみて、画質、動きなどを実際に体験してみるのが一番です。長い間キーフレームがないと、「少し戻って見直す」ような時に、キーフレームが遠すぎて、再生開始までに時間がかかります。
プレーヤでシークしたときのあの変な動きはキーフレームを捜していたのですね。確かに、減らしすぎると再生が追いつかずに崩れてしまうことがありました。今は2秒くらいで落ち着いています。あまり悩まずに、品質を少しでも上げられるように研究してみます。ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
2倍速を等速動画に(車載動画)
-
フレームでのResponse.Redirect
-
ブラウザが揺れる(震動)させ...
-
キーフレームとはなんですか?
-
音楽を止めたい><
-
眼鏡レンズを持参すればフレー...
-
インターネットエクスプローラ...
-
大元のタイムラインの変数を初...
-
タイムラインを5倍の長さにしたい
-
オプションボタンを矢印キーで...
-
actionscript2.0から3.0へ、
-
FLASHでピクロス(お絵かきロジ...
-
Flashでの連打ゲームの作成方法...
-
ソニーのPlayMemoriesHomeを使...
-
シーン逆再生から再生
-
FlashMX フェードアウト
-
雪の降るスクリプトで、、、
-
プルダウンメニューとフェード...
-
GetPrivateProfileString変値
-
ニュースティッカーの作り方
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
フレーム内に移動したい
-
車の運転時のメガネ 縁なし(...
-
フレーム内のオプションボタン...
-
フレーム内でのリダイレクトに...
-
Access2010でサブフォームのフ...
-
シンクライアントとMetaFrameの...
-
ドロップフレームの計算をエク...
-
チェックボックスを横並びに表...
-
VB6のスクロールバー付きフレー...
-
VBで動的に作成したパネルの上...
-
Directshowを使って動画を画像...
-
富士通FMV-C600のHDD交換
-
word 目次フレームの作成
-
#1009: null のオブジェクト参...
-
URLを隠す、または別アドレスな...
-
テレビのここの部分ってなんて...
-
格闘ゲームのコマンド→↓→のプロ...
-
VBSでHTMLソースの取得方法で
-
2Dゲーム作成する際、アニメー...
-
チルダを含むURLの読込
おすすめ情報