*MPEG4 H.264/AVCでエンコード [#v8285144]
 [[H.264/AVC解説:http://ja.wikipedia.org/wiki/H.264]] - Wikipedia~
 [[AVC(H.264)とは?:http://www.mpeg.co.jp/libraries/mpeg_labo/winPC_20.html]] - MPEGラボ~
 
 **mkvのコーデックID [#pbce4aad]
 VFWコーデックを使用してAVIに入れたもの → V_MS/VFW/FOURCC/H264~
 CLIクライアントを使用してMP4に入れたもの → V_MPEG4/ISO/AVC~
 ~
 VFWではBフレームが正しく扱えない為、Bフレームを使うとフレームがずれたりすることがあるらしい。~
 何とかするにはXvidのPacked Bitstereamのような仕組みが必要とのこと。~
 参考情報 → [[1:http://forum.doom9.org/showthread.php?t=80430]] [[2:http://www.marumo.ne.jp/db2004_b.htm#30]] [[3:http://www.marumo.ne.jp/db2004_c.htm#1]]~
 ~
 x264のVFWを使ったAVI互換モードは正式サポートされません。~
 今後はAVC in AVIは無くなっていくようです。~
 ~
 [[Status of AVC (aka h.264) in Matroska :http://www.bunkus.org/videotools/mkvtoolnix/avc-status.html]]~
 >Reading AVC / h.264 from an AVI (e.g. created with x264) will only use the "AVI compatibility mode". ~
 Playback of files muxed that way may or may not work. I will not accept bug reports for that. ~
 I do not know whether or not I will implement proper support for this.~
 ~
 AVIから読み込んだh.264/AVC(x264で作ったものなど)はAVI互換モードになる。~
 再生は動くかもしれないし動かないかもしれない。これについてのバグレポートは受け付けない。~
 これについてのサポートの実装を考慮することはしない。~
 
 **x264 [#h0125127]
 x264はオープンソースで開発されているH.264のコーデックです。~
 最新版はここから → [[x264 win32 daily builds:http://forum.doom9.org/showthread.php?s=77a12de010c5539eb51bfc56976e7a6e&threadid=89979]] ~
 ~
 x264 CLIを落としてください。更新が早いです。~
 ~
 -関連情報~
 設定値の参考になります。
 --[[ICZの剣:http://cwaweb.bai.ne.jp/~icchan/text/2005.htm#2005/06/20]] - (2005.02.12)~
 --[[H.264動画ファイルの作成とその再生:http://www.katch.ne.jp/%7Ekakonacl/douga/h264/h264.html]] - (2005.04.30)~
 
 ***コマンドライン(CLI) [#p2f374fa]
 入力ファイルはHuffyuv(無劣化のコーデック)等でAVI2.0で出力しておきます。~
 AviSynthだけで処理してもかまいませんが。~
 
 -Single Pass-Quantizer/Quality(品質ベース)の場合。~
 作成されるファイルサイズにこだわらず、画像品質を一定に保つ場合に使用する。~
 -- [--qp] Constant Quantizer 固定量子化
 -- [--crf] Constant Quality 固定品質(QPがCRFを中心にmin.QP 〜 max.QPまで変動する)
 
  x264.exe -q 20 -b 2 -o outfile.mp4 infile.avs
 
  # infile.avs
  OpenDMLSource("D:\VideoFiles\infile.avi")
  ConvertToYV12()
  return last
 AVS([[AviSynth>AviSynth Wiki]])でYV12形式で受け渡すようにします。(-b --direct --threads などのオプションはお好みで)~
 Q値は20±5程度が実用範囲とのこと。数値が大きいほど高圧縮。~
 ~
 -2pass Bitrate(ビットレート指定)の場合。~
 例では2000Kbps。3pass以上はp1とp2の間にp3を指定して増やす。~
 ビットレート指定エンコードはファイルサイズを決めうちしたい場合に使用する。~
 ビットレート配分を決める為に通常は2pass以上のエンコードが必要。~
 
  x264.exe -p 1 -B 2000 -b 2 --stats x264.log -o outfile.mp4 infile.avs
  x264.exe -p 2 -B 2000 -b 2 --stats x264.log -o outfile.mp4 infile.avs
 
  # infile.avs
  OpenDMLSource("D:\VideoFiles\infile.avi")
  AssumeFPS(29.97)
  ConvertToYV12()
  return last
 入力ファイルがVFRの場合は平均フレームレートがわからないのでAssumeFPS( )で明示的に指定する。~
 (AviSynthでNullフレームは扱えません)~
 -平均フレームレート[fps]=総フレーム数/再生時間[秒]~
 -ファイルサイズ[MB]=(ビットレート[Kbps]/8)*再生時間[秒]/1024~
 
 **再生 [#f06346a4]
 ffdshow(コーデック)を入れると出来ます。やっぱり更新が早いです。新しいものを使ってください。~
 ffdshow のVideo Decoder設定で出力(Output)の項目でオーバーレイミキサーを使用するに
 チェックを入れてください。~
 入れないとアスペクト比が反映されません。~
 ~
 MatroskaSplitterはHaali版の新しいもの(2005.01.13以降)が必要です。~
 公式MatroskaパックはHaali版なので問題ありません。~
 スプリッタだけ変えたければ[[Haaliのページ:http://haali.cs.msu.ru/mkv/]]から[[ダウンロード:http://haali.cs.msu.ru/mkv/MatroskaSplitter.exe]]できます。~
 (ちなみにMP4コンテナの再生もHaaliMediaSplitterで対応できます。)~
 ~
 再生環境はCPUが最低P4-2.8GHz相当以上は必要じゃないかと思います。~
 -[[ffdshow公式ページ:http://ffdshow.sourceforge.net/tikiwiki/]]~
 -[[バイナリ:http://x264.nl/]]~
 
 **エンコード(mkv) [#t7a885e7]
 作成例です。~
 ~
 [[AviSynth>AviSynth Wiki]]とx264 CLI、[[コマンド実行プラグイン>コマンド実行 for AviUtl]]を使用します。~
 
 -準備~
 --itvfrを使用して[[Huffyuv:http://www.divx-digest.com/software/huffyuv.html]]でAVI2.0(720x480)+タイムコードで出力したファイル … %%0.avi~
 --タイムコードファイル … %%0.avi.txt~
 --WAV出力(PCM) … %%0.wav~
 --チャプターファイル … %%0.txt~
 
 -出来る物~
 --MKV … 720x480 AR4:3 VFR (H264 + Vorbis + Chapter)~
 
 入力ファイル(%%0)は日本語ファイル名は不可。~
 出力ファイル(%%1)は日本語OK。~
 
 ***cmdex.txt [#p72e0ad6]
  :MKV/AVC(Chapter)
  @echo off
  set IN=%%0
  set OUT=%%1
  
  rem 音声のノーマライズ
  waveflt2 -normal -2.0 "%IN%.wav" "%IN%_nm.wav"
  
  rem AviSynthスクリプト作成
  echo OpenDMLSource("%IN%.avi") > "%IN%.avs"
  echo ConvertToYV12()           >>"%IN%.avs"
  echo return last               >>"%IN%.avs"
  
  rem エンコード
  oggenc -b 128 "%IN%_nm.wav" -o "%IN%.ogg"
  x264 -q 23 -b 1 --direct spatial -o "%IN%.mp4" "%IN%".avs --threads auto
  mkvmerge -o "%IN%_out.mkv" --timecodes "1:%IN%.avi.txt" --aspect-ratio 1:4/3 
           -A "%IN%.mp4" "%IN%.ogg" --chapter-language jpn --chapters "%IN%.txt"
  move /y "%IN%_out.mkv" "%OUT%.mkv"
  
  rem 一時ファイルを削除(ごみ箱)
  recycle -y "%IN%.avs"
  recycle -y "%IN%.ogg"
  recycle -y "%IN%.mp4"
  recycle -y "%IN%_nm.wav"
 
 **エンコード(mp4) [#o94d7218]
 某PS3が出たのでmp4の作成例も追加。(^^;~
 PS3ではHigh Profileが(今のところ?)扱えないようなのでx264.exeのオプションに--level 4を加えてください。~
 →ファーム1.8からHigh Profile Level4.2まで対応したようです。~
 PCからの転送は[[IIS:http://www.atmarkit.co.jp/fwin2k/win2ktips/206actiis/actiis.html]]や[[AN HTTPD:http://www.st.rim.or.jp/~nakata/]]などでWeb鯖立ててブラウザで転送するといい感じ。~
 
 -準備~
 ソースファイルはmkvの時と同じ。~
 ~
 -ツール~
 mp4作成の為のツールとして[[mp4box:http://gpac.sourceforge.net/]]と[[tc2mp4:http://d.hatena.ne.jp/zmi/]]を用意します。~
 mp4boxをGUIで操作したい場合は[[YAMB:http://yamb.unite-video.com/]]を利用してください。~
 tc2mp4はVFR作成用です。~
 ここに貼ってあるtc2mp4はファイル名のフルパス対応などの修正がしてあります。~
 #ref("MP4Box-0.4.3_20061115.zip")
 #ref("tc2mp4_20060613_pom20061203.zip")
 AACエンコーダは[[NeroAacEnc:http://www.nero.com/nerodigital/eng/Nero_Digital_Audio.html]]を使用してみます。~
 ~
 -出来るもの~
 --MP4 … 720x480 AR4:3 VFR (H264 + AAC + Chapter)~
 
 入力ファイル(%%0)は日本語ファイル名は不可。~
 出力ファイル(%%1)は日本語OK。~
 
 ***cmdex.txt [#bc3592a7]
  :MP4/AVC(Chapter)
  @echo off
  set IN=%%0
  set OUT=%%1
  
  rem 音声のノーマライズ
  waveflt2 -normal -2.0 "%IN%.wav" "%IN%_nm.wav"
  
  rem AviSynthスクリプト作成
  echo OpenDMLSource("%IN%.avi") > "%IN%.avs"
  echo ConvertToYV12()           >>"%IN%.avs"
  echo return last               >>"%IN%.avs"
  
  rem エンコード
  NeroAacEnc -br 128000 -if "%IN%_nm.wav" -of "%IN%.m4a"
  x264 -q 20 -b 1 --level 4 -o "%IN%.mp4" "%IN%".avs --threads auto
  
  tc2mp4 -i "%IN%.mp4" -t "%IN%.avi.txt" -o "%IN%_vfr.mp4"
  mp4box -add "%IN%.m4a" "%IN%_vfr.mp4"
  mp4box -par 1=1920:2160 -chap "%IN%.txt" -lang jpn "%IN%_vfr.mp4"
  move /y "%IN%_vfr.mp4" "%OUT%.mp4"
  
  rem 一時ファイルを削除(ごみ箱)
  recycle -y "%IN%.avs"
  recycle -y "%IN%.m4a"
  recycle -y "%IN%.mp4"
  recycle -y "%IN%_nm.wav"
 
 ※tc2mp4はこのページに貼ってある修正版を使用しています。
 
 ***画素アスペクト比(Pixel Aspect Ratio)の設定値 [#y8335422]
 DAR(Display Aspect Ratio)を4:3、画素数が720*480の場合、
  par_x = DAR_x * hight = 4 * 480 = 1920
  par_y = DAR_y * width = 3 * 720 = 2160
 となり、-par 1=1920:2160 (or 8:9)を設定する。
 
 **AviUtl用x264出力プラグイン(mp4/mkv) [#z7e124ad]
 x264出力(mp4/mkv)プラグインが[[可変フレームレート出力:http://www.tenchi.ne.jp/~yoko/aviutl/index.php?%B2%C4%CA%D1%A5%D5%A5%EC%A1%BC%A5%E0%A5%EC%A1%BC%A5%C8%BD%D0%CE%CF%20for%20AviUtl]]のページに置いてあります。~
 CFR,VFR(itvfr使用)での出力が出来ます。~
 ~
 自動フィールドシフト(afs)用の出力プラグインは[[Seraphy氏:http://seraphy.fam.cx/~seraphy/]]が公開しています。~
 ***VFR出力用CLI(AviSynthで使用する場合) [#q3c01552]
 それぞれのプラグインにx264itvfr.exeおよびx264afs.exeが付属しています。
 それぞれのプラグインに x264itvfr.exe および x264afs.exe が付属しています。

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS