• ベストアンサー

MPEG1とMPEG2を見分ける

お世話になります。 ExcelVBAでファイルを検索するシステムを作成しています。 ここで検索するファイルはMPEG2限定なのですが、「ユリードビジオスタジオ」で作成されたMPEG2のファイルでも、「真空波動研」等で調べると実はMPEG1だった・・・。というファイルが存在し難航しています。(逆の場合もあります。MPEG1で作ったのに、実はMPEG2だった・・。) 多分内部的な規格の違いによるものだと思います。 最初はバイナリエディタ等でヘッダ情報を取得していたのですが、 ヘッダ情報だけでは判断できそうに有りません。 このファイルはMPEG1として作られたのか、MPEG2として作られたのかを判断する方法をどなたかご教授下さい。 ちなみにここで言うMPEG2の基準としては、WinMediaPlayerのVrt 6.4で再生できないファイルを指します。

質問者が選んだベストアンサー

  • ベストアンサー
  • hawkwind
  • ベストアンサー率34% (160/469)
回答No.1

過去にAVIファイルの構造を解析したことがあります。 AVIファイルにはヘッダーに細かく情報が記載されているのですが、 MPEGにはそういう情報はないのですか。 バイナリエディタでみたようですが、 よろしければどのような構造になっているのか教えて下さい。 基本的にMPEG1とMPEG2は圧縮技術としてはほぼ同じものです。 ただ、Mpeg2はおそろしいほど拡張性があります。 例えば、MPEG2はインターレース、VBRに対応していますし、 ハイビジョン用などに11種類のプロファイルが制定されています。 エンコードの方式もフィルタも自在に組み込めますので、 メーカ各社も独自のエンコーダを持っています。 おそらくはこういった付加情報を基に判断するしかないのかもしれません。。。 >ユリードビジオスタジオ」で作成されたMPEG2のファイルでも >「真空波動研」等で調べると実はMPEG1 これも謎の多い文書です。 ユリードのバージョンが古いせいなのかタコなのか、 はたまたMpgg2の作成条件がたまたまMpeg1の規格にはまってしまったのか・・・ 前後の記述からして、 このファイルはメディアプレイヤ6.4で再生可能なのでしょう?

kyo----
質問者

お礼

