2010年9月30日木曜日

CentOS5.5にMP4Boxをインストールする

ffmpegやflvtool2はyum(rpmforge)からインストールできるのですが MP4Boxは無いようなのでソースファイルからコンパイルします

最初に必要なパッケージを追加します
現に入っている場合は飛ばして下さい
[root@blog.m264.com ~]$ yum install gcc gcc-c++ freeglut-devel which
===================================================================================
 Package                     Arch        Version              Repository   Size
===================================================================================
Installing:
 gcc-c++                     i386        4.1.2-48.el5         base        3.4 M
 freeglut-devel              i386        2.4.0-7.1.el5        base        98 k
Installing for dependencies:
 libstdc++-devel             i386        4.1.2-48.el5         base        2.8 M
 freeglut                    i386        2.4.0-7.1.el5        base        142 k
Transaction Summary
====================================================================================
Install       4 Package(s)
Upgrade       0 Package(s)

MP4Boxをダウンロードします
[root@blog.m264.com ~]$ wget http://short.m264.info/gpac-045-tar
--2010-09-30 10:36:10--  http://short.m264.info/gpac-045-tar
short.m264.info をDNSに問いあわせています... 168.143.174.97
short.m264.info|168.143.174.97|:80 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 4269054 (4.1M) [application/x-gzip]
`gpac-0.4.5.tar.gz' に保存中

100%[===========================================>] 4,269,054    896K/s 時間 4.8s

2010-09-30 10:36:17 (866 KB/s) - `gpac-0.4.5.tar.gz' へ保存完了 [4269054/4269054]

[root@localhost work]#
ファイルを解凍します
[root@blog.m264.com ~]$ tar -xf ./gpac-0.4.5.tar.gz
cd ./gpac
configureしてmakeします
configureに実行権が無いので1.か2.どちらかの方法で実行して下さい
[root@blog.m264.com ~]$ chmod u+x ./configure
./configure
若しくは
[root@blog.m264.com ~]$ sh ./configure
** System Configuration
6行ぐらい出力

** GPAC 0.4.5 Core Configuration **
8行ぐらい出力

** Detected libraries **
17行ぐらい出力

** Extra Libraries used **
11行ぐらい出力

Creating config.mak
config.h is unchanged
Done - type 'make help' for make info, 'make' to build

メイクする
[root@blog.m264.com ~]$ make
なんかすごく沢山でます
正しくメイクできたらインストールする
もし失敗してたら足りないパッケージを足して再度メイクしなおし
[root@blog.m264.com ~]$ make clean
[root@blog.m264.com ~]$ make

