-->

2011-01-25

ffmpegのyuv以外で早送りにする例

yuvのファイルサイズが大きいです。

http://www.google.co.jp/search?num=100&hl=ja&safe=off&biw=1272&bih=776&q=yuv+sox+ffmpeg&btnG=%E6%A4%9C%E7%B4%A2&aq=f&aqi=&aql=&oq=

http://ffmpeg.org/faq.html#SEC23

http://ffmpeg.org/libavfilter.html#SEC34

利用するディスクサイズが少なくなったはずです。果たして本当にそうでしょうか?
soxは100倍まで対応しているようです。
聞き取る場合100倍は無理で2~4倍程度になると思います。
下記の例はperlやexprなどの外部コマンドが必要です。
threadNumを手動で入れる場合で、cpuの利用を最低にしたい場合は1です。
srcFile=./src.mp4 \
&& threadNum=$(expr $(grep ^processor /proc/cpuinfo | wc -l) \* 2 - 1) \
&& frameSize="-s 512x288" \
&& frameRate=60 \
&& diameter=3 \
&& videoBitrate=1600 \
&& ffmpeg -threads ${threadNum} -y -i ${srcFile} \
 -mbd 2 -flags +mv4+aic -trellis 2 -cmp 2 -subcmp 2 -g 2147483647 \
 -vcodec mpeg4 -f mp4 ${frameSize} \
 -vf "setpts=$(perl -e "print 1/${diameter}")*PTS" \
 -an -r $(perl -e "print int(${diameter}*${frameRate})") \
 -b $(perl -e "print ${videoBitrate}*${diameter}")k \
 -bt $(perl -e "print ${videoBitrate}*${diameter}*20")k -bufsize 1835k -maxrate 400000k -minrate 0 \
 tmp1.mp4 \
&& ffmpeg -threads ${threadNum} -y -i ${srcFile} -vn -aq 100 tmp2.wav \
&& sox tmp2.wav tmp3.wav tempo ${diameter} 30 \
&& ffmpeg -threads ${threadNum} -y -i tmp1.mp4 -i tmp3.wav \
 -mbd 2 -flags +mv4+aic -trellis 2 -cmp 2 -subcmp 2 -g 2147483647 \
 -vcodec mpeg4 -f mp4 ${frameSize} \
 -acodec libfaac -aq 80 -async 30 -r ${frameRate} \
 -b ${videoBitrate}k -bt $(expr ${videoBitrate} \* 20)k -bufsize 1835k -maxrate 4000k -minrate 0 \
 -pass 1 /dev/null \
&& ffmpeg -threads ${threadNum} -y -i tmp1.mp4 -i tmp3.wav \
 -mbd 2 -flags +mv4+aic -trellis 2 -cmp 2 -subcmp 2 -g 2147483647 \
 -vcodec mpeg4 -f mp4 ${frameSize} \
 -acodec libfaac -aq 80 -async 30 -r ${frameRate} \
 -b ${videoBitrate}k -bt $(expr ${videoBitrate} \* 20)k -bufsize 1835k -maxrate 4000k -minrate 0 \
 -pass 2 result.mp4
流れは、速い映像を作る => 速い音を作る => 2passエンコードで合成する、です。
mpeg4のオプションはマニュアルの内容のままです。
実は -vf sox=xxx のようなオプションがあるのかもしれません、が見つかりません。
例えば、&& ffmpeg, && sox となっている部分を、
&& echo ffmpeg, && echo sox と変更すると、コマンドの文字が出力されます。

0 件のコメント: