-->

2011-01-26

Resampling with input channels greater than 2 unsupported.

http://hibari.2ch.net/test/read.cgi/software/1270542020/-100

mkdir ~/src/
cd ~/src/
svn co svn://svn.ffmpeg.org/soc/libavfilter
cd libavfilter/
sh checkout.sh
cd ffmpeg/libavcodec/
wget http://svn.xiph.org/trunk/ffmpeg2theora/patches/6to2channel-resample.patch
patch resample.c < 6to2channel-resample.patch
cd ../
mkdir ~/ffmpeg
./configure --prefix=$(realpath ~/ffmpeg) && make && make install

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 と変更すると、コマンドの文字が出力されます。

2011-01-20

ffmpegのfilterでmovie,overlayが使えない例

追記: 2011-07-11現在、通常のパッケージのffmpegでmovieフィルターは動作します。
http://ffmpeg-users.933282.n4.nabble.com/Overlay-filter-with-new-movie-filter-problem-td3301170.html
$ eix -e media-video/ffmpeg -c
[I] media-video/ffmpeg (0.7_rc1@2011年07月02日): Complete solution to record, convert and stream audio and video. Includes libavcodec.
$ ffmpeg -version 2>&1|head -n3
ffmpeg version 0.7-rc1, Copyright (c) 2000-2011 the FFmpeg developers
  built on Jul  2 2011 13:46:01 with gcc 4.4.5
  configuration: --prefix=/usr --libdir=/usr/lib64 --shlibdir=/usr/lib64 --mandir=/usr/share/man --enable-shared --cc=x86_64-pc-linux-gnu-gcc --disable-static --enable-gpl --enable-version3 --enable-postproc --enable-avfilter --disable-stripping --disable-debug --disable-vaapi --disable-ffplay --disable-vdpau --enable-libmp3lame --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-libtheora --enable-libvorbis --enable-libx264 --enable-libxvid --enable-libfaac --enable-nonfree --enable-x11grab --enable-frei0r --enable-libfreetype --enable-pthreads --enable-libopencore-amrwb --enable-libopencore-amrnb --enable-libgsm --enable-libdirac --enable-librtmp --enable-libschroedinger --enable-libspeex --enable-libvpx --enable-libopenjpeg --disable-altivec --disable-avx --enable-pic --cpu=host --enable-hardcoded-tables
下記の記述はパッケージのffmpegのバージョンが古い場合に最新版をソースから入れると欲しいオプションが追加される例です。



http://www.corbellconsulting.com/2010/07/using-ffmpeg-to-add-and-watermark-overlay-on-a-video-2/
http://ffmpeg-users.933282.n4.nabble.com/problem-with-movie-td3069917.html
http://fixedpoint.jp/ffmpeg/ffmpeg.html
http://www.ffmpeg.org/ffmpeg.html

動画に画像を書き込む場合に使うようですが使えません。

svn co svn://svn.ffmpeg.org/soc/libavfilter
cd libavfilter/
sh checkout.sh
cd ffmpeg/
./configure --list-filters

export CFLAGS="-O2 -pipe -march=native"
export CXXFLAGS="${CFLAGS}"
export CHOST="x86_64-pc-linux-gnu"

INSTALLDIR=~/ffmpeg-`date +%Y-%m-%d`
mkdir ${INSTALLDIR}

make distclean
make clean

# あらかじめパッケージ版を入れておくと必要なライブラリが入っている場合が多いです。
# $ eix ^ffmpeg$ -c
# [I] media-video/ffmpeg (0.6_p25767@2010年12月19日): Complete solution to record, convert and stream audio and video. Includes libavcodec.
# sudo emerge -av libnut
# sudo USE="ffmpeg" emerge -av opencv

./configure \
--prefix=${INSTALLDIR} \
--enable-gpl \
--enable-nonfree \
--enable-version3 \
--enable-gray \
--enable-small \
--enable-frei0r \
--enable-libopencore-amrnb \
--enable-libopencore-amrwb \
--enable-libopencv \
--enable-libdirac \
--enable-libfaac \
--enable-libfreetype \
--enable-libgsm \
--enable-libmp3lame \
--enable-libnut \
--enable-libopenjpeg \
--enable-libschroedinger \
--enable-libspeex \
--enable-libtheora \
--enable-libvorbis \
--enable-libvpx \
--enable-libx264 \
--enable-libxvid \
--disable-altivec \
--disable-amd3dnow \
--disable-amd3dnowext \
--disable-mmx \
--disable-mmx2

make -j 3

make install

export PATH="{$INSTALLDIR}/bin:${PATH}"

ffmpeg -i ./src.mp4 -vf "movie=0:png:./logo.png [logo]; [in][logo] overlay=10:10:1" logo.flv

2011-01-13

flvtool2のインストール

$ sudo layman -a graaff
$ layman -l
$ sudo layman -S && sudo eix-update
$ eix flvtool2
$ sudo ACCEPT_KEYWORDS="~amd64" emerge -av flvtool2
$ ffmpeg -i src.mp4 tmp.flv && flvtool2 -UP tmp.flv
用途は、
flow player http://flowplayer.org/plugins/streaming/pseudostreaming.html
nginx http://nginx.org/ http://wiki.nginx.org/Main
などで読み込んでいない部分のシークバーをクリックしても読み込める、など。
もしかすると失敗しても0を返すかもしれないので、
flvtool2 -UP xxx.flv && ... とつなげると困るかもしれない。
ffmpegのバージョンによってはエラーを出すかもしれない。
xen,kvm,別のサーバー、などにcentosなどを入れてrpmforgeなどを入れて、
yum install flvtool2としても似たようなバージョンが入るかもしれない。

2011-01-06

vertical-align

<html>
 <head>
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
 </head>
 <body>
  <div style="background-color:gray;
              width:120px;height:90px;
              text-align:center;
              line-height:90px;vertical-align:middle;">■</div>
 </body>
</html>
ブロック要素の中央にブロック要素のwidth,height以下の何かを配置する。
tableタグのが良いかもしれない。