[root@blog.m264.com ~]$ make install
install -d "/usr/local"
install -d "/usr/local/bin"
install -m 755 bin/gcc/MP4Box "/usr/local/bin"
make -C applications install
make[1]: ディレクトリ `/root/work/gpac/applications' に入ります
set -e; for i in mp4client ; do make -C $i install; done
make[2]: ディレクトリ `/root/work/gpac/applications/mp4client' に入ります
rm -f main.o extract.o ../../bin/gcc/MP4Client
make -override BUILD_INSTALL=yes all
make[3]: ディレクトリ `/root/work/gpac/applications/mp4client' に入ります
gcc -O3 -fno-strict-aliasing -Wno-pointer-sign -I/root/work/gpac/include -DGPAC_MODULES_PATH=\"/usr/local/lib/gpac\" -c -o main.o main.c
gcc -O3 -fno-strict-aliasing -Wno-pointer-sign -I/root/work/gpac/include -DGPAC_MODULES_PATH=\"/usr/local/lib/gpac\" -c -o extract.o extract.c
gcc -Wl --warn-common -o ../../bin/gcc/MP4Client main.o extract.o -L../../bin/gcc -lgpac -lz -lGL -lglut
make[3]: ディレクトリ `/root/work/gpac/applications/mp4client' から出ます
install -m 755 ../../bin/gcc/MP4Client "/usr/local/bin"
make[2]: ディレクトリ `/root/work/gpac/applications/mp4client' から出ます
make[1]: ディレクトリ `/root/work/gpac/applications' から出ます
install -d "/usr/local/lib/gpac"
install bin/gcc/*.so "/usr/local/lib/gpac"
rm -f /usr/local/lib/gpac/libgpac.so
rm -f /usr/local/lib/gpac/nposmozilla.so
strip bin/gcc/libgpac.so
install -m 755 bin/gcc/libgpac.so /usr/local/lib/libgpac-0.4.5.so
ln -sf libgpac-0.4.5.so /usr/local/lib/libgpac.so
ldconfig || true
install -d "/usr/local/man"
install -d "/usr/local/man/man1"
if [ -d doc ] ; then \
install -m 644 doc/man/mp4box.1 /usr/local/man/man1/ ; \
install -m 644 doc/man/mp4client.1 /usr/local/man/man1/ ; \
install -m 644 doc/man/gpac.1 /usr/local/man/man1/ ; \
install -d "/usr/local/share/gpac" ; \
install -m 644 doc/gpac.mp4 /usr/local/share/gpac/ ; \
fi
これでMP4Boxのインストールは完了です
[root@blog.m264.com ~]$ which MP4Box
/usr/local/bin/MP4Box
ついでにmp4boxじゃなくてMP4Boxです←これで小一時間悩んだw

CentOS5.5にffmpeg-phpをインストールする

CentOS 5.5 に ffmpeg-phpをインストールする方法
下記のパッケージをインストール済みと想定しています
  • wget
  • tar
  • make
  • gcc
  • bzip2
  • php
  • php-devel
  • ffmpeg
  • ffmpeg-devel
ffmpeg-phpをダウンロードします
[root@blog.m264.com ~]$ wget http://short.m264.info/ffmpeg-php
解凍しビルドします
[root@blog.m264.com ~]$ tar -xf ./ffmpeg-php-0.6.0.tbz2
[root@blog.m264.com ~]$ cd ./ffmpeg-php-0.6.0
[root@blog.m264.com ~]$ phpize
Configuring for:
PHP Api Version: 20041225
Zend Module Api No: 20050922
Zend Extension Api No: 220051025
[root@blog.m264.com ~]$ ./configure
checking for egrep... grep -E
checking for a sed that does not truncate output... /bin/sed
checking for gcc... gcc
checking for C compiler default output file name... a.out
checking whether the C compiler works... yes
-----

以下略

[root@blog.m264.com ~]$ make
いろいろ出力される

----------------------------------------------------------------------
Libraries have been installed in:
/root/work/wget/ffmpeg-php-0.6.0/modules

If you ever happen to want to link against installed libraries
in a given directory, LIBDIR, you must either use libtool, and
specify the full pathname of the library, or use the `-LLIBDIR'
flag during linking and do at least one of the following:
- add LIBDIR to the `LD_LIBRARY_PATH' environment variable
during execution
- add LIBDIR to the `LD_RUN_PATH' environment variable
during linking
- use the `-Wl,--rpath -Wl,LIBDIR' linker flag
- have your system administrator add LIBDIR to `/etc/ld.so.conf'

See any operating system documentation about shared libraries for
more information, such as the ld(1) and ld.so(8) manual pages.
----------------------------------------------------------------------

Build complete.
(It is safe to ignore warnings about tempnam and tmpnam).
正常にメイクできたのでインストールする
[root@blog.m264.com ~]$ make install
Installing shared extensions: /usr/lib/php/modules/
これでインストール完了です最後にhttpdをリロードします
service httpd reload
httpd を再読み込み中: [ OK ]

2010年9月28日火曜日

PHP Fatal error: Allowed memory size of ******** bytes exhausted (tried to allocate ****** bytes)
と表示された場合は単純にメモリーが足りないだけなので
/etc/php.iniの
memory_limitの量を大きくしhttpdをリロードする
service httpd reload
Reloading httpd: [ OK ]
これで実行されるはず

もしphp.iniを弄る権限が無いなら
phpファイルに
ini_set('memory_limit','10M');
と追加すればいい