Flash Player 9のβ版が公開されたのは周知のことだと思いますが、Adobe LabsでH.264のデモをやっているなんて知りませんでした。で慌てて昨日の夜からデモページに置いてあるSWFをキャッシュから確認して自分の環境で遊んでみました。
※2007/12/4 H.264に対応したFLASH PLAYER9が公開されました
私自信はDivXかWMVばかりでH.264の動画はこれが初挑戦なのでテンションはマックスでしたが、1日調べて全てがうまくいくほどは甘くありませんでしたw結果から先に言ってしまうと、SWF内でMP4動画の表示には一応成功して、この記事を書きはじめた頃はH.264のエンコードの仕方のほうを勉強している段階です(最近の記事を追えば幾分マシになっています)。
SWFで表示に成功したMP4の一部と備考、おまけに私心
2007/12/4 H.264に対応したFLASH PLAYER9が公開されました。変なことをしなくても誰でも見れます。なにやら正式版のFlash Player 9にはH.264を再生するものは入っていないようです。これってどういうこと?w IEの私は正式版のほうを入れてもMP4再生出来ているので一瞬ええええ?と思いましたがFirefoxのようなプラグインで入れる人から聞いた話だとダメらしいです。なので相変わらずAdobeのLabsから落とさないと試せないかもしれません。
2007/12/5現在のリスト
やりはじめ1週間程度でそこそこ慣れてきたリスト
Flash-Ajax Video Componentで再生しているためシークしたりいじったり出来ます。画面をクリックすると一時停止・再生を出来たりします。メニューは自動で消えますが画面内にマウスが飛べば勝手に出てきます。
- ニコニコサイズきしめん 10.3M(実レート649K) x264 600k/neroAacEnc HE-AAC 52K
- パンヤでテスト その1 60fps x264 2M/neroAacEnc HE-AAC 48K
- パンヤでテスト その2 60fps x264 2M/neroAacEnc HE-AAC 48K
- 某アニメOP その1をニコニコサイズ 7.3M(実レート652K) x264 600k/neroAacEnc HE-AAC 52K
- 某アニメワンシーン 1280×720 x264 2M/neroAacEnc HE-AAC 48K
--pass X --bitrate XXXX --scenecut 60~75 --stats "XXXX.stats" --level 4 --keyint 240 --bframes 3~4 --bime --b-pyramid --weightb --direct auto --analyse p8x8,b8x8,i4x4 --qpmax 40 --qpstep 8~10 --subme 6 --no-fast-pskip --threads auto --thread-input --progress --sar XX:XX --no-dct-decimate --no-psnr --no-ssim※やりはじめ2007/10/12時点ではこんな感じです
--pass X --bitrate XXXX --scenecut 55~75 --stats "XXXX.stats" --level 4 --keyint 240 or 300 --bframes 3~ --bime --b-rdo --weightb --direct auto --analyse p8x8,b8x8,i4x4 --8x8dct --trellis 1 --cqm jvt --merange 32 --qpmax その時次第 --qpmin その時次第 --qpstep 6~8 --qcomp 0.7 --ref 3 --mixed-refs --ipratio 1.70 --pbratio 1.50 --subme 6~7 --no-deblock --no-fast-pskip --threads auto --thread-input --progress --sar XX:XX --no-dct-decimate --no-psnr --no-ssim※2008/03/20時点ではこんな感じです その時次第というのはどれだけ圧縮するかによってqpmaxとqpminを抑制するか決めるため一概に言えません。bframesの連続枚数も同じです。--no-deblockとなっていますが当然レートが足りなければ4:4ぐらいまで上げてごまかしにかかります。古い記事でごめんなさい!
綺麗、綺麗じゃない云々は設定を煮詰めいていく必要があるのでこの際は無視します。相変わらずCPUを使い切る前にフレームを落として再生しようとする動向があります。60fpsはムリでしょうねー。以前にAVC Levelの選択をするとオカシイかもしれないと書いたのはSWF上での動作に直接的には関係ありませんでした。というかAVC Levelは無制限に認めているようですw All levels are supported.って書いてありました・・・。詳細につきましてはAdobe Labsのこちらに書いてあります。ちなみにVFRについては書いていませんでしたがSWF上で24/30(60)混在の動画を再生しても平気でした。704*480 SAR40:33のような動画でも結局はHTML側でWidth Heightを指定するのでそこで853*480と指定していれば綺麗に再生されます。複数のオーディオトラックは残念ながら駄目なようです。
ここに書いた内容より皆さんが気にしているのは、可変なMP4(24/30fps混在なアニメとか)、HE-AACによる音声の圧縮により浮いた分のビットレートを映像に、ということだと思っています。24/30fps混在の場合今まで私は自動フィールドシフト+拡張AVI出力plusで120fpsにしてAVIを出力していたので新たな悩みの種になりました。こちらの記事にVFRについて書いてあります。といいつつ自分のPC保存用ではなくニコニコ動画やyoutube用ということであれば24fpsに単純に間引くだけでもいいんじゃない?(緩やかなパンでは気になりますが)と思っています。HE-AACに関しては低レートな音声に関しては劇的に変化するのでやはりニコニコ動画やyoutubeには最適だと思います。もちろん元々良い音質のと比較してという話ではなくLame64KなMP3よりHE-AACな64Kのほうが遥かに聞きやすいと言ってるに過ぎません(ステレオの話)。高レートで128K以上という話になれば従来通りでも良いと思っています。
何にせよニコニコ動画には魔の低画質モード(今はエコノミーモードと名乗っている)がありますしね。ニコニコ動画RC2発表会というのが近々あるようですが、そこでH.264に対応しますよ!とか言ってくれるのを少し期待しています。仮にニコニコ動画が対応してもH.264なMP4にも低画質モードを適応するのは間違いないと思われるので萎えますけどね。VP6なFLVについては低画質モードを回避する合計ビットレート300K未満という条件がありますが、MP4については問答無用にすべて低画質モード適応する!という話だったら余計に萎えそうです。VFRなMP4をニコニコ側で再エンコードされたときに一体どんなことになるんだろうかと・・・。そもそもH.264に対応になった場合は従来のVP6再エンコードでは無くH.264+HE-AACでやると思います。ニコニコ再エンコードは一時期反転バグというのがあったのですが、あれは明らかにニコニコ動画側がチェックしていないために起きた事態で何が起きるかわかりません。再エンコードされたMP4が全部25fpsになってるんだがなんぞこれ!というのは考えられると思いますw 全部私の妄想ですけどねw
※12/8追記
この記事ははじめたばかりの状態なので微妙なことばかり書いてあると思います。ニコニコ関連から来た人向けに今の時点の私が言えることは、Bフレーム使いまくり、デブロックはかける(ビットレートたりないから細部は諦めるべき)、暗部の細部を潰すノイズ除去はやめる(階調のひどさが目立つはず)っていうぐらいだと思います。映像ビットレート100~200Kという話ですといかに誤魔化すかという話になってくると思います。
MPEG-4 AVC/H.264なエンコードのまとめ(はじめての挑戦向け)
冒頭で私はAVISYNTH+meGUIでH.264+AACなMP4を作ってると書きましたが他の方法でも作ることが出来るので私が試したまとめを書きます。あくまで作るステップの段階の話であって、一般的な正しいやりかた、クオリティが高い、などではないのでご了承下さい。尚、H.264は結構前から存在していて本も出版されているぐらいのものですので、VP6なFLVの時とは違い他サイトのほうがより詳しく載っているかと思います。私のようにこれから挑戦してみようとしている人向けです。
AVISYHNTH+meGUIの場合
AVISYNTHで動画を指定したAVSを開きます。AVISYNTHの詳しい使い方はWIKIに載っています。注意点は色空間がYV12しかエンコードしてくれないようなので指定する必要がある場合もあります。その場合はAVSに「ConvertToYV12()」の1行を足せば良いです。よくわからない人はAVSにinfo()とソースを開いた次の行追加してVirtualDubModでAVSを開いてみるのが良いかと思います。一先ず試したい場合はAviSource("ファイルのパス")と書いた1行のAVSをmeGUIに読み込ませれば問題ないはずです。
meGUIを起動してAVSを参照して開くとconfigでx264の設定画面が開きます。meGUIでのx264の設定については、こちらやこちら(英語)が参考になると思います。ちなみにmeGUIは色々あるようでx264 Me-Guiという専用のものもあるようです。
meGUIそのものはTOOLフォルダを見ればわかりますが、faacやmp4boxやmkvmergeなどH.264なMP4、MKVを作る上で必要となるものがまとまっているものと考えて下さい。なので作成したH264ファイルをm4aをMUXしてMP4で吐く動作までも全てmeGUIで行うことが出来ます。
ちなみにneroAacEncでHE-AACな音声を作りたい場合は別途ダウンロードしてきてneroAacEnc.exeを適当な場所に置いてOption→Settings→ProgramPathsタブ→Audioタブ→neroAacEncの参照先を先ほど置いたexeに指定してください。
携帯動画変換君の場合

