それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

Debian にh264有効の最新ffmpegを入れる

ffmpegの最新版をDebian GNU Linuxでも使えるようにする。

使い方

sudo bash ffmpeg_install.sh

あとは暫し待つだけ。

もし他のマシンにも持って行くなら、 .debファイルを持って行くと便利。

ffmpeg_install.sh

#!/usr/bin/env bash
#uninstall
sudo apt-get remove ffmpeg x264 libx264-dev -y
## install build-tools and library
sudo apt-get update
sudo apt-get install build-essential checkinstall git libfaac-dev libjack-jackd2-dev \
  libmp3lame-dev libopencore-amrnb-dev libopencore-amrwb-dev libsdl1.2-dev libtheora-dev \
  libva-dev libvdpau-dev libvorbis-dev libx11-dev libxfixes-dev texi2html yasm zlib1g-dev
sudo apt-get install libtool automake autoconf checkinstall libtheora-dev libvorbis-dev libopencore-amrwb-dev libopencore-amrnb-dev
# 
#################################
#yasm
wget -O - http://www.tortall.net/projects/yasm/releases/yasm-1.2.0.tar.gz  |tar zxvf -
cd yasm-1.2.0
./configure && make
sudo checkinstall  --pkgname=yasm --pkgversion="1:$(date +%Y%m%d%H%M)" --backup=no \
  --deldoc=yes --fstrans=no --default
cd

#####################
#lame install 
cd 
wget -O - http://downloads.sourceforge.net/project/lame/lame/3.99/lame-3.99.4.tar.gz |tar zxvf -
cd lame-3.99.4/
./configure && make
sudo checkinstall --pkgname=lame --pkgversion="1:$(date +%Y%m%d%H%M)-git" --backup=no \
  --deldoc=yes --fstrans=no --default
cd


###############################
## faac
cd
wget -O - http://downloads.sourceforge.net/faac/faac-1.28.tar.gz | tar xzvf -
echo "diff -urN faac-1.28//common/mp4v2/mpeg4ip.h faac-1.28-dst//common/mp4v2/mpeg4ip.h
--- faac-1.28//common/mp4v2/mpeg4ip.h	2009-01-27 07:42:35.000000000 +0900
+++ faac-1.28-dst//common/mp4v2/mpeg4ip.h	2012-03-18 21:35:47.000000000 +0900
@@ -120,13 +120,6 @@
 #endif
 #include <sys/param.h>
 
-#ifdef __cplusplus
-extern \"C\" {
-#endif
-char *strcasestr(const char *haystack, const char *needle);
-#ifdef __cplusplus
-}
-#endif
 
 #define OPEN_RDWR O_RDWR
 #define OPEN_CREAT O_CREAT " > faac.diff
cd faac-1.28/
patch -p1 < ../faac.diff
./bootstrap && ./configure 
make
sudo checkinstall --pkgname=faac --pkgversion="1:$(date +%Y%m%d%H%M)-git" --backup=no \
  --deldoc=yes --fstrans=no --default
cd 
#とりあえず。リンク
#sudo ln -s   /usr/local/lib/libfaac.so.0.0.0  /usr/lib/libfaac.so.0
#sudo ln -s   /usr/local/lib/libmp3lame.so.0.0.0 /usr/lib/libmp3lame.so.0
sudo ldconfig
################################
#install x264
cd
git clone git://git.videolan.org/x264
cd x264
./configure --enable-static
make
sudo checkinstall --pkgname=x264 --pkgversion="3:$(./version.sh | \
    awk -F'[" ]' '/POINT/{print $4"+git"$5}')" --backup=no --deldoc=yes \
    --fstrans=no --default

##########################
#install ffmpeg
cd
rm -rf  ./ffmpeg
git clone --depth 1 git://source.ffmpeg.org/ffmpeg
cd ffmpeg
./configure --enable-gpl --enable-libfaac --enable-libmp3lame --enable-libopencore-amrnb \
    --enable-libopencore-amrwb --enable-libtheora --enable-libvorbis --enable-libx264 \
    --enable-nonfree --enable-postproc --enable-version3 --enable-x11grab
make
sudo checkinstall --pkgname=ffmpeg --pkgversion="5:$(date +%Y%m%d%H%M)-git" --backup=no \
  --deldoc=yes --fstrans=no --default
hash x264 ffmpeg ffplay ffprobe

debianのyasmが古いんですよね。それが以外はubuntuと同じでいけるんですけどね。

その他の問題点

Common Problems

In some servers the compilation may fail with the following error

 In file included from mp4common.h:29, from 3gp.cpp:28:mpeg4ip.h:126: error: new declaration ‘char* strcasestr(const char*, const char*)’

That is because the C function strcasestr declared in the libfaac sources is already declared in a system-wide library. To solve it: Edit the file /usr/local/src/faac-1.28/common/mp4v2/mpeg4ip.h and delete the following line (around line 126)

 char *strcasestr(const char *haystack, const char *needle);
http://documentation.hwdmediashare.co.uk/wiki/Setting_up_your_server_for_hwdVideoShare

strcasestrの宣言をcommon/mp4v2/mpeg4ip.h から削除します。

何のエラーかというとは、すでに他で使われてるし、機能も同じだから、strcasestrの宣言は消してしまわないとダメだよって。

その他のOSでのインスト

windows + cygwin
ubuntu
macosx