FFmpeg的官方网址是,它包含了非常先进的音频/视

作者:美狮美高梅官方网站

截取视频指定帧为图片,php ffmpeg扩展已经完美实现:

1.什么是FFmpeg?现在我们来看看百度百科的介绍。
FFmpeg是一个开源免费跨平台的视频和音频流方案,属于自由软件,采用LGPL或GPL许可证(依据你选择的组件)。它提供了录制、转换以及流化音视频的完整解决方案。它包含了非常先进的音频/视频编解码库libavcodec,为了保证高可移植性和编解码质量,libavcodec里很多codec都是从头开发的。

问题描述;获得flv视频的缩略图和视频时间长度

$movie = new ffmpeg_movie;$ff_frame = $movie->getFrame;$gd_image = $ff_frame->toGDImage();$img="./test.jpg";imagejpeg;imagedestroy;

2.编译所需源码包

谷歌了半天发现可以使用Ffmpeg获得视频的一些信息,先介绍一下FFMEPG

然而问题来了,智能手机拍摄的视频,由于拍摄方向不同,视频会被旋转,并带上meta信息rotate,当你相对视频截取frame图片的时候,如果有rotate信息的视频,frame也是旋转的,因此你需要将截取的图片相应的旋转。

yasm:

这里简单说一下:FFmpeg是用于录制、转换和流化音频和视频的完整解决方案,一套领先的音/视频编解码类库。官方正式版ffmpeg不支持rmvb和rm格式. 不过有很多解决方法

然后php ffmpeg扩展并无法获知rotation信息,但可以通过ffmpeg命令行获取:

lame:

FFmpeg的官方网址是 。

/usr/local/ffmpeg/bin/ffprobe test.mp4 -show_streams | grep rotate用php简单封装下如下:

OpenCore AMR:

中文Wiki是 ,资料很多。

function get_video_orientation { $cmd = "/usr/local/ffmpeg/bin/ffprobe " . $video_path . " -show_streams 2>/dev/null"; $result = shell_exec; $orientation = 0; if(strpos($result, 'TAG:rotate') !== FALSE) { $result = explode; foreach { if(strpos !== FALSE) { $stream_info = explode; $orientation = $stream_info[1]; } } } return $orientation;}

AmrNB:

㈠安装FFMEPG

使用imagerotate()函数就可以旋转截图:

AmrWB:

操作系统:centos6

