MPEG-1 MPEG-2を編集しよう

 

GOP単位で編集しようと思うならとても重要なこと

実はGOPは映像順で並んでいるわけではない。というか、GOP順に映像が再生されるわけではない。これ重要です。

 

表1      IBBPBBPBBPBB のGOPが15の場合

GOPの番号   1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 TMPGEncのMPEGツールではこの順番でGOPが認識されます。
GOPの並び   I BB P BB P BB P BB P BB  
              TとPの配置はそのままです。
再生時の映像の並び BB I BB P BB P BB P BB P   I,PとBBの再生順が前後します。(Bピクチャが先行)
GOPの番号 2 3 1 5 6 4 8 9 7 11 12 10 14 15 13   MPEGツール(その他編集ソフト、プレイヤー大半)の映像とGOPの関係にあたります。(映像が2フレーム先行)
擬似AVI化したときの番号 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15   TMPGEncやAviUtlで読み込むと、この順番で映像が表示されます。
GOPの番号   1 2 3 4 5 6 7 8 9 10 11 12 13 14 15  
GOPの並び I BB P BB P BB P

BB

P BB TMPGEncのMPEGツールでカットする時はこの並びで『※』でカットされます。
GOPの並びにしたAVI番号   3 1 2 6 4 5 9 7 8 12 10 11 15 13 14 TMPGEncやAviUtlで読み込むと、この番号順で表示します。

注・・・します→するようです。

編集する前にまずMPEG-1.2を擬似AVIとしてAviUtlTNPGEncで読み込めるようにする必要があります。

 

MPEG-1を擬似AVIとして読み込む

MPEG-2を擬似AVIとして読み込む

 

矛盾の法則

注・・・VirtualDubでMPEG-1を読み込んだとき、GOPの並びとフレーム番号と絵がごちゃ混ぜになっているので注意が必要です。その他の(TMPGEncやAviUtlでも)編集ソフトにもよほどの機能がない限り同じことがいえます。

GOPの並び 一致します。
GOPの番号(フレーム番号をピクチャ番号としたとき) 一致します。
絵とフレーム番号 一致します。
絵とGOPのならび 一致しません。この部分で混乱します。上の表をみればなんとなくわかると思います。

でも編集に使うわけでないならとくにかんけいありません(が、ほかの編集ソフト・・・というか、とにかく編集するときにはおおあり)・・・。GOPの構造VirtualDubはGOPまで表示される)をしらべるときぐらいです。

 

荒業でGOPを調べる方法→作成中

 

ドラマやアニメ等の番組の宣伝をカットして本編だけ保存したい

という流れで説明します。

とりあえず切りがいいので 1GOP IBBPBBPBBPBBPBB の15で録画したものを使います。 

 

1 MPEG-1を擬似AVIとして読み込めるようにします。

2 編集したいMPEG-1の構造をチェックします。『VCDChecker』を使用します。録画した時の情報がわかるなら使う必要はありません。

VCDChecker』 入手先→『あおの規格外Video−CD企画

 

MPEG-1をチェックする

とくにフレームサイズフレームレートオーディオストリーム、ビットレートはメモして控えておきましょう。

 

 

次にTMPGEnc』を起動します。入手先→本家『堀ほぅむぺぇじ』 本場『TMPG Enc.

 

チェックした数値をTMPGEncに入力する

上でチェックした数値をそれぞれ入力します。

カットして結合するときにカットしたものと加工したものの情報が違うとエラーが出るからです。

上に同じ。

 

 

いよいよ編集します。

AviUtlを起動してやり、フレームサーバー経由の擬似AVIを読み込みます。

入手先→AviUtlのお部屋

注・・・フレーム番号がTMPGEncでは『0』から始まるのに対して、AviUtlでは標準設定で『1から始まります。そのままでは1フレームずれます。これは非常にまずいので修正します。

AviUtlで編集するならここ重要です。

フレーム番号を0からにする』にチェックを入れます。

 

 

 

ココからが面倒です。(理屈が)

画像は適当ですが、とりあえずこうなってます。

コーヒーのCM 化粧品のCM 番組本編 このうち化粧品のCMをカットしてやります。 

カットするCM直前の本編(今回はコーヒーのCM)フレーム

873フレーム目です。

カットするCM最初のフレーム

874フレーム目です。

カットするCMの最後のフレームです。

