コメントでiPhoneでチャプターが反映されないとあったので、iPhoneでチャプターならちょっと変わった方法があるのでご紹介。ただ、残念ながらこの方法では自動フィールドシフトと一緒には使えないのでそこは注意。
ようはL-SMASHのチャプター読み込みを使ってしまおう、ということ。
POP氏 のx264 L-SMASH版をダウンロード。そいでchapter.aufでチャプター打ち込み。自動出力にチェック。
それからx264guiExの設定画面で以下のところを変更。
1.「x264.exeの指定」で今ダウンロードしたx264 L-SMASHを指定
2. 「音声先にエンコード」にチェックを入れる
3. 追加コマンドに
--audiofile "%{audpath}" --acodec copy --chapter "%{aviutldir}\chapter.txt"
4. 「外部muxerを使用する」のチェックを外す
5. エンコ開始
これでできたmp4をiPhoneに送ればいいはず。(iTunesではチャプター反映された)
設定ファイルのサンプルをあげておきます。
こちら>> x264guiEx_stgフォルダに入れて使ってみてください。
iPhone4の技術仕様 を参考にmain profile, Level 3.1で作ってあります。4Sならhigh profileが使えますけどね。
スポンサーサイト
MP4Boxでも出来るんですけどねー。
チャプター編集 for AviUtlプラグイン(chapter.auf)の出力フォーマットがそれにそぐわないだけで。
Appleが使用するチャプターは参照テキストトラック形式で、トラック自体がチャプターとなっていて、それを別のトラックが参照することで機能しているんですよね。
これは画面に表示しないだけで、ただのテキストトラックと変わらないので、実はMP4Boxではtimed textとほぼ同様の方法を以て追加が可能です。
ただ一点違うのは入力パスの末尾に :chap と付けるだけ。
mp4box -add video.mp4 -add audio.mp4 -add chapter.txt:chap -new movie.mp4
----------------- chapter.txtの例 -----------------
<?xml version="1.0" encoding="UTF-8" ?>
<TextStream version="1.1">
<TextStreamHeader>
<TextSampleDescription>
</TextSampleDescription>
</TextStreamHeader>
<TextSample sampleTime="00:00:00.000">チャプター名1</TextSample>
<TextSample sampleTime="00:01:00.000">チャプター名2</TextSample>
<TextSample sampleTime="00:01:30.000">チャプター名3</TextSample>
</TextStream>
まぁ、要するに、こんな感じになるように(変換なり)すれば良い。
<TextSample sampleTime="00:00:00.000">の直前までが必要なヘッダ。
ちなみにHaali Media SplitterはNero形式のチャプターのみのサポートで、しかも文字エンコーディングはSJISじゃないと文字化けします。
LAV SplitterはUTF-8じゃないとダメです。
Apple製品は一部SJISがあるらしい(?)ですが、基本はUTF-8です。
なので、とりあえずMP4のチャプターを使うなら、Haaliは使わない方がいいでしょう。(互換性が悪すぎる)
・おまけ
MP4のチャプターには3種類あって、
1. Nero形式 (ユーザデータ領域を利用)
2. Apple形式 (テキストトラックを参照してチャプターとして扱う)
3. BIFS/OD (MP4の"概念"を知らないと長くなるので割愛)
WindowsではNero形式が、Apple製品ではApple形式がデファクトスタンダードです。
BIFS/ODが正統ですが、実装が激しく面倒なので、誰も実装したがりません。
実装しても使えません。(苦笑)
OSS界でこれを解釈できるのはGPACのOsmo4くらいでしょう。(そもそもBIFS/ODをちゃんと実装しているOSSがGPACくらいなので)
個人的には素人がmp4boxを使うこと自体がなんだかなーと思うんですけどね。
MP4規格を理解していない人がmp4boxを使うと、99%以上の割合で<<< MP4 >>> 作ってない且つ規格的によろしくないんで。
MP4なら--brand mp42 を。Apple用MP4ならそれに加えて--ab M4V を加えるのが規格的に正しい作成方法です。
むぅ、なるほど。またいろいろ厄介な…
そうすると、mp4boxでWindows系とApple系、両方でチャプターを使えるmp4を作るには、nero形式のチャプターからapple形式に変換したチャプターを作って(今回は手作業で変換w)
mp4box -brand mp42 -add video.mp4 -add audio.m4a -add chap_type_apple.txt:chap -chap chap_type_nero.txt -new movie.mp4
みたくすればいいかな、と思って両方入れたmp4を作ると
LAV Splitter 0.37 → OK
Haali Media Splitter 20110303 → OK
iTunes 10.5 → OK
MediaInfo 0.7.50 → OK
となっていい感じなんですが、両方入れちゃうってどうなんでしょう?
邪道なんでしょうか?
L-SMASHでどうなっているのか、ちょっとよくわからなかったもので…
いずれにせよguiExのチャプターの扱いを変えたほうがいいかなと思ったり。
ともかく、ありがとうございました。
L-SMASHではAppleのMP4であるという宣言(M4V, M4A, M4P, M4B)を確認した場合に、チャプター用のテキストトラックの付加を許可しています。
x264_L-SMASHではAppleのMP4が格納可能な音声ストリーム(aac及びalac)をmuxする場合にM4V, M4Aのbrandを付加しています。
Appleはほとんどのversion=1のboxに対応しておらず、下手に追加するとApple MP4の規格的にマズーなので、通常は付加しない。という方針にしています。
邪道な気がしなくもないですが、「分からないものは読まない」がMP4コンテナのreaderにおける原則なので、まぁ、気にする必要は無いと思います。
むしろ、これを邪道だと思うくらいなら、規格外の機能を勝手に定義されて、mp4raに登録すらしないNero形式チャプターの存在の方が邪道です。
登録しないから、名前が同じで構造の違うboxが少し古いF4Vコンテナの方でも定義されちゃっているのです。
(こっちも登録こそしてませんが、f4v というbrandの元で定義されているので遙かにマシです。)
これがuuidを利用したチャプターなら問題なかったんですが...
一方でApple形式のチャプターはmp4raに登録されているので、mp4ra的にはM4A かM4B がbrandにあれば規格的に問題無いのです。
一応、テキストトラックということなので、お馬鹿なソフトウェアやデバイスによっては、Apple形式のチャプターが字幕として表示されてしまうことはあるかもしれません。
今更気付いたが、 -ab M4V じゃダメで、 -ab "M4V " にしないといけないんだな... $20のスペースが憎い。
解説ありがとうございます。
参考にしてチャプターの処理を考え直してみます。
にしても --brandとか-abって4文字縛り(?)…知らなかった。
mp4boxはほんと難しい。
brandは必ずFourCC (Four Character Code)になります。
これはMP4Box固有ではなくて、ISO Base Media (14496-12)における仕様です。
各brandが32bit fieldを使いますので。
空白(スペース)は0x00ではなく、0x20を使うのが通例です。
-ab M4V にしたら、最後の文字が0x00になって焦った。
-abはcompatible brandsの指定で、互換のあるファイルフォーマットは何か?を伝えるものです。
-brand mp42 は best usedなファイルフォーマットがMP4 version 2ですよー。って宣言したことになります。
-ab "M4V " を加えると Apple MP4にも互換があります。Apple MP4の機能も備えてますって意味になります。
-ab 3gp6って加えるとと 3GPP release6にも互換があります~って意味になります。
mp4boxでは何でもかんでも加えられちゃうので、乱用は危険です。
規格の間で非互換な機能があった場合に両方のbrandを加えるのは規格違反です。
初めまして、勝手ながらいつもお世話になっております。
最新のx264guiEXを使用させて頂いているのですが、
H.264 Levelを4以上でエンコードすると、動画をアップロードしたときに映像が乱れてしまいます。設定等に特に問題はないと思うのですが、環境のせいでしょうか。
以前のguiEXを使用させて頂いていたときにはこのようなことはなかったのですが…。
環境はWin7,64bitです。
以前のバージョンはもう配布されてないんですよね…。
申し訳ありません。
自己解決しました。どうやらサイトの状態が悪いときにアップロードしてしまったためのようです。
ご迷惑をおかけしました。
>higeさん
設定内容が書かれていないので全く見当違いかもしれませんが、
SDサイズの動画でveryslowプリセットをベースに設定してるようなときに
Level4を指定したりするとref=16になってしまい、Intel系のGPUで
FlashPlayerのハードウェアアクセラレーションを有効にしてると
映像が乱れたりするみたいですよ。
私事ですがこれまでニコニコに上げるくらいで再生互換性とか全く考えていなかったので
URL欄の記事にて情報募集中です。(´・ω・`)
>mp4box
-brandと-abの違いはそういうことなのですか…にしてもmp4boxは注意して使わないといけないですね。
>DXVA
GPUによって、またドライバによって大きく変わるので難しいですね。AMDのHD4350だと解像度によって使用できるLevel(というかref)に上限があって、それを超えると見事にモザイクになったりしました。あれはAMD共通なんだろうか…
NVIDIAのGPUはわりと問題が起こることが少ないような気がします。
rigayaさま、おじゃまします。
x264guiExを使わせていただいています。
有用なツールをありがとうございます。
放送波TS→MP4で困っているので教えて下さい。
当方のMP4再生環境がPS3とiPhone4S, iPad2で、これらで再生可能なMP4を作るのが目的です。
d2v作成しaacfawで音声読み込み後、カット編集しx264guiExで出力の流れで作るとPCとPS3では再生上問題ありませんが、iPhone, iPadで音声が再生されないです。
いろいろググッて調べてみるとiOSデバイスはMP4コンテナ内のMPEG2-AACを再生してくれないようでした。
解決策として下のページ
http://webcache.googleusercontent.com/search?q=cache:7_sRfvTXpjEJ:haco.mydns.jp/DTV/+x264guiex+faw+iphone&cd=19&hl=ja&ct=clnk&gl=jp
を見つけたので、これの
>tc2mp4_cmd=" -i "%vid" %au -o "%out" %ex %tc -O " %tmp " "
> ↓
>tc2mp4_cmd=" -i "%vid" %au -o "%out" %ex %tc -O "-mpeg4" " %tmp " "
を参考に
base_cmd=" -i "%{vidpath}" %{au_cmd} -o "%{muxout}" %{tc_cmd} -O "-mpeg4" " %{ex_cmd} %{tmp_cmd} ""
としてみてエラーなく終了するのですが、今のところ改善されていません。
tc2mp4の使い方もいろいろググッてみたのですが、これ以上のことがわかりませんでした。
これについてなにか良い方法があったら教えていただけると幸いです。
Apple製品で音声がでない…わたしもはまりました。
MPEG2-AACなのかMPEG4-AACなのかということで再生できないのではないように思われます。
Apple製品はなぜか動画に関しては
音声はAAC-LC 160kbps以下という制限があります。
http://www.apple.com/jp/iphone/iphone-4/specs.html
音声だけなら 8~320kbps なんですけどね…
TSの音声は最近192kbpsや256kbpsが主流なので、
残念ながら無劣化コピーだとApple製品で再生できない可能性が高いです。
一度160kbps以下(もういっそ128kbpsとか)に音声再エンコするしかないのではないかと思います。
rigayaさま
返信有り難うございました。
ご指摘の点をテストして見るため、AACを一旦WAVに変換し、
x264guiExからの出力時にAACに再変換して見ました。
(エンコードはNero Q-Based AAC 320~kbpsで行いました)
結果から行くと160kbpsを大きく超えてもiPad2およびiPhone4Sで正常に再生されるようでした。(1分ほどの短いテストファイルでは大丈夫でした)
参考までにテストファイルのデータを貼ります。
[wavtest.mp4]
1920x1080 8Bit AVC/H.264 High@4.1 Unspecified 29.94fps 1669f 2977.97kb/s
AAC 48.00kHz 2.0ch(2/0 L+R) HE(LC) 282.98kb/s
MP4 Base Media v1
[MPEG4] 00:00:55.743 (55.743sec) / 22,751,002Bytes
真空波動研SuperLite 110813 / DLL 110813 Unicode
ということでやはりMPEG2-AACとMPEG4-AACの違いのような気がします。
試しに先にWAVファイルをNeroでAAC化して、aacfawで読み込ませようともしたのですが、AVIUtlウインドウ上のオーディオ波形が全くフラットでMP4に出力しても音声が含まれていないようでした。
FAWはMPEG2-AACにしか対応していないのかもしれません。
一旦WAV化すれば大丈夫なことはわかりましたのでとりあえず大丈夫ですけど、出来れば無劣化も成功させたいです。
なにかお判りのことがあったらお願いします。
-mpeg4 いれたら出来ました…技術仕様を鵜呑みにしてました、すみませんです。
http://cid-6bdd4375ac8933c6.office.live.com/browse.aspx/x264guiEx/test/
に -mpeg4 加えたx264guiEx.iniをおいておきました。
Apple製品用ということなので、mp4 mux設定の「Apple形式に対応」で使用されるコマンドラインの中に"-mpeg4"を入れてありますので、「Apple形式に対応」にチェックをいれて使ってみてください。
無劣化編集後のファイルがiPad2とiPhone4S双方で正常に音声まで再生されることを確認しました。
rigayaさん
迅速な対応有難うございました!
これでとりためたファイルを安心して処理できます。