私は自前サーバがLinux(fedora 16 x86_64)なこともあるため、
・地デジ ts→mp4保存
・Blu-ray m2ts→mp4保存(ドライブ自体は会社でいただいたものw)
・上記のものをpspで見れるように変換(mp4 → psp形式mp4)
なんてことのために、ffmpeg生で叩いてます。
(携帯動画変換君の中身とか言えばピンとくる人もいるのかな)
./configureから自前で、gitで取って、x264とかMP4Boxとかその辺のライブラリ入れた後、
./configure \
--prefix=/usr/local \
--bindir=/usr/local/bin \
--datadir=/usr/local/share/ffmpeg \
--incdir=/usr/local/include \
--libdir=/usr/local/lib \
--mandir=/usr/local/share/man \
--arch=x86_64 \
--enable-cross-compile \
--target-os=linux \
--enable-nonfree \
--enable-version3 \
--extra-cflags='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic' \
--extra-version=rpmfusion \
--enable-bzlib \
--enable-libopencore-amrnb \
--enable-libopencore-amrwb \
--enable-libdc1394 \
--enable-libdirac \
--enable-libfaac \
--enable-libgsm \
--enable-libnut \
--enable-libmp3lame \
--enable-libopenjpeg \
--enable-librtmp \
--enable-libschroedinger \
--enable-libspeex \
--enable-libtheora \
--enable-libvorbis \
--enable-libvpx \
--enable-libx264 \
--enable-libxvid \
--enable-x11grab \
--enable-postproc \
--enable-pthreads \
--enable-filter=avfilter \
--enable-filter=avfilter-lavf \
--disable-static \
--enable-shared \
--enable-gpl \
--disable-debug \
--disable-stripping \
--shlibdir=/usr/local/lib \
--enable-runtime-cpudetect \
--enable-librtmp \
--extra-libs='-lrtmp -lpolarssl '
んなことでバイナリ作ってます。
(怒られたら、足りないライブラリ-develをyumで入れるだけ。結構楽。まぁ、いらんライブラリも結構あるけど。)
この辺はまたいずれ。
余談ですが↑をWIndowsサーバに憧れてmingwでやったときは結構きつかった。
mingwにはyumもaptもないからきっつい。自力でconfigure/make/make install の繰り返し。
またこれもいずれ。
ちなみにh264 / libfaacでエンコするわけですが、h264のプロファイルはオプションが多すぎる。
psp2.1プロファイル(だったか)を調べてたとき神のような設定をしていた人がいるのでそれを使ってたりします。
(ffmpegだったら、/usr/local/share/ffmpeg/libx264-(プリセット名).ffpresetに保存。
うちのは↓見たいな感じ。)
coder=1
level=21
b=1200k
bufsize=512
g=250
crf=21
qmin=16
qmax=37
bf=3
subq=9
trellis=2
cmp=chroma
directpred=3
b_strategy=1
partitions=parti4x4+partp8x8+partb8x8
flags2=+wpred+mixed_refs
sc_threshold=60
keyint_min=5
me_method=esa
me_range=32
refs=3
rc_eq="blurCplx^(1-qComp)"
qcomp=0.3
んで、鯖も強化して
Core i5 2500でやってみてますが意外とパフォーマンスが出ないような気がする。
sshで入るときに遅くなったのは結構心配した。
うーん、HDDも早くしないといかんかなぁと思ってたとき、こんなオプションを見つけた。
-threads (CPUハイパースレッド数)
Core i5 2500は4コア4HTですが、4HTをうまくいかせているのかわからなかったわけですが
このオプションを指定すると意外と素直になってくれます。
!/bin/sh
for file in *.{avi,mp4,flv};
do
echo change ${file}
ffmpeg -y -i "${file}" -threads 4 -vcodec libx264 -vpre psp21 -s 480x270 -aspect 16:9 -r 30000/1001 -acodec libfaac -ar 44100 -ab 192k -ac 2 -map 0:0 -map 0:1 -f psp "${file}.MP4"
ffmpeg -y -i "${file}" -f image2 -ss 100 -vframes 1 -s 160x120 -an "${file}.THM"
done
こんな感じで3番組くらい同時にエンコって見るとイイ感じにCPU使ってくれたりします。
まぁ、、、そもそもCore i5にしたんだから、ハードエンコもできるんで、そのほうがめちゃくちゃ早いんですがね。
この辺は、また今度やってみます。
タグ:ffmpeg Linux