中はffmpegです。ffmpegを新しいものに入れ替えてあげる必要があるかもしれません。PC用のH.264動画というプロファイルがあるのでまずそれを参考にしました。default_settingフォルダの中にTranscoding_PC_H264.iniというファイルがありますが、それがそのプロファイルに当たります。これをテキストエディターで開きCommand部分を自分で追記修正することになります。尚、2パスのやりかたや画質をコントロールするために使われるコマンドは「携帯動画変換君 H.264」や「ffmpeg H.264」などで検索すると実際に使われてる方のコマンドがたくさん出てくると思いますので、x264のオプションを調べるのがどうも・・・という人はそういう調べ方もありだと思います。
AVIUTLの場合1 (2007/12/4 に追記)
seraphyさんのページにあるx264 詰め合わせのx264.auo及び、x264gui.auoでそのまま出力することが出来ます。ちなみに上の画像は古いx264.auoの方ですが、x264gui.auoであればNeroaacencでエンコードした音声と一緒にMUXするところまで出来てしまいます。またmp4export.aufとmp4input.aui一緒に利用すれば無変換でカット、結合のようなことが出来ますので是非一緒に入れることをお勧めします。
AVIUTL(+AVISYNTH)の場合2
AVIUTL実験室のx264出力(mp4/mkv)プラグインを使用します。注意点としてはAVISYNTH2.5.5のインストールが済んでいることが条件です。AVSをいじったりすることはありません。ですが結局x264out.iniに記述されいてる部分を自分で修正しながらやるので、AVISYNTH+meGUIと手間は変わらないきがします。x264出力(mp4/mkv)プラグインを設置時にTOOLフォルダというのを置きますがmeGUI同様にmkvmergeやMP4Boxやfaacが入っています。
それぞれを使った感想など
仮の話ですがニコニコ動画やyoutubeがH.264なMP4をサポートした場合に、携帯動画変換君を使ってやる人が多いきがします。ある一定の汎用的なコマンドさえ公開されてしまえば(PSP動画用のように)わからない人はとりあえずそのプロファイルを選択して動画をドラッグするだけでMP4が出来てしまうからです。それも結局何でやっても同じことと言えますが、とにかく携帯動画変換君はドラッグだけで済むのでお手軽です。何より良いのがVP6より速いです。デュアルコアな人は当然速いです。
そういいつつもx264の設定(オプション)は豊富でありこれからはじめる私にとっては大変そうですねwこちらのページのx264についても非常に参考になります。
普段はDivXに頼りっぱなしで最近では品質保持2~3で何でも放置してる有様でしたから悩ましいです。何にしてもやりはじめたばかりの人間があれこれ言うべきでは無いので頑張って挑戦しようと思います^ω^
test2、3、5以外にもtest、test4、test6とry