1769フレーム目。

本編の最初のフレームです。

1770フレーム目です。

 

このフレーム数は、AVI再生としてのフレーム番号でもあり、GOPの番号として正しいのですが、絵の順番とGOPの構造が一致してません。ややこしいですね。

 

説明その1

GOPは『T』から始まります。また、『T』のみ1つの絵として完成できます。だから、『T』直前でカットする意外に映像がうまく分割できません。つまり IBBPBBPBBPBB(ココ) IBBPBBPBBPBB(ココ)IBBP・・・ で(ココ)の部分でしか綺麗にカット出来ません(GOPとして、つまりMPEGとして)。それ以外の部分でカットすると(TMPGEncではカットできない模様)前後の絵で情報が足りなくなります。・・・GOPとはまあ、『T』がキーですね。

 

『T』ピクチャの算定方法

まず、それぞれカットするフレーム数からGOPとしてどのへんに当たるか計算してやる必要があります。え〜、一番最初のフレーム番号が0からでGOPが(今回は)15ピクチャで構成されているので15で割ってやれば『T』ピクチャの位置がでます。GOPが18なら18で割ってください。

カットするCM直前のフレーム 873 873÷15=58 余り 3 逆算して15×58=870フレーム。15で割り切れる870が『T』ピクチャ。そこから数えるとカットする直前(873)が『P』となります。
カットするCM最初のフレーム 874 874÷15=58 余り 4 でここ(874)が、『B』
カットするCMの最後のフレーム 1769 1769÷15=117 余り 14 ここ(1769)が『B』
本編の最初のフレーム 1770 1770÷15=118  割り切れたのでここ(1770)が『T』

 

これはあくまでGOPとしての構造です。配置、番号はあってますが、AviUtl等や再生される映像とは一致しません。 

GOP番号 ・・・ 869 870 871 872 873 874 ・・・ 1767 1768 1769 1770 1771 1772 ・・・
GOP ・・・ B I B B P B ・・・ P B B I B B ・・・

矛盾点は一番最初の表1で参照して下さい。

 

具体的にどういうことをするかというと

え〜っと、流れとしては、AVIとして絵の順番に表示されているものをMPEG-1(GOPの順番に並び替え)として再圧縮して、MPEGツールでMPEG-1(GOP)として結合してやるということになります。矛盾を整合してやるわけです。ここで目安になるのがまたしても『T』ピクチャになります。

『T』ピクチャはそれ1枚で絵として完成していて、フレーム番号が一致するからです。

ただし・・・BBPBB『I』(ココ)BBPBBPBB・・・ (ココ)で切る(MPEGツールでは切れないと思うけど)とGOPの構造上、『T』と不完全な『BBP』が再生されてしまいます。再生順は不完全(B) 不完全(B) 完全(T) 抜けて(無し) 抜けて(無し) 不完全(P) (のハズ。実際は少し違うようなあってるような?なにせややこしいので・・・)

・・・BBPBB(ココ)『I』BBP・・・ (ココ)の部分がもっとも望ましい(というか(ココ)でしか切れない)のです。

 

 

わかりにくい表

