記事を検索

H.264+AACなMP4をSWFで表示テストフにゃイ

2007/09/28 17:36

コメント (10)  トラックバック(0)

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で再生しているためシークしたりいじったり出来ます。画面をクリックすると一時停止・再生を出来たりします。メニューは自動で消えますが画面内にマウスが飛べば勝手に出てきます。

冒頭で補足しましたが、私はH.264の動画に挑戦するのは始めてです。AVISYNTH+meGUIで私はやっています。一応下にmeGUIで吐かれていx264の設定を貼り付けておきます。後日わかったことですが圧縮を少しでも多くと気にするのであればBフレームの扱いをうまくやらないとダメだと思います。雲泥の差とは言いませんが大分変わります。
--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

トラックバック 

この記事にツイートする(RTしたくない場合、bit.lyのURLだけあれば平気です)

コメント

hiroki.kana (2007年10月08日 01:45)

こんにちは。はじめまして。
ざっくりのやり方を動画をはってあるHTMLに書いてあるとのことですが、動画のファイルを指定しているXMLの記述が見つかりません。
恐れ入りますが、どのようなファイル名かだけでも教えていただけますでしょうか?

エビフにゃイ (2007年10月08日 06:14)

例えばなのですが動画がおいてある以下のURLをとりあえずブラウザ(説明例はIEにします)で見ます。
http://blog.ebifunyai.com/test7/test.html


そうしますとキャッシュフォルダに「fullScreenSourceRectDemo.swf」と「fullScreenDemo.xml」と「test7-muxed.mp4」
の3つのファイルが保存されているかと思います。キャッシュフォルダの場所は以下になるはずです。
C:\Documents and Settings\あなたのログインしているユーザー名\Local Settings\Temporary Internet Files


そして「fullScreenDemo.xml」をテキストエディターで開きますと以下のように開くかと思います。
<demoData>
<url type="H264" location="test7-muxed.mp4" />
<url type="VP6" location="" />
<url type="needBeta" location="http://labs.adobe.com/downloads/flashplayer9.html" />
</demoData>


上記の「location="test6-muxed.mp4"」が動画ファイルを指定する場所になります。
こちらをいじって保存していただければ自分が作ったMP4で試したり出来ます。
ただその2つはAdobeのDemoから取って来たものでSWFは16:9の動画を再生するように比率をとっていますので
その中で4:3の動画を開くと引き伸ばされてしまうので注意して下さい。
大きさの指定は動画を開いたHTML先のソースを見ていただければわかると思いますが<object>タグと<embed>
タグについているwidthとheightを指定することになります704*396のMP4を作った場合width="704" height="396"
と指定してあげればドットバイドットで適切な大きさで表示されます。

hiroki.kana (2007年10月08日 23:27)

ご丁寧にありがとうございます。
見事できました!:-D
助かりました!

エビフにゃイ (2007年10月10日 22:37)

出来たようでなによりです^ω^
言い忘れていましたが恐らく無理にAdobeが置いてくれたSWFとXMLを使う必要はないかもしれません。
http://rexef.com/webtool/flaver.html
上記URLのXMLを編集してリンク先をMP4にするだけでもしかしたら動くかもしれません。

tette (2007年12月04日 20:56)

はじめまして。
ついにH.264対応のFlash Player 9 Update 3正式版が出ましたね。
これでそこまで深く考えずにH.264+AACなMP4がSWFで表示できますね。

そういえば、Opera for Macではこの記事の、「やりはじめ1週間程度でそこそこ慣れてきたリスト」のムービーが再生できないようです。(Flashの表示が真っ黒のままで、コントローラーも表示されない。)

Safari(Mac)やOpera for Windowsでは何の問題もなく表示できるので、単にFlash-Ajax Video ComponentとOpera for Macとの相性が悪いだけのようです。

似たようなものに、JW FLV Playerというものがありますが、これはそういった問題もないようです。
http://www.jeroenwijering.com/?item=JW_FLV_Player

エビフにゃイ (2007年12月04日 21:07)

> tetteさん
はじめましてです~^ω^待ちに待ったH.264対応なので嬉しい限りです。


教えていただいてありがとうございます!Macromedia側が用意したプレイヤーなんだから万能と思い込
気にしていなかったのですが、まさかOperaと相性問題があったとは知りませんでした。
教えていただいたプレイヤーは比較的いろんなページでも見かけますのでこちらでも導入してみようと思います!


で、早速試したところ快適なようなのでこちらに全部入れ替えます^ω^
http://ebifunyai.com/test/gh_c02.php


こだこーだー (2007年12月25日 23:29)

H.264+AACてアクセスゼロのサイトでも配信料発生しますよね、おくだけで(2010年から)
自サイトに置く人は実験系の人だけだと思うからばれにくいけれど
ニコニコとかそんなところにコストかけるかなぁと思うのです。
VP6とかは一応デコーダはフリーのものも出ているし
なによりも配信料は0円
自鯖+PSPとかならともかくウェブ用としてはH.264はリスクが高いんじゃないかと

それにやっぱり負荷が高くて他の作業が出来なくなっちゃうのはなんとも

エビフにゃイ (2007年12月27日 02:49)

>>こだこーだー さん
どうも!それはMPEG LAのライセンスのやつですね。
無償で放置されているx264エンコーダーとかはどうなってしまうんだろう~とは心の中で思ってました。
実際の2010年以降にならないとわからないというのが現状でしょうねー。このことが公に出てこないのも軽く
どうなんだろうと思いますが。商用ベースではリスクがあるということはおっしゃる通りだと思います。
ニコニコに関しては私的な意見になってしまいますが、新しいものを取り込むという意味だけでやってほしいです。


話はそれますが私が単にVP6というコーデックが嫌いでFLVコンテナも嫌いというのがあります。
H.263なFLVはさすがにH.264を知ってしまった今は使う気にはなれないので、SWF上でそれら以外のものが
使えれば個人的には何でもいいんですけどねー。

ドミノ (2008年04月20日 08:06)

はじめまして
動画作成で調べているうちに、ここに辿り着いた者です

動画作成は初心者で、なんとかMP4の動画を作れるまでになりました

作った動画をブログで公開したいのですが
レンタルサーバーに動画を置いてブログから
新しいウィンドウで開く場合、どうすればよいのでしょうか?
リンクで動画ファイルを指定してもDLされるだけで再生できません(泣

エビフにゃイ様の作成された動画のように
別窓でプレイヤーが立ち上がり、再生される方法を教えて頂けないでしょうか?

エビフにゃイ (2008年04月26日 14:42)

>> ドミノ さん
返事遅れてごめんなさい!はじめましてー^ω^


http://blog.ebifunyai.com/archives/2008/02/stage6.php
タイトルとは全然関係無い↑の記事に少し補足してありますー。
エビフにゃイは今後動画をどうするのかの見出しの中の、「これはJW FLV MEDIA PLAYERというものを使っていて」
という箇所をお読みになって下さい。JW FLV MEDIA PLAYERというのを使えば、自身でFLASHなどのアプリケー
ションから作らなくても出来るということですー。

Name(必須) :   Email :   URL :
名前などの情報を保存したい場合はチェック(次回から入力が省略可能になります)


左の画像の数字を入力してください(必須):

2013年1月 冬開始のアニメ一覧(2013q1) (178)
テレビを見てごらん、二次元も等身大の大きさだ! (128)
PV3 PV4でのお手軽アニメエンコード設定の話 (109)
続 アニメのTSをAVIUTLでお手軽にエンコード (45)
2009年7月期 夏のお勧めアニメ (17)