hawkwind様。 お返事ありがとうございました。 (1)まず、依頼主が、「ユリードビジオスタジオ」というソフトを使用し、MPEG1、MPEG2のmpgファイルを作成しています。 (作成方法は私にも良く解りません・・。) (2)その中で、MPEG2のファイルのみを探し出すプログラムをExcelマクロで作成。(内部的には、まず拡張子が*.mpgのファイルを取得し、その中でもMPEG2のファイル一覧を出すというものです。) バイナリエディタでこれらのファイルをみると、 ASSRESS 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 00000000 00 00 01 B3 2D 01 E0 C4 04 E2 21 70 00 00000010 00 08 00 40 00 00 01 00 00 0B 78 80 00 ・ ・ 00049130 00 00 00 00 00 00 00 00 00 00 00 00 00 ↑こんな感じになるのですが、最初は[00000000]の頭5バイト分の情報を取得し、これが[00][00][01][BA][44]になっていればMPEG2だ!という判断をしていたのですが、 (参考資料リンク:http://b2ch.at.infoseek.co.jp/dump.html#menu) いざテストしてみると、上記パターン以外にもMPEG2のパターンがある事が解りました。 >「ユリードビジオスタジオ」で作成されたMPEG2のファイルでも「真空波動研」等で調べると実はMPEG1これも謎の多い文書です。 これは、依頼主が、「ユリードビジオスタジオ」でのファイルの作成過程で、「このファイルはMPEG1だ!」「このファイルはMPEG2だ!」と決めることが出来るらしいのですが、実際フリーのコーデック調査ソフト「真空波動研」でこれらを再生すると、依頼者は「MPEG2だ!」と言っているファイルが明らかに「真空波動研」上だと"MPEG1"と判断されてるんです(^^;)。(逆も有り) >ユリードのバージョンが古いせいなのかタコなのか、 >はたまたMpgg2の作成条件がたまたまMpeg1の規格にはまってしまったのか・・・ hawkwind様のおっしゃる通り、後者の可能性が高いと思います。 逆に、VBA上から、MediaPlayerクラスで、どのフィルタを使っているのか?という情報は取得出来るものなのでしょうか?

その他の回答 (2)

  • jgk
  • ベストアンサー率75% (104/138)
回答No.3

パックヘッダ(00 00 01 BA)の最初バイトが 上位4bitが0010がMPEG1 上位2bitが01がMPEG2 です。 なんらかのデータ(タグ等)が付加されてる可能性もあるので、先頭からというのは不味いかもしれません。 真空波動研は多重化されてないビデオのみのファイル(エレメンタリーストリーム、ビデオの場合00 00 01 B3で始まってると思います。)、拡張子だけ見て判断みたいですので、あてにならないと思います。 (拡張子をaaaなどにして、調べると未対応形式になると思います。) この場合、ビデオシーケンスヘッダ(00 00 01 B3)の後に、拡張ヘッダ(00 00 01 B5)がくれば、MPEG2なんですが、ビデオシーケンスヘッダが可変長ですので注意。 長くても139Byteなので、ビデオシーケンスヘッダから150Byte以内に、00 00 01 B5を発見したらMPEG2とかでもそう問題ない気もしますが。 http://www.andrewduncan.ws/MPEG/MPEG-1_Picts.html http://www.andrewduncan.ws/MPEG/MPEG-2_Picts.html

kyo----
質問者

お礼

PCの調子が悪く、返答が遅くなり大変申し訳御座いません!!何とか解決いたしました。有難う御座いました。

  • hawkwind
  • ベストアンサー率34% (160/469)
回答No.2

>[00][00][01][BA][44]になっていればMPEG2だ!という判断 さすがにこれは無茶がありすぎです^^; MPEGの仕様はここが詳しいようです。 http://www.pioneer.co.jp/crdl/tech/mpeg/3.html 先頭5バイトはパックヘッダーとよばれる部分の一部で、 とてもコーデックの情報を取得できるようにはみえません。 おそらくはシステムヘッダーの部分が該当すると思われます。 私もバイナリエディタでみてみましたが、パッと見では把握できませんでした。 WEB上でこの部分について記述しているサイトも30分ほど探してみましたが、 これといったサイトは見つかりませんでした。 どうやら専門書を購入する方が話は早いようです。 >MediaPlayerクラスでフィルタの情報は取得可能か XP機から搭載されているGDI+(GDI32の後継)ならば ImageCodecInfoクラスを用いて取得可能とのことです。 Windows98やNetFrameWorkがない環境では自前で 取得プログラムを用意する必要があるのではないでしょか。 (グレープシティにはこういうのが確実にあるのでしょうね) http://www.atmarkit.co.jp/fdotnet/dotnettips/022getformat/getformat.html

kyo----
質問者

お礼

hawkwind様。 お忙しい中、色々と調べて頂きありがとうございますm(__)m。 やはり5バイト分だけでは情報としては少なすぎますか(^^;) 最終的に、依頼主より「MPEG1以外のファイルを見つけてもらえればよい」という仕様に変わりましたので、フィルターグラフマネージャーというクラス(?)を使用して、そのMPEGファイルを再生させる時に、どのフィルタを使うか?・・という条件で、MPEG1かそうでないか(MPEG2)を判断することにしました。ここで、フィルタの一覧の中に、"MPEG-I Stream Splitter"というフィルタがあれば、MPEG1であるし、そうでなければ、MPEG1以外のファイルだ・・という結論にいたりました。 ただそうなると、今度は「DirectX」なるもののバージョンを調べる必要があるようなのですが(参照:http://oshiete1.goo.ne.jp/kotaeru.php3?q=1852105)、ここでまた難航してしまっています・・。 自分でも色々と調べてはいるのですが、もしお時間がおありでしたら、是非、この若輩者に知恵をお貸し下さい。 本当にありがとうございました!!

関連するQ&A

  • AVI→MPEG

    TMPGEnc 2.5 フリー版を使ってAVIをMPEGにエンコードしようとしましたが「ファイルは開けないかサポートしていません」と出て出来ません。 真空波動研を使って調べた所、 [ファイル1.avi] AVI2.0 640x480 12Bit DivX 6.0 29.97fps 8968f 1398.85kb/s MPEG1-LayerIII 48.00kHz 128.00kb/s CBR JointStereo [RIFF] 00:04:59 (299.23sec) / 57,407,488Bytes 真空波動研 050814 [ファイル2.avi] AVI2.0 640x320 12Bit DivX 6.0 29.97fps 8869f 969.34kb/s MPEG1-LayerIII 48.00kHz 128.00kb/s CBR JointStereo [RIFF] 00:04:56 (295.93sec) / 40,789,994Bytes 真空波動研 050814 [ファイル3.avi] AVI2.0 352x240 12Bit DivX 6.0 29.97fps 12536f 344.89kb/s MPEG1-LayerIII 44.10kHz 128.00kb/s CBR JointStereo [RIFF] 00:06:58 (418.28sec) / 25,120,768Bytes 真空波動研 050814 という様な結果がでました。何がいけないのでしょうか? TMPGEncでなくてもMPEGに変換する方法があるなら教えていただきたいです。

  • MPEG4 version3やMPEG 2が再生できない!

    こんにちは。 インターネットのFileを見ようとするとできません… 真空波動研、G spotなどを使って調べたところ上記のコーデックでした。 いろいろ試したんですが、ちょっと無理があるようです インターネットであるコーデックのDL場所などはないでしょうか? 教えてください! DVDは見る環境が整ってないので、MPEG2はみれないのでしょうか? インターネットでPOWERDVDのMPEG2のコーデックを拾ったんですがちょっと当たりはずれがあるようです 初心者ですがどうぞ教えてください!

  • mpeg2のファイルを再生するには?

    色々WEB上で検索すると情報はあるのですが、イマイチよく分かりません。真空~で内容を見ると以下の通りでした。 MPEG2 704x480 29.97fps 9647.60kb/s 4:3 MPEG1-LayerII 48.00kHz 224.00kb/s CBR Stereo 00:01:16 45,305,856Bytes これはMPEG2ファイルを再生するための環境を整えればいいということなのでしょうか?フリーソフトも色々あってどれにすればいいのか判断つきません。外国のサイトが多いし。恐縮なのですがどなたか教えていただけないでしょうか?よろしくお願いします。

  • MPEG1-LayerIIの*.mpgの再生

    コーデックはかなり入れていますが、真空波動研でMPEG1-LayerIIと表示される動画がWindowsMediaPlayer6.4で再生できません。 http://delegate.uec.ac.jp:8081/club/mma/~fujita/diary/di200004.html の一番下の「これ」をクリックしてダウンロードした動画は再生できましたが、その他のMPEG1-LayerIIの動画が再生できない状態です。 どれも音は出ます。ファイルによってはシークバーも正常です。TMPEGで作成されたものらしいファイルはシークバーが使えませんでした。 どのコーデックが必要か教えてください。

  • mpeg2→mpeg1の変換

    タイトルの通りです。 わざわざ画質を落とす行為(らしいの)ですが、 HP上に動画を置いた際にMPEG-2だとQuickTimeが再生出来ないとのことで・・・。 TMPGEncで出来ると聞いて体験版でやってみたのですがなぜかファイルを読み込んでくれず出来ませんでした。 HP上に動画を置くもっと一般的な方法があれば もちろん変換の必要はなくなるので、そちらもご存知でしたら教えてください。 対象動画の情報は↓のもので [PG03_M006.mpg] 704x480 29.97fps 16:9 625line 9647.60kb/s Dolby AC-3 48.00kHz 2.0ch(2/0 L+R) CM 256.00kb/s [MPEG2] 00:00:06 (6.00sec) / 7,364,608Bytes 真空波動研 060423 / DLL 060423

  • iPod動画再生にあたってのMPEG4変換とQuickTime再生について

    はじめまして。 この度、第5世代iPod(30G)を購入して iPod上で動画を見たいと思っています。 そこで、手持ちのMPEG1、MPEG2のファイル (真空波動研で確認済み)を 変換実績のありそうな以下2つの変換ソフト ・Videora iPod Converter ・Xilisoft iPod Video Converter を使って、それぞれiPod対応のMPEG4および H264フォーマットに変換してみましたが、 作成されたMPEG4ファイルをQuickTimeで再生すると 映像が全体的に真っ黄色くなってしまい、 QuickTime上でもうまく再生されず、 iTuneを使ってiPodに転送してみても 真っ暗で何も再生されません。 ちなみに作成前のMPEG1,2ファイルはQuickTimeや WindowsMediaPlayerで再生できますし、 MPEG4変換後もWindowsMediaPlayerで再生できます。 何故変換後のMPEG4ファイルがQuickTimeで 黄色くなってしまうのかさっぱりわかりません。 これはQuickTimeのCODECの問題でしょうか? ちなみにOSはWindowsXPです。 どなたか情報をお持ちの方、ご教授ください。 どうぞよろしくお願いします。

  • mpegファイルの再生で音声が出ない

    以前のマウスコンピュータ製のPCでは再生でき、音声も出ていたムービーファイルが音声のみでなくなりました。 環境は以下の通りです。 Dell inspiron530 WinXP home 動画ファイル形式:mpeg2? AISOFT製のデジカメでムービーシアターというソフトで作成したファイルです。 フリーソフトの真空波動研Superliteで調べると以下のようなメッセージが出ます。 MPEG2 [***.mpeg] 704x480 29.97fps 4:3 8000.00kb/s MPEG1-LayerII 48.00kHz 224.00kb/s CBR Stereo [MPEG2]00:06:00.223(360.223sec)/269.686.788Bytes 映像はまったく問題ありません。 必要なCodec?などのインストール方法等があればご教示ください。

  • Mpeg4v3の動画ファイルが見られない

    現在windowsXPのPCのWMP(9.0)でMpeg4v3の動画ファイル(真空波動研にて確認しました)を見ようとしていますが、うまくいきません。 今DIVXは5.0.5が入っています。 WMP6.4でも試してみましたがダメでした。 どうやっても画面は黒く音声のみ再生されます。 なにが原因なのでしょうか? 詳しい方いらっしゃいましたら、助言をお願いします。

  • avi→mpeg

    VCDを作ろうとaviファイルをmpeg変換するためにTMPGEnc(無料版)でaviを開いたんですが 音声ソースは開けましたが、映像ソースを開くと「このファイルは開けないか、サポートしていません」出てきてしまいました。 どうすればmpegに変換できるでしょうか?ちなみに真空波動研で確認してみたら AVI2.0 512x384 12Bit XviD 1.0.1 23.98fps 13333f 866.20kb/s MPEG1-LayerIII 48.00kHz 76.32kb/s VBR Mono Xing 23171f [LAME3.90. ABR 80kb/s ForcedStereo] [RIFF] 00:09:16 (556.10sec) / 66,107,392Bytes と出ました。

  • avi, XviD Mpeg4の再生

    aviファイルが再生できません。 コーデックはXviD MPEG4です(「真空波動研」でも確認しました)。 XviD Codec 1.3.2がインストール済みです。 PlayerはWindows Media PlayerとDivX Playerの両方で試してみましたがやはり再生できませんでした。 原因としてなにが考えられますでしょうか。 どうすればこの動画を再生することができるか教えてください。 よろしくお願いします。

専門家に質問してみよう