タイトルの通り、windows8.1でffmpegを動かすことになったので、過去の記事を見ながら、設定して見たのですが、動かなかったので、あらためてフィルター関連を調べてみましたので、まとめます。私用のメモなので、勘違いだったり間違っていたり、嘘八百だったりするかもしれません。
さくっと、リストで載せましょう。それが楽だw
一応、メモ。
ffmpegをつかって、tsファイルをmp4ファイルに変換しようとしています。プロファイルはHigh@4.2、1280×720、29.97fps(60fpsにするか悩み中。)
コマンドは以下。
ffmpeg.exe -y -i sample.m2t -f mp4 -movflags faststart -s 1280x720 -r 30000/1001 -vcodec libx264 -threads 0 -acodec copy -absf aac_adtstoasc -pass 1 -fpre test.ffpreset a.mp4 ffmpeg.exe -y -i sample.m2t -f mp4 -movflags faststart -s 1280x720 -r 30000/1001 -vcodec libx264 -threads 0 -acodec copy -absf aac_adtstoasc -pass 2 -fpre test.ffpreset a.mp4
presetの中身は以下。
level=41 #プロファイルレベル1~5.1 b=2048k #Set bitrate in bits/s. Note that FFmpeg’s b option is expressed in bits/s, while x264’s bitrate is in kilobits/s. bt=2048k #1-pass時に使うビットレート。だと思う。 coder=ac #x264option.Enable CABAC. vlc=Enable CAVLC and disable CABAC refs=4 #Number of reference frames each P-frame can use. The range is from 0-16.P/Bフレームと参照フレームまでの最大距離。又は,動き補償の際に参照できるフレームの上限数、と表現されている.おそらくであるが,Frameref=refsだと思われる. deblock=1:1:1 #デブロックフィルタ。品質向上に比べて時間低下は極めて僅か。anime=1:1or0:0がよいと言われる。1:0:0、1:2:2,1:0:0、1:-1:-1などと設定される。 me_method=umh #動き捜索アルゴリズム。基本hex、品質重視umh subq=7 #(subme)Sub-pixel motion estimation method.品質優先で9、速度優先で6、5以下は× psy=1 #心理視覚最適化。無効にするには0を指定。 cmp=+chroma #フルピクセルの動き予測で用いられる比較関数。chroma=色情報を含めた動き予測をする。subq が 5 以上で有効。subqが4以下の時は、--no-chroma-meと同じ。 me_range=24 #x264option.Maximum range of the motion search in pixels. 動き捜索範囲. trellis=2 #量子化後の端数処理についてのオプション。よく理解できない。2でいいと思う。 8x8dct=1 #8x8 離散コサイン変換。これを指定すると、HighProfileになる。 threads=0 #実行時のCPUスレッドの数。0=auto。 nr=0 #たぶん、ノイズリダレクション。0でいいと思う。 bf=1 #Bフレームを最大何枚まで連続して挿入して良いかの設定。初期値3、範囲0~16。0でBフレームを使用しない。3以上ではそれほど変わらない。 b_strategy=2 #(b-adapt)Bフレームを使うならb-adaptは完全にするのが望ましい。最大連続数の範囲で、Bフレームに適するフレームか否かを自動で判別する。Bフレームに適さないものはPフレームとして処理する。無効(0)にすると常にBフレーム連続数で設定した枚数を連続して使う。完全(2)は簡易(1)より正確な判定を行うが、Bフレーム連続数が多いほど遅くなる。 weightb=1 #Bフレームのための重み付け予測。0=off、1=on weightp=2 #Pフレームの加重予測方法。0=off、1=refs重み付けによる加重予想、2=refs重み付けと重複による加重予測。 g=300 #(keyint)IDRフレームの最大間隔。def=250。fps x 5 or 10が良いと言う話もある。 keyint_min=1 #IDRフレームの最小間隔を指定。この最小間隔の中にシーンチェンジが含まれた場合、エンコードはIフレームとして行うが、新しいGOPを開始しない。1で良い。 sc_threshold=80 #シーンチェンジ検出の閾値.アニメの場合は60~80動きの多いアニメほど高めにすると良い。 rc_lookahead=50 #フレームタイプとレートコントロールのために先読みする。デフォルトは40大きな値はより遅く、よりメモリを要求するがより精密な結果をもたらす。 mbtree=1 #主に低ビットレート威力を発揮する画質改善機能。時間軸で映像を観察し、重要になりそうな部分の品質を上げ、そうでない部分は品質を下げるという処理を行います。 crf=23.0 #固定 ”品質” でのエンコードモード. qcomp=0.85 #quantizer(量子化)の圧縮。0~1低い数値にするとビットレートの変動幅が低くなる。=画質の変動幅が大きくなる。高い数値にするとquantizerの変動幅が低くなる。=画質の変動幅が小さくなる。 qmin=10 #quantizerの最小値 qmax=30 #quantizerの最大値 qdiff=8 #quantizerの変動幅 i_qfactor=0.71 #I-Pフレーム間のq値の比(Iフレームのq値/Pフレームのq値). partitions=+parti8x8+parti4x4+partp8x8+partb8x8 flags=+loop
以下は、MediaInfoから、引っこ抜いた設定なんだけど、ffmpegでは設定できないのか、書き方が悪いのか、記載しても動かなかったもの。
#analyse=0x3:0x113 #psy_rd=1.00:0.00 #mixed_ref=1 #chroma_me=1 #cqm=0 #deadzone=21,11 #fast_pskip=1 #chroma_qp_offset=-2 #lookahead_threads=1 #sliced_threads=0 #decimate=1 #interlaced=0 #bluray_compat=0 #constrained_intra=0 #b_pyramid=2 #b_adapt=1 #b_bias=0 #direct=1 #open_gop=0 #intra_refresh=0 #rc=crf #ip_ratio=1.40 #aq=1:1.00 #flags2=+bpyramid+mixed_refs+wpred+dct8x8+fastpskip