linux 安装ffmpeg-php扩展,php通过安装ffmpeg-php扩展 来获取对视频信息操作

安装顺序:

1.ffmpeg

2.ffmpeg-devel

3.ffmpeg-php

安装ffmpeg ffmpeg-devel

操作系统:CentOS 6.2 minimal

由于默认的CentOS的软件仓库里没有FFmpeg、FFmpeg-PHP,所以安装第三方的软件仓库。

vim /etc/yum.repos.d/dag.repo

#输入:

[dag]

name=Dag RPM Repository for Red Hat Enterprise Linux

baseurl=http://apt.sw.be/redhat/el$releasever/en/$basearch/dag

gpgcheck=0

enabled=1

#gpgcheck 默认为0即可!设置gpgcheck=1会让yum检查每个下载的RPM的GnuPG签名。这么做是因为你需要适当的GnuPG key注册到您的RPM数据库。可以防止被欺骗.

#安装 Install ffmpeg 等模块

yum -y install ffmpeg ffmpeg-devel

#装好后通过命令查看是否成功

ffmpeg -formats

FFmpeg version 0.6.5, Copyright (c) 2000-2010 the FFmpeg developers

built on Jan 29 2012 17:52:15 with gcc 4.4.5 20110214 (Red Hat 4.4.5-6)

configuration: --prefix=/usr --libdir=/usr/lib64 --shlibdir=/usr/lib64 --mandir=/usr/share/man --incdir=/usr/include --disable-avisynth --extra-cflags='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -fPIC' --enable-avfilter --enable-avfilter-lavf --enable-libdc1394 --enable-libdirac --enable-libfaac --enable-libfaad --enable-libfaadbin --enable-libgsm --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-librtmp --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-libx264 --enable-gpl --enable-nonfree --enable-postproc --enable-pthreads --enable-shared --enable-swscale --enable-vdpau --enable-version3 --enable-x11grab

libavutil 50.15. 1 / 50.15. 1

libavcodec 52.72. 2 / 52.72. 2

libavformat 52.64. 2 / 52.64. 2

libavdevice 52. 2. 0 / 52. 2. 0

libavfilter 1.19. 0 / 1.19. 0

libswscale 0.11. 0 / 0.11. 0

libpostproc 51. 2. 0 / 51. 2. 0

安装ffmpeg-php

cd ffmpeg-php-0.6.1

/usr/local/php/bin/phpize #php路径一定要对

./configure --with-php-config=/usr/local/php/bin/php-config --with-ffmpeg=/usr

make && make install #make的时候报错见下面错误

报错:主要是“PIX_FMT_RGBA32”的错误

/usr/local/src/ffmpeg-php-0.6.1/ffmpeg_frame.c: In function ‘zim_ffmpeg_frame_toGDImage’:

/usr/local/src/ffmpeg-php-0.6.1/ffmpeg_frame.c:336: error: ‘PIX_FMT_RGBA32’ undeclared (first use in this function)

/usr/local/src/ffmpeg-php-0.6.1/ffmpeg_frame.c:336: error: (Each undeclared identifier is reported only once

/usr/local/src/ffmpeg-php-0.6.1/ffmpeg_frame.c:336: error: for each function it appears in.)

/usr/local/src/ffmpeg-php-0.6.1/ffmpeg_frame.c: In function ‘zim_ffmpeg_frame_ffmpeg_frame’:

/usr/local/src/ffmpeg-php-0.6.1/ffmpeg_frame.c:421: error: ‘PIX_FMT_RGBA32’ undeclared (first use in this function)

解决错误:

cd ffmpeg-php-0.6.1

vi ffmpeg_frame.c

:%s/PIX_FMT_RGBA32/PIX_FMT_RGB32 #替换错误字段

:wq

排除错误,继续安装

/usr/local/php/bin/phpize

./configure --with-php-config=/usr/local/php/bin/php-config --with-ffmpeg=/usr

make && make install

#成功返回

# make install

Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/

#cd /usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/;ls

ffmpeg.so #ffmpeg.so文件存在,说明编译成功

php.ini 中增加ffmpeg扩展

vim /usr/local/php/etc/php.ini

手工修改查找中的extension_dir = "./";

修改为

extension_dir = "/usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/";

并在此行后增加以下几行,然后保存:

#开启ffmpeg扩展

extension = "ffmpeg.so";

#实例:

; Directory in which the loadable extensions (modules) reside.

; http://php.net/extension-dir

; extension_dir = "./"

; On windows:

; extension_dir = "ext"

extension_dir = "/usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/"

extension = "ffmpeg.so"

查看是否正常

# /usr/local/php/bin/php -v

PHP 5.3.15 (cli) (built: Aug 10 2012 23:14:01)

Copyright (c) 1997-2012 The PHP Group

Zend Engine v2.3.0, Copyright (c) 1998-2012 Zend Technologies

php调用实例:

参考:/branches/ffmpeg-php/ffmpeg-php-0.6.1/test_ffmpeg.php

$moviepath = './test.flv';

$mov = new ffmpeg_movie($movie);

printf("file name = %s\n", $mov->getFileName());

printf("duration = %s seconds\n", $mov->getDuration());

printf("frame count = %s\n", $mov->getFrameCount());

printf("frame rate = %0.3f fps\n", $mov->getFrameRate());

printf("comment = %s\n", $mov->getComment());

printf("title = %s\n", $mov->getTitle());

printf("author = %s\n", $mov->getAuthor());

printf("copyright = %s\n", $mov->getCopyright());

printf("get bit rate = %d\n", $mov->getBitRate());

printf("has audio = %s\n", $mov->hasAudio() == 0 ? 'No' : 'Yes');

if ($mov->hasAudio()) {

printf("get audio stream id= %s\n", $mov->getAudioStreamId());

printf("get audio codec = %s\n", $mov->getAudioCodec());

printf("get audio bit rate = %d\n", $mov->getAudioBitRate());

printf("get audio sample rate = %d \n", $mov->getAudioSampleRate());

printf("get audio channels = %s\n", $mov->getAudioChannels());

}

printf("has video = %s\n", $mov->hasVideo() == 0 ? 'No' : 'Yes');

if ($mov->hasVideo()) {

printf("frame height = %d pixels\n", $mov->getFrameHeight());

printf("frame width = %d pixels\n", $mov->getFrameWidth());

printf("get video stream id= %s\n", $mov->getVideoStreamId());

printf("get video codec = %s\n", $mov->getVideoCodec());

printf("get video bit rate = %d\n", $mov->getVideoBitRate());

printf("get pixel format = %s\n", $mov->getPixelFormat());

printf("get pixel aspect ratio = %s\n", $mov->getPixelAspectRatio());

$frame = $mov->getFrame(10);

printf("get frame = %s\n", is_object($frame) ? 'true' : 'false');

printf(" get frame number = %d\n", $mov->getFrameNumber());

printf(" get frame width = %d\n", $frame->getWidth());

printf(" get frame height = %d\n", $frame->getHeight());

}

思考:通过安装ffmpeg-php扩展的方式获取信息虽然比较方便,但是扩展需要人去维护,一旦不维护了,扩展就无法使用。就像现在的情况 只能使用0.6.1的扩展版本对应FFmpeg version 0.6.5版本。如果想不受版本制约,请看php执行系统应用程序ffmpeg来获取对视频信息操作

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值