「FFMPEGメモ」の版間の差分

提供: JUNKWIKI(ジャンクウィキ)
移動: 案内検索
 
行12: 行12:
 
録画済みアニメtsのmp4エンコードを想定してます。
 
録画済みアニメtsのmp4エンコードを想定してます。
  
まずは [http://ameblo.jp/sc1986/entry-12096410411.html] を参考にプロファイルを作成。
+
まずは [http://ameblo.jp/sc1986/entry-12096410411.html] を参考にプロファイルを作成してlibx264-hq-ts.ffpresetの名前で保存。
 
  <pre>level=41
 
  <pre>level=41
crf=23
+
x264-params=vbv-maxrate=6000:vbv-bufsize=12000
 +
level=41
 +
crf=22
 
coder=1
 
coder=1
 
flags=+loop
 
flags=+loop
行22: 行24:
 
subq=7
 
subq=7
 
me_range=16
 
me_range=16
g=250
+
g=360
keyint_min=25
+
keyint_min=24
 
sc_threshold=40
 
sc_threshold=40
i_qfactor=0.71
+
i_qfactor=0.80
 
b_strategy=1
 
b_strategy=1
 
qmin=10
 
qmin=10
行31: 行33:
 
bf=16
 
bf=16
 
bidir_refine=1
 
bidir_refine=1
refs=6
+
refs=8
deblock=0:0:0
+
deblock=0
 +
bt=90
 +
qcomp=0.7
 
</pre>
 
</pre>
  
以下のコマンドでエンコードすると、24fpsに逆テレシネされた1280x720なmp4が出来上がるはず。
+
以下のコマンドでエンコードすると、24fpsに逆テレシネされた1440x1080なmp4が出来上がるはず(BSからのエンコだとしても、殆ど1440から引き延ばして放送してるだけなのでフルHDにする意味無し)。
  ffmpeg -i "入力ファイル名.m2ts" -y -f mp4 -vcodec libx264 -fpre ./libx264-hq-ts.ffpreset -vf pullup -r 24000/1001 -aspect 16:9 -s 1280x720 -bufsize 50000k -maxrate 10000k -vsync 1 -acodec copy -absf aac_adtstoasc -map 0:0 -map 0:1 -threads 0 出力ファイル名.mp4
+
  ffmpeg -i "入力ファイル名.m2ts" -y -f mp4 -vcodec libx264 -fpre ./libx264-hq-ts.ffpreset -vf pullup -r 24000/1001 -aspect 16:9 -s 1440x1080-vsync 1 -acodec copy -absf aac_adtstoasc -map 0:0 -map 0:1 -threads 16 出力ファイル名.mp4
 +
インタレ解除にはyadif使ってdecimateするのが普通らしいんだけど、なんか何も考えずにpullupした方が絵的にも間引きフレーム的にも良好な結果が得られた。ただし60iなテロップは全然ダメ(1280x720とかにリサイズすれば多少ごまかせる)。あと、CPUもてあましていそうだったらthreads増やしてみよう。

2017年1月19日 (木) 23:04時点における最新版

ほぼ自分向けガバガバメモ

環境

Linuxです。具体的にはCentOS6.8です。

ffmpegのコンパイル

[1] とか [2] の通りやればいいんだけど、libなんとかっていうライブラリに関してはコンパイルすんのが面倒くさかったりいらなかったりなんかmake通んねーなって時は

PKG_CONFIG_PATH="$HOME/ffmpeg_build/lib/pkgconfig" ./configure --prefix="$HOME/ffmpeg_build" --extra-cflags="-I$HOME/ffmpeg_build/include" --extra-ldflags="-L$HOME/ffmpeg_build/lib -ldl" --bindir="$HOME/bin" --pkg-config-flags="--static" --enable-gpl --enable-nonfree --enable-libfdk_aac --enable-libfreetype --enable-libmp3lame --enable-libopus --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265

のenableオプション外しちゃえばいい(ガバガバ)

ffmpegエンコード

録画済みアニメtsのmp4エンコードを想定してます。

まずは [3] を参考にプロファイルを作成してlibx264-hq-ts.ffpresetの名前で保存。

level=41
x264-params=vbv-maxrate=6000:vbv-bufsize=12000
level=41
crf=22
coder=1
flags=+loop
cmp=+chroma
partitions=+parti8x8+parti4x4+partp8x8+partb8x8
me_method=umh
subq=7
me_range=16
g=360
keyint_min=24
sc_threshold=40
i_qfactor=0.80
b_strategy=1
qmin=10
rc_eq='blurCplx^(1-qComp)'
bf=16
bidir_refine=1
refs=8
deblock=0
bt=90
qcomp=0.7

以下のコマンドでエンコードすると、24fpsに逆テレシネされた1440x1080なmp4が出来上がるはず(BSからのエンコだとしても、殆ど1440から引き延ばして放送してるだけなのでフルHDにする意味無し)。

ffmpeg -i "入力ファイル名.m2ts" -y -f mp4 -vcodec libx264 -fpre ./libx264-hq-ts.ffpreset -vf pullup -r 24000/1001 -aspect 16:9 -s 1440x1080-vsync 1 -acodec copy -absf aac_adtstoasc -map 0:0 -map 0:1 -threads 16 出力ファイル名.mp4

インタレ解除にはyadif使ってdecimateするのが普通らしいんだけど、なんか何も考えずにpullupした方が絵的にも間引きフレーム的にも良好な結果が得られた。ただし60iなテロップは全然ダメ(1280x720とかにリサイズすれば多少ごまかせる)。あと、CPUもてあましていそうだったらthreads増やしてみよう。