MPEGツールでカットする場所 →の理由で854『B』と855『T』の間で切ってやる。このあたりは855マイナス(3〜10)の間で適当に切っても、自動的に855で切れる。 この部分(870)でカットするとCMの部分(874以降)が少しのこる。 CM この部分は偶然にも『T』なのでスパッと切れるかと思ったらうまくいかなかった。再生して切った場所と実際に切れた場所の絵を見比べると1785フレームまで飛んでいた。実験してみた結果、MPEGツールのカットは切った場所の直後の『T』フレームまで飛ぶようだ。しかし、切る場所が『T』に近すぎると(その『T』以前で3フレーム以内。ということは、表1とつじつまはあってる)その次の『T』に飛ぶようだ。(もちろん2フレームより前、以前のフレームに調整すれば1770で切ることも出来る) ←の理由でここで切る(1770にセットしても勝手にここで切れる)。
再生映像 本編 本編 本編 CM CM CM 本編 本編
GOP IBBPBBPBBPBB IBBPBBPBBPBB IBBPBBPBBPBB ・・・ IBBPBBPBBPBB IBBPBBPBBPBB IBBPBBPBBPBB
フレーム&GOP(ピクチャ)番号 840〜854 855〜869 870 〜873 874〜884 ・・・ 1755〜1769 1770〜1784 1785〜1799
再生順に表示したGOPの流れ ・・・・・・・・・・・/BB IBBPBBPBBP/BB IBBPBBPBBP/・・ ・・・ ・・・・・・・・・・・/BB IBBPBBPBBP/BB IBBPBBPBBP/・・
↑のGOP(ピクチャ)番号 ・・・・・・・・・/856 857 855 859 ・・・/871 872 870 874 875 873 877 878 876・・・・/・・ ・・・ ・・・・・・・・・・・/1771 1772 1770 1774 1775 1773 ・・・・/1786 1787 1785 1789 1790 1788・・・・・・/・・
↑に実際の再生順に番号を付け替えたもの(フレーム順)AviUtlなどでもこの順番で。 ・・・・・・・・・/853 854 855 856 ・・・/868 869 870 871 872 873 874 875 876・・・・/・・ ・・・ ・・・・・・・・・・・/1768 1769 1770 1771 1772 1773 ・・・・/1783 1784 1785 1786 1787 1788・・・・・・/・・
AviUtlを使用して実際に編集して『つなぎ目』のMPEG-1を作成するのに必要なフレーム この真上の表からGOPをAVI化したとして必要なフレームは853〜873になります。 ここはCM部分ですのでカットします。 1770〜1784フレームは(今回の場合)MPEGツールでカットされるので必要になります。 これより後はMPEGツールでカットしても問題なく再生れます。これ以降必要ありません(AviUtlでつなぎ目のMPEG−1部分を編集するという意味において)

 

では実際に『わかりにくい表』から作成します。

 

編集

AviUtlを使用して擬似AVIファイルをカットしていきます。

1785フレーム以降は必要ないのでカットします。
編集→『選択範囲のフレーム削除』
CMをカットしていきます。1769フレーム
同上。874フレーム
CM部分をカットしたので874フレームに本編フレームが来ます。
855が上の計算で『T』ピクチャになります。が、ここで切ると直後のBBの映像が足りません。

ここは映像ではなくGOP番号(ピクチャ)としてフレーム番号をみてます。

上やわかりにくい表より853フレームまで必要になります。
853は必要なので、852以前をカットします。
これで必要な0〜35フレームが出来ました。
あとは編集プロジェクトとして保存します。

注・・・この編集はGOPをAVIに変換しての作業なので映像の情報が足りないということはありません。

 

 

TMPGEncAviUtlで作成した編集プロジェクトを読み込みます。

先ほど作成したAviUtlの編集プロジェクトのファイルaupを映像ソースのところに読み込み圧縮します。(ここで『絵』の情報が足りなくなるということはありません。)

これがつなぎ目のMPEG-1ファイルになります。

しかし、ちょっとした問題が・・・。

ファイル→MPEGツールを開き『結合(カット)』を選択し、もとの編集したいMPEG-1ファイルを読み込みます。
こういう画面です。フレーム単位が表示されないのでCMと本編等のわかりやすところから自分で逆算していきます。カーソルキー等で1フレームずつカットする場所を数えていきます。

注・・・MPEGツールで表示される映像も矛盾の法則が適用されます。

だいたいここで847あたりか?ここらで切る(編集)と次(855)の『T』ピクチャまで自動で行くのである程度アバウトでもいいと思います。
先ほど作成したつなぎ目のMPEG-1を追加。
もう一度もとのMPEG-1ファイルを読み込み、、本編分を編集(1785以降のみがちゃんと入るようにそれ以前をカット)してやります。

あとは保存先を選択して実行して出来上がり。

でもここでも問題が。

 

問題点

問題その1  35フレームで作成したプロジェクトでもMPEG-1にすると37フレームになる。0〜35+(コピー35+コピー35)で2フレーム余分なものが入る。最初が静止画とかなら問題ないけど、動きのあるシーンだと少し目立つ。だいたい1〜2フレーム余計なフレームが作成されてしまう。

対策として、アニメ等で静止画のシーンまで編集GOP部分を延長してやるとか。

問題その2 再生の一番最後でノイズが入る。

対策として、音声部分を編集してやるか、ブラックシーン(なんていうかしらない。映画の最後とかで黒いシーンが続くあれ。)を適当に貼り付けて調整してやる。

 

 

戻る