-->
ラベル ffmpeg の投稿を表示しています。 すべての投稿を表示
ラベル ffmpeg の投稿を表示しています。 すべての投稿を表示

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としても似たようなバージョンが入るかもしれない。

2010-12-19

ffmpeg と flvtool2 でエラーになる例

FFmpeg version SVN-r25767 で作成した動画が flvtool2 でエラーになりました。
0.6_p25767 => 0.6 に戻しても使えるようになります。

$ cat /etc/redhat-release
CentOS release 5.5 (Final)

$ flvtool2 -UP tmp.flv
ERROR: EOFError
ERROR: /usr/lib/ruby/site_ruby/1.8/flv/amf_string_buffer.rb:37:in `read'
ERROR: /usr/lib/ruby/site_ruby/1.8/flv/video_tag.rb:80:in `read_header'
ERROR: /usr/lib/ruby/site_ruby/1.8/flv/video_tag.rb:47:in `after_initialize'
ERROR: /usr/lib/ruby/site_ruby/1.8/flv/tag.rb:56:in `initialize'
ERROR: /usr/lib/ruby/site_ruby/1.8/flv/stream.rb:449:in `new'
ERROR: /usr/lib/ruby/site_ruby/1.8/flv/stream.rb:449:in `read_tags'
ERROR: /usr/lib/ruby/site_ruby/1.8/flv/stream.rb:58:in `initialize'
ERROR: /usr/lib/ruby/site_ruby/1.8/flvtool2/base.rb:272:in `new'
ERROR: /usr/lib/ruby/site_ruby/1.8/flvtool2/base.rb:272:in `open_stream'
ERROR: /usr/lib/ruby/site_ruby/1.8/flvtool2/base.rb:238:in `process_files'
ERROR: /usr/lib/ruby/site_ruby/1.8/flvtool2/base.rb:225:in `each'
ERROR: /usr/lib/ruby/site_ruby/1.8/flvtool2/base.rb:225:in `process_files'
ERROR: /usr/lib/ruby/site_ruby/1.8/flvtool2/base.rb:44:in `execute!'
ERROR: /usr/lib/ruby/site_ruby/1.8/flvtool2.rb:168:in `execute!'
ERROR: /usr/lib/ruby/site_ruby/1.8/flvtool2.rb:228
ERROR: /usr/bin/flvtool2:2:in `require'
ERROR: /usr/bin/flvtool2:2

$ ffmpeg -y -i tmp.flv -vcodec copy -acodec copy tmp2.flv
FFmpeg version 0.6.1, Copyright (c) 2000-2010 the FFmpeg developers
  built on Dec  4 2010 15:35:31 with gcc 4.1.2 20080704 (Red Hat 4.1.2-48)
~中略~
frame= 6243 fps=  0 q=-1.0 Lsize=    9331kB time=204.04 bitrate= 374.6kbits/s
video:7493kB audio:1594kB global headers:0kB muxing overhead 2.688855%

$ flvtool2 -UP tmp2.flv
---
/tmp/tmp2.flv:
  hasKeyframes: true
  cuePoints:
  audiodatarate: 62.9997023152194
  hasVideo: true
  stereo: true
  canSeekToEnd: false
  framerate: 30
  audiosamplerate: 44000
  videocodecid: 7
  datasize: 9500370
  lasttimestamp: 208.274
  audiosamplesize: 16
  audiosize: 1726071
  hasAudio: true
  audiodelay: 0
  videosize: 7772385
  metadatadate: Sun Dec 19 22:37:09 GMT+0900 2010
  metadatacreator: inlet media FLVTool2 v1.0.6 - http://www.inlet-media.de/flvtool2
  lastkeyframetimestamp: 206.572
  height: 200
  filesize: 9556611
  hasMetadata: true
  keyframes:
    times:
      - 0
      - 0
      - 8.341
      - 9.375
      - 13.179
~中略~
      - 8720576
      - 8944857
      - 9162079
      - 9372005
      - 9548418
  audiocodecid: 2
  videodatarate: 295.906392540596
  duration: 208.307
  hasCuePoints: false
  width: 352
...

$ ffmpeg 2>&1 | head -n2
FFmpeg version 0.6, Copyright (c) 2000-2010 the FFmpeg developers
  built on Dec 19 2010 23:03:42 with gcc 4.4.4

$ ffmpeg -i src/a.flv -vcodec libx264 -vpre medium dst2/a.flv

$ flvtool2 -UP a.flv
---
/tmp/dst2/a.flv:
  hasKeyframes: true
  cuePoints:
  audiodatarate: 65.916396729909
  hasVideo: true
  stereo: true
  canSeekToEnd: false
  framerate: 30
  audiosamplerate: 11000
  videocodecid: 7
  datasize: 481161
  lasttimestamp: 12.966
  audiosamplesize: 16
  audiosize: 109639
  hasAudio: true
  audiodelay: 0
  videosize: 370742
  metadatadate: Sun Dec 19 23:07:46 GMT+0900 2010
  metadatacreator: inlet media FLVTool2 v1.0.6 - http://www.inlet-media.de/flvtool2
  lastkeyframetimestamp: 12.666
  height: 240
  filesize: 483766
  hasMetadata: true
  keyframes:
    times:
      - 0
      - 0
      - 8.333
      - 12.666
    filepositions:
      - 763
      - 824
      - 273615
      - 471023
  audiocodecid: 2
  videodatarate: 226.093475242943
  duration: 12.999
  hasCuePoints: false
  width: 320
...


# 使えない。
$ ffmpeg 2>&1 | head -n2
FFmpeg version SVN-r25767, Copyright (c) 2000-2010 the FFmpeg developers
  built on Dec 19 2010 23:17:31 with gcc 4.4.4

# 使える。
$ ffmpeg 2>&1 | head -n2
FFmpeg version 0.6, Copyright (c) 2000-2010 the FFmpeg developers
  built on Dec 19 2010 23:03:42 with gcc 4.4.4

# 使える。
$ ffmpeg 2>&1 | head -n2
FFmpeg version 0.6.1, Copyright (c) 2000-2010 the FFmpeg developers
  built on Dec  4 2010 15:35:31 with gcc 4.1.2 20080704 (Red Hat 4.1.2-48)