下载最新版本的ffmpeg:
svn checkout svn://svn.mplayerhq.hu/ffmpeg/trunk ffmpeg
2,cd ffmpeg
./configure
make && make install
以上是安装不带任何解码库的ffmpeg。
使用ffmpeg命令进行测试安装是否成功。例如: ffmpeg --help
II,要加入则在./configure后面加上选项,前提是已经编译安装了这种编码库。例如: ./configure --enable-libmp3lame --enable-libvorbis --disable-mmx --enable-shared 测试的结果为: [root@ip-208-109-221-163 ffmpeg]# ffmpeg --help
ffmpeg: error while loading shared libraries: libavdevice.so.52: cannot open shared object file: No such file or directory 找不到libavdevice.so.52库。 解决方案:(成功解决问题的方案)
首先到/usr/local/lib/目录下去查看是否有libavdevice.so.52,然后设置环境变量:
export LD_LIBRARY_PATH=/usr/local/lib/
注意:这种方案经验证,关闭终端再打开终端,这个环境变量就失效了,也就是说只对当前终端有效
最终解决方案:
//**********************************************
因为找不到库文件。编辑/etc/ld.so.conf,加入一行: /usr/local/lib
执行ldconfig命令即可。
//************************************** 然后添加软链接。
ln -s /usr/local/lib/libavdevice.so.52 /usr/lib/libavdevice.so.52
安装成功后,测试:
ffmpeg -i /home/admn/public_html/ConvertVedioTest/rjmj.mpeg -ab 56 -ar 22050 -b 500 -r 15 -qscale 4 -s 0*480 rjmj.flv 转换成功。
等等。
ln -s /usr/local/lib/libavformat.so.50 /usr/lib/libavformat.so.50 ln -s /usr/local/lib/libavcodec.so.51 /usr/lib/libavcodec.so.51 ln -s /usr/local/lib/libavutil.so.49 /usr/lib/libavutil.so.49 ln -s /usr/local/lib/libmp3lame.so.0 /usr/lib/libmp3lame.so.0 ln -s /usr/local/lib/libavformat.so.51 /usr/lib/libavformat.so.51
最基本的需要这些东西:
FFMPEG
LAME Mp3 Audio Codec (Requred for mpg, flv, avi, wmv etc files) AMR Audio Codec (Required for 3gp video files) XVID Audio Codec FFMPEG-PHP
★ 安装FFMPEG-PHP: ★
FFMPEG-PHP# ./configure出现如下错误:??
checking for ffmpeg headers... configure: error: ffmpeg headers not found. Make sure you've built ffmpeg as shared libs using the --enable-shared option 解决方案:
换成ffmpeg-php-0.6.0.tbz2版本进行安装,安装过程没有问题。
ffmpeg-php is an extension for PHP that adds an easy to use, object-oriented API for accessing and retrieving information from video and audio files. It has methods for returning frames from movie files as images that can be manipulated using PHP's image functions. This works well for automatically creating thumbnail images from movies. ffmpeg-php is also useful for reporting the duration and bitrate of audio files (mp3, wma...). ffmpeg-php can access many of the video format supported by ffmpeg (mov, avi, mpg, wmv...)
USAGE
If you've the installed ffmpeg-php extension as a shared library but haven't set it to auto-load in your php.ini file, you'll need to use the PHP dl() function to make ffmpeg-php available to your scripts. Add the following PHP code to the beginning of scripts you want to call ffmpeg-php methods in.
$extension = \"ffmpeg\";
$extension_soname = $extension . \".\" . PHP_SHLIB_SUFFIX;
$extension_fullname = PHP_EXTENSION_DIR . \"/\" . $extension_soname;
// load extension
if(!extension_loaded($extension)) {
dl($extension_soname) or die(\"Can't load extension $extension_fullname\\n\"); } ?>
ffmpeg最后配置为:
./configure --disable-mmx --enable-gpl --enable-shared --enable-libmp3lame --enable-libvorbis --enable-libxvid
--enable-libx2 --enable-pthreads --disable-ffserver --disable-ffplay 安装ffmpeg最后结果为:
安装ffmpeg-php结果为:
Now, you need to add the ffmpeg extension in your php.ini file. Locate the php.ini file and use the below commend to insert it:???? echo
‘extension=/usr/local/lib/php/extensions/no-debug-non-zts-20020429/ffmpeg.so’ >> /path/to/php.ini
具体情况应该是:
echo ‘extension= /usr/lib/php/modules/ffmpeg.so’ >> /etc/php.ini
这个是错误的,因为php.ini中已经有extension_dir=/usr/lib/php/modules/ 故不需要前缀。 应该改为:
echo ‘extension= ffmpeg.so’ >> /etc/php.ini(测试成功)
Make sure to restart apache once you insert the extension: 执行这个命令,重启apache服务: # service httpd restart
★ 用文件测试:
将ffmpeg-php目录中的test_media和test_ffmpeg.php上传到服务器的目录上,打开浏览器执行test_ffmpeg.php进行测试:
★ ★★★在php中调用ffmpeg不能转换的原因:★★★★
在linux下面一般是不能执行二进制文件(.exe)的,故不能写成ffmpeg.exe形式。而且为了防止环境变量$PATH没有包含ffmpeg文件的路径而发生错误,故最好是将文件的路径写成全路径。如果$PATH包含了它的路径,就可以直接用ffmpeg.
例如:
$cmd=\"/usr/local/bin/ffmpeg.exe -i test.mp3 -ab 56 -ar 22050 -b 500 -r 15 -s 0*480 test.flv\"; exec($cmd);
修改为:
$cmd=\"/usr/local/bin/ffmpeg -i test.mp3 -ab 56 -ar 22050 -b 500 -r 15 -s 0*480 test.flv\"; exec($cmd);
在php中成功转换文件。
可以使用相对路径调用ffmpeg进行文件格式转换
$cmd=\"ffmpeg -i ./UploadFile/video/rjmj.mpeg -ab 56 -ar 22050 -b 500 -r 15 -s 0*480 ./UploadFile/video/rjmj.flv\"; exec($cmd);
$cmd=\"ffmpeg -i ./UploadFile/video/rjmj.mpeg -y -f image2 -ss 1 -t 0.001 -s 80*80 ./UploadFile/video/rjmj.jpg\"; exec($cmd);
删除原文件可以使用相对目录。 unlink(\"./UploadFile/video/rjmj.jpg\"); 转换成功。
视频转换的质量问题:
关键字: ffmpeg 参数 转换 flv
我们在将多种格式的视频转换成flv格式的时候,我们关注的就是转换后的flv视频的品质和大小。下面就自己的实践所得来和大家分享一下,主要针对avi、3gp、mp4和wmv四种格式来进行分析。通常在使用ffmpeg进行视频转换的时候我们使用到的控制音视频的主要参数有如下: -ab bitrate 设置音频码率
-acodec codec 使用codec编解码 -ac channels 设置通道,缺省为1
-ar freq 设置音频采样率 -r fps 设置帧频,缺省25
-b bitrate 设置比特率,缺省200kb/s -qscale 6或4 使用动态码率来设置
对于其他诸如-i、-y、-s等参数基本上都是可以很好理解的了。我们上面提到的几个参数前四个主要是用来设置音频的,后三个主要是用来设置视频的。对于音频的ar(采样率)可以指定为22050、24000、44100或48000,一般来将后两种比较常见;对于音频的ab(码率)一般是选择32、、96或128这几种;对音频的acodec则是指定编码方式,可以指定为libmp3lame或aac等,这两种分别是指使用mp3和aac格式的音频。在实际的测试过程中我发现在使用mp3进行音频编码时指定ab为或更高和指定ar为22050或更高对实际的视频音质没有什么大的影响,请参见后面的测试结果。
对于视频的r用来指定帧频,一般设置为29.97;对于视频的b(视频的比特率)可以指定如128、314等数字,对于1500以上则没有效果;对于视频的qscale,属于动态码率,可以设置为4或6,4的质量比6的要高。在测试的过程中我发现设置-b参数对视频的质量并没有过大的改变(指定大指定小都差不多或是一样),而设置qscale则完全不一样,如果我们想获取高品质的话应该使用动态码率而不是指定-b参数,当然了,使用动态码率的坏处就是视频的体积变大了。在使用动态码率的时候使用6的效果和4差不多,但是体积减少了,因此通常建议使用6来设置动态码率。
上面介绍了转换过程中的音视频的配置参数,综合上面,我们在转换的时候通常的命令如下:
高品质:ffmpeg -i infile -ab 128 -acodec libmp3lame -ac 1 -ar 22050 -r 29.97 -qscale 6 -y outfile
低品质:ffmpeg -i infile -ab 128 -acodec libmp3lame -ac 1 -ar 22050 -r 29.97 -b 512 -y outfile
使用这两个命令测试四种格式的视频结果如下,同时在测试的过程中会改变相应的参数进行测试,四个视频的信息如下: AVI格式的:test.avi 14.1M 3GP格式的:test.3gp 4.30M MP4格式的:test.mp4 16.4M WMV格式的:test.wmv 15.0M
1.使用高品质的脚本测试结果如下:
AVI格式转换后的:-qscale 6结果=avi_01.flv 6.61M -qscale 4结果=avi_02.flv 9.30M
3GP格式转换后的:-qscale 6结果=3gp_01.flv 4.21M -qscale 4结果=3gp_02.flv 5.30M
MP4格式转换后的:-qscale 6结果=mp4_01.flv 13.1M -qscale 4结果=mp4_02.flv 17.5M
WMV格式转换后的:-qscale 6结果=wmv_01.flv 15.9M -qscale 4结果=wmv_02.flv 22.3M
2.使用低品质的脚本测试结果如下:
AVI格式转换后的:-b 512结果=avi_03.flv 2.87M -b 1000结果=avi_04.flv 2.87M
3GP格式转换后的:-b 512结果=3gp_03.flv 1.73M -b 1000结果=3gp_04.flv 1.73M
MP4格式转换后的:-b 512结果=mp4_03.flv 5.84M -b 1000结果=mp4_04.flv 5.84M
WMV格式转换后的:-b 512结果=wmv_03.flv 6.17M -b 1000结果=wmv_04.flv 6.17M
3.压缩率比较如下:
AVI格式转换后的:-qscale 6结果=53.12% -qscale 4结果=34.04% -b 512/1000结果=79.65%
3GP格式转换后的:-qscale 6结果=2.093% -qscale 4结果=123.1% -b 512/1000结果=59.77%
MP4格式转换后的:-qscale 6结果=20.12% -qscale 4结果=106.7% -b 512/1000结果=.39%
WMV格式转换后的:-qscale 6结果=106.0% -qscale 4结果=148.7% -b 512/1000结果=58.87%
通过比较前后的压缩大小我们可以看到在音频保持一致的情况下,使用高品质的转换和使用低品质的转换的巨大差异,同时对于不同格式的视频在转换的过程中也会出现比较大的差异。当然了,这些数据并不一定代表所有这些格式的视频都是如此,具体的要看大家的应用了。不过,我们可以确定的是AVI格式的视频在转换成FLV格式后其压缩率最大,不过对于不同编码的AVI其结果就不一定了。同时我们也还看到,对于某些格式的视频在转换后其体积比原先的还大了,这个我们在应用的时候就需要注意了。
这里没有测试RM和RMVB格式的,因为ffmpeg无法直接转换这两种格式的视频,下次我将使用mencoder来测试转换RM和RMVB格式的视频为FLV的分析。以下是转换前后截取的图片,可以参考看一下.
1. AVI格式截取前、使用-qscale 6和-b 512三个的截图分别如下:
2.3GP格式截取前、使用-qscale 6和-b 512三个的截图分别如下:
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- igat.cn 版权所有 赣ICP备2024042791号-1
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务