MPEG4 H.264/AVCのプロファイルとレベルの変更(おぼえがき)
最近はPS3やXBOX360のようなハイエンド機だけでなくiPodやPSPといったモバイル機器もMpeg4形式の動画を再生できるようになってきました。それに伴い市販ソフトやフリーソフトの多くにH.264の変換機能が備わってきました。
ですがソフトによっては熟成度が低く、プロファイルやレベルをしっかり指定してくれないソフトも存在します。その場合、いくら動画のビットレートやfpsが再生条件を満たしていても再生されません。(iPodにいたってはiTunesに適応外ファイルとみなされ転送すらしてもらえません。)
そこでこういう困った動画のプロファイルとレベルを変更し、再生可能にするためのTipを(忘れないように)書いておきます
まず、バイナリエディタで作成したmp4のファイルを読み込みます。
次にバイナリ検索で[61 76 63 43 01]を探します。
その直後の赤い部分(ここでは64 00)がプロファイルを示し、青い部分(29)がレベルを示しています。
ここを書き換えればプロファイルとレベルを変更できるわけです。
少し後ろにもう一回同じ部分があるので、ここも書き換えます。
主なプロファイルとレベルのバイナリ値は以下の通り
Baseline Profile:42 E0
MainProfile:4D 40
HighProfile:64 00
Level 1.3:0D
Level 2.1:15
Level 4.0:28
Level 4.1:29
Level 5.1:33
プロファイルとレベルを書き換えることで、ビットレートやfpsが違反の動画も再生できる場合があります。
2009/1/20 重要な追記
SonyのImageConverter3を使用して気づいたのですが、このソフトは上述した箇所以外にもプロファイルとレベルを書き込んでいるようです。アドレスでは0×91~0×93に相当します。本来この箇所はuuidといい、ハードやソフトによっては読み込まない分部なので書き換える必要はありません。(実際、MediaInfo等のソフトでは無視します)
しかしあまり気持ちのいいものではないので、気になる方はここも書き換えてください。
2009/2/10 追記
プロファイルとレベル変更のソフトウェアを作ってみました
よろしければこちらへどうぞ

2009 年 12 月 19 日 5:20 PM
[...] http://メイド.jpさんのMPEG4 H.264/AVCのプロファイルとレベルの変更(おぼえがき)というエントリを参考にさせていただきました。以下手順です。 [...]
2010 年 6 月 3 日 5:09 PM
たいへん参考になる情報ありがとうございます。
ipadを所有しまして、現在ある動画を転送しようとしたところ、レベルが3.1以下でないと
ダメなようです。
レベル変更ソフトウェアを使わせていただいて、high5.1→main3.0に変更すると動画自体が見られなくなってしまいます。
手持ちのhigh3.1の動画はiPadでも問題なく視聴できたため、high3.1に変換したいのですが、レベル変更ソフトウェアの、high5.1もしくは4.2→high3.1への変更もできるようなバージョンアップはしていただけないでしょうか・・・?
また、highプロファイル3.1のバイナリ値がもしわかれば教えてただけないでしょうか?
よろしくお願いします
2010 年 6 月 3 日 8:02 PM
>ちょうろくさん
変更ソフトについてですが、バージョンアップせずともプロファイルやレベルを設定できるように作成してあります。
ソフトの圧縮ファイルを解凍すると『pl.ini』というファイルが作成されていると思います。
そこにhigh3.1に関するバイナリを記述してください。
ちなみにhigh3.1のバイナリ値は『64001F』だと思います。
面倒であれば、『pl.ini』を以下の内容に書き換えてください。
——————————————————–
Baseline : 1.3 (iPod)
42E00D
Main : 3.0 (PSP)
4D401E
High : 3.1(iPad)
64001F
High : 4.1 (PS3, XBOX360)
640029
High : 5.1 (Unknown)
640033
——————————————————–
2010 年 6 月 5 日 5:27 PM
お返事ありがとうございます~!
教えていただいた通りiniを変更したところ、完璧にレベル設定の変更ができるようになりました。
大感謝です