$movie = new ffmpeg_movie;$frame = $movie->getFrame;$gd = $frame->toGDImage();if ($orientation = $this->get_video_orientation { $gd = imagerotate($gd, 360-$orientation, 0);}$img="./test.jpg";imagejpeg;imagedestroy;

FFMpeg:

找了那么多安装FFMEPG的文章,基本上都是没有注释,需要安装那么多软件包,也不说明一下是干什么用的,纠结。。而且安装上面步骤总是出问题,最后只得寻找官网,认真的看一下,确实官方的资料很好用,以后一定要优先看官网资料。

最后还有一个麻烦事,不是所有的播放器和浏览器都可对video识别orientation并自动rotate,如果你想对视频进行旋转,可通过ffmpeg命令解决:

分别解压缩并编译上述源码包

由于FFMEPG本身就支持flv格式,也就是说目前不需要安装什么插件只需要安装FFMEPG,安装FFMEPG有两种方式:①源码包安装,这个不知道怎么回事老是报错②yum命令安装,centos这个yum是最好的命令,呵呵

/usr/local/ffmpeg/bin/ffmpeg -i input.mp4 -vf 'transpose=3' -metadata:s:v:0 rotate=0

#tar xzvf *.tar.gz

下面是安装步骤:

以上就是本文的全部内容,希望对大家学习php程序设计有所帮助。

#tar xjvf *.tar.bz2

㈠安装编译环境

解压后直接使用

#yum install -y automake autoconf libtool gcc gcc-c++

#./configure

㈡安装所需程序库的RPM包到 centos

#make

rpm -Uhv

#make install

安装 Install ffmpeg 等模块 yum -y install ffmpeg ffmpeg-devel

命令进行编译安装。

***********************************美狮美高梅官方网站,centos下面的安装已经完成!

编译FFMpef的时候稍微特殊一点:

安装php支持插件:FFMPEG-PHP

#./configure --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-version3 --enable-shared

安装 FFMPEG-PHP cd /usr/local/src wget tar jxvf ffmpeg-php-0.6.0.tbz2 cd ffmpeg-php-0.6.0 /usr/local/php/bin/phpize ./configure --with-php-config=/usr/local/php/bin/php-confi make make install

#make

然后修改php.ini文件 vi php.ini

#make install

在php.ini文件加上这句 extension=ffmpeg.so

#ldconfig

然后重新启动apache /etc/init.d/httpd restart

最后写入config后,终端运行ffmpeg命令,出现success和已安装的扩展,则运行成功。

*******备注wget链接那个可能失效,估计是被墙了,可以在网上自己找

3.使用方法


MP3转换AMR: ffmpeg -i 1.mp3 -ac 1 -ar 8000 1.amr

但是我打开phpinfo并没有看到FFMPEG,不知道怎么回事,官网上面提供的安装方法是需要重新编译php来支持ffmpeg,我嫌麻烦,考虑到服务都是在centos上运行,既然centos已经可以,

AMR转换MP3: ffmpeg -i 1.amr 1.mp3

那我使用php的exec函数调用liunx的shell命令不就可以了,也就是说不需要安装FFMPEG-PHP

可能遇到的问题

关于php的exec函数的可以参考:php中使用exec,system等函数调用系统命令

1.ffmpeg默认安装目录为“/usr/local/lib”,有些64位系统下软件目录则为“/usr/lib64”,编译过程中可能会出现

下面是获得缩略图的常用命令:

“ffmpeg: error while loading shared libraries: libmp3lame.so.0: cannot open shared object file: No such file or directory”等类似的错误,

示例1: 截取一张352x240尺寸大小的,格式为jpg的图片: ffmpeg -i test.asf -y -f image2 -t 0.001 -s 352x240 a.jpg

解决办法是建立软链接:

示例2: 把视频的前30帧转换成一个Animated Gif : ffmpeg -i test.asf -vframes 30 -y -f gif a.gif

#ln -s /usr/local/lib/libmp3lame.so.0.0.0 /usr/lib64/libmp3lame.so.0

示例3:这个是我需要的! 在视频的第8.01秒处截取 320*240 的缩略图

2.此时如果出现以下提示:

ffmpeg -i test.flv -y -f mjpeg -ss 3 -t 0.001 -s 320x240 test.jpg

ffmpeg: error while loading shared libraries: libavdevice.so.54: cannot open shared object file: No such file or directory

示例4:

可以通过如下方式查看ffmpeg的动态链接库哪些没有找到:

把视频转换成flv文件(这个用得最多,现在Flv基本上已经成了网络视频的标准了)

# ldd `which ffmpeg`

ffmpeg -i source -s 320×240 -b 700k -aspect 4:3 -y -f flv dest.flv 。

        libavdevice.so.54 => not found

其中:

        libavfilter.so.3 => not found

source:是原始文件的名字,可以是mov,mpeg,avi,wmv各类格式,ffmpeg基本都支持。 -s wxh: 指定视频的宽和高 -b : 设定视频的比特率 -aspect: 保持视频的比率。如4:3或者16:9 -y : 如果目标文件存在时,直接覆盖原有的目标文件。 -f : 指定转换的文件格式,这里是flv格式。(其实如果不指定文件格式,ffmpeg也会按文件的后缀名来进行转换)。 dest: 转换的目标文件名字,并不一定需要是flv,可以是mov,mpeg以及其他的常用格式。

        libavformat.so.54 => not found

参数说明:

        libavcodec.so.54 => not found

-L license

        libswresample.so.0 => not found

-h 帮助

        libswscale.so.2 => not found

-fromats 显示可用的格式,编解码的,协议的

本文由美狮美高梅官方网站发布,转载请注明来源

关键词: