ffmpegでエンコード
再びffmpegを使ってアニメのエンコをしている。
だけど自力コンパイルはもう面倒臭いのでyum使う。らくらく。
しかし現状libfaacは自力で組み込まなくてはらしい。
そこで以下の情報を参考に、aacのオプションを変えてみる
最近のFFmpegで動画の音声にMP3やAACを指定する方法 | TeraDas-テラダス
# old -acodec libfaac # new -acodec aac -strict experimental
これで、今までのプリセットを使いながらエンコードができる(音質は悪いらしいが)。
適当な手順
使用しているOSとカーネルのバージョン確認 # uname -a Linux cathymaiden.moe.hm 3.6.11-1.fc17.x86_64 #1 SMP Mon Dec 17 22:16:35 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux # yum install ffmpeg x264 ffmpegのバージョン確認 # ffmpeg --version ffmpeg version 0.10.6 Copyright (c) 2000-2012 the FFmpeg developers built on Oct 31 2012 22:24:06 with gcc 4.7.2 20120921 (Red Hat 4.7.2-2) configuration: --prefix=/usr --bindir=/usr/bin --datadir=/usr/share/ffmpeg --incdir=/usr/include/ffmpeg --libdir=/usr/lib64 --mandir=/usr/share/man --arch=x86_64 --extra-cflags='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic' --enable-bzlib --disable-crystalhd --enable-gnutls --enable-libass --enable-libcdio --enable-libcelt --enable-libdc1394 --disable-indev=jack --enable-libfreetype --enable-libgsm --enable-libmp3lame --enable-openal --enable-libopenjpeg --enable-libpulse --enable-librtmp --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-libvorbis --enable-libv4l2 --enable-libvpx --enable-libx264 --enable-libxvid --enable-x11grab --enable-avfilter --enable-postproc --enable-pthreads --disable-static --enable-shared --enable-gpl --disable-debug --disable-stripping --shlibdir=/usr/lib64 --enable-runtime-cpudetect libavutil 51. 35.100 / 51. 35.100 libavcodec 53. 61.100 / 53. 61.100 libavformat 53. 32.100 / 53. 32.100 libavdevice 53. 4.100 / 53. 4.100 libavfilter 2. 61.100 / 2. 61.100 libswscale 2. 1.100 / 2. 1.100 libswresample 0. 6.100 / 0. 6.100 libpostproc 52. 0.100 / 52. 0.100
以下の内容で保存
# vim /usr/share/ffmpeg/libx264-hq-ts.ffpreset level=41 crf=25 coder=1 flags=+loop cmp=+chroma partitions=+parti8x8+parti4x4+partp8x8+partb8x8 me_method=umh subq=7 me_range=16 g=250 keyint_min=25 sc_threshold=40 i_qfactor=0.71 b_strategy=1 qmin=10 rc_eq='blurCplx^(1-qComp)' bf=16 bidir_refine=1 refs=6 deblock=0:0
適当なスクリプト。ファイルの出力先は各自設定してね。
# vim encode.sh #!/bin/bash files=(`ls -1`) # インデックスに @ を指定して、全ての要素を for 文の値リストに指定 for file in ${files[@]} do filepath=`pwd`/$file filename=${file%.*} echo "エンコード対象ファイル: $filepath" /usr/bin/ffmpeg -y -i $filepath -f mp4 -vcodec libx264 \ -fpre /usr/share/ffmpeg/libx264-hq-ts.ffpreset \ -r 30000/1001 -aspect 16:9 -s 1280x720 -bufsize 20000k -maxrate 25000k \ -acodec aac -strict experimental -ac 2 -ar 48000 -ab 128k -threads 4 /home4/videodir/"${filename}".mp4 done exit 0