Total Pageviews

Saturday 17 December 2011

centos vps下,编译安装ffmpeg流媒体环境

1. 创建一个目录ffmpeg

mkdir ffmpeg
cd ffmpeg

2. 下载以下源文件

wget http://www3.mplayerhq.hu/MPlayer/releases/codecs/ essential-20061022.tar.bz2
wget http://rubyforge.org/frs/download.php/9225/ flvtool2_1.0.5_rc6.tgz
wget http://easynews.dl.sourceforge.net/sourceforge/ lame/lame-3.97.tar.gz
wget http://superb-west.dl.sourceforge.net/sourceforge/ ffmpeg-php/ffmpeg-php-0.5.0.tbz2
wget http://downloads.xiph.org/releases/ ogg/libogg-1.1.3.tar.gz
wget http://downloads.xiph.org/releases/ vorbis/libvorbis-1.1.2.tar.gz

3. 解压下载的源文件

bunzip2 essential-20061022.tar.bz2; tar xvf essential-20061022.tar
tar zxvf flvtool2_1.0.5_rc6.tgz
tar zxvf lame-3.97.tar.gz
bunzip2 ffmpeg-php-0.5.0.tbz2; tar xvf ffmpeg-php-0.5.0.tar
tar zxvf libogg-1.1.3.tar.gz
tar zxvf libvorbis-1.1.2.tar.gz

4. 创建解码器目录并移动源文件至该目录

mkdir /usr/local/lib/codecs/
mv essential-20061022/* /usr/local/lib/codecs/
chmod -R 755 /usr/local/lib/codecs/

5. 安装svn,ruby等,便于同步取得最新程序 (如果有安装,可不用重复安装)

yum install subversion
yum install ruby
yum install ncurses-devel

6. svn下载最新版本的FFMPEG/MPlayer源程序

svn checkout svn://svn.mplayerhq.hu/ffmpeg/trunk ffmpeg
svn checkout svn://svn.mplayerhq.hu/mplayer/trunk mplayer

#以下编译

7. Compile LAME

cd ~/ffmpeg/lame-3.97
./configure
make
make install

8. Compile libOGG

cd ~/ffmpeg/libogg-1.1.3
./configure
make
make install

9. Compile libVorbis

cd ~/ffmpeg/libvorbis-1.1.2
./configure
make
make install

10. Compile flvtool2

cd ~/ffmpeg/flvtool2_1.0.5_rc6
ruby setup.rb config
ruby setup.rb setup
ruby setup.rb install

11. Compile MPlayer

cd ~/ffmpeg/mplayer
./configure
make
make install

12. Compile FFMPEG

cd ~/ffmpeg/ffmpeg
./configure --enable-libmp3lame --enable-libogg --enable-libvorbis --disable-mmx --enable-shared
echo '#define HAVE_LRINTF 1' >> config.h

#(编译安装ffmpeg , 我使用的以下这些参数,根据自己的环境,修改增减参数,实际上我的这些参数中有部分也是需要下载源码编译的。如libx264 ,faac等我在做这件事最先就执行操作了yum -install ffmpeg ,而做完后ffmpeg不工作,总是提示我软链出了问题,google 了一下,有网友遇到了我同样的问题,这个问题出现在centos5.3或rhel5的版本中,解决办法就是推翻重做)

#./configure --enable-gpl --enable-postproc --enable-nonfree --enable-postproc --enable-libfaad --enable-avfilter --enable-pthreads --enable-libxvid --enable-libx264 --enable-libmp3lame --enable-libfaac --disable-ffserver --disable-ffplay
make
make install

#到此ffmpeg编译完成,以下13-17项可以做,也可不做,与php结合看各自需要,我没有做,偷懒~,做完后,更新动态链接库:

#echo "/usr/local/lib" >> /etc/ld.so.conf
#echo "/usr/lib" >> /etc/ld.so.conf
#ldconfig

13. Finalize the codec setups (软链可以做)

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

14. Compile FFMPEG-PHP

cd ~/ffmpeg/ ffmpeg-php-0.5.0
phpize
./configure
make
make install

15. Install FFMPEG-PHP (make sure the php.ini path is correct.)

echo 'extension=/usr/local/lib/php/extensions/ no-debug-non-zts-20020429/ffmpeg.so' >> /usr/local/Zend/etc/php.ini

16. Restart Apache to load FFMPEG-PHP (Depends on OS, this is for RHEL/CentOS)

service httpd restart

17. Verify if it works

php -r 'phpinfo();' | grep ffmpeg

If you get a few lines such as:
ffmpeg
ffmpeg support (ffmpeg-php) => enabled
ffmpeg-php version => 0.5.0
ffmpeg.allow_persistent => 0 => 0

Then everything is installed and working. FFMPEG, FFMPEG-PHP, MPlayer, MEncoder, flv2tool, LAME MP3 encoder & libOGG.
-----------------------------------------------------------------------------------
centos vps下使用yum快速安装ffmpeg组件和ffmpeg-php

一、开始安装如果服务器没有安装svn则需
yum install svn
yum -y install yasm

如果服务器svn版本比较老。可以先删除在从yum安装。
# rpm -qa | grep -i subversion

subversion-1.4.2-2.el5

subversion-1.4.2-2.el5

rpm -evf --allmatches subversion-1.4.2-2.el5

二、ffmpeg以及ffmpeg-php的安装
1、编译安装ffmpeg非常麻烦,yum可以方便的安装ffmpeg以及ffmpeg-dev,
vi /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=1

enabled=1

导入Dag的RPM_GPG_KEY,否则提示没有key无法安装
wget http://dag.wieers.com/packages/RPM-GPG-KEY.dag.txt

rpm --import RPM-GPG-KEY.dag.txt

安装ffmpeg&ffmpeg-php
yum install ffmpeg ffmpeg-devel mencoder mplayer flvtool2 lame ffmpeg-php

2、ffmpeg-php的安装
svn co https://ffmpeg-php.svn.sourceforge.net/svnroot/ffmpeg-php ffmpeg-php

或者
wget wget http://u.xsdou.com/ffmpeg-php-0.6.0.tbz2
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-config
make &&make install
vi /usr/local/php/etc/php.ini

加入: extension=ffmpeg.so
/usr/local/php/sbin/php-fpm restart

[完成]

二 错误解决

1.make ffmpeg时,出现make: *** [ffmpeg_frame.lo] Error 1

解决方法:
mv ffmpeg_frame.loT ffmpeg_frame.lo

2. 运行ffmpeg出现的异常:ffmpeg: error while loading shared libraries: libavdevice.so.52 : cannot open shared object file: No such file or directory

解决方法:

vi /etc/ld.so.conf
加入一行:/usr/local/lib
然后执行 ldconfig

3. 运行ffmpeg出现的类似异常:ffmpeg: error while loading shared libraries: /usr/local/lib/libx264.so.107: cannot restore segment prot after reloc: Permission denied

解决方法:
chcon -t texrel_shlib_t /usr/local/lib/libx264.so.107

4.make ffmpeg-php时,出现error ‘PIX_FMT_RGBA32′ undeclared…

解决方法:

vi ffmpeg_frame.c, 替换PIX_FMT_RGBA32为/PIX_FMT_RGB32
:%s/PIX_FMT_RGBA32/PIX_FMT_RGB32

三 参考资料

1.CentOS 5.5安装FFmpeg、Mencoder、FFmpeg-PHP、Flvtool2

http://www.grapenvine.cn/?post=17

2.ffmpeg-php在CentOS上的快速安装

http://www.coolni.cn/me/?post=56

3.CENTOS Apache 2 + PHP 5.3 + Mysql5 installation (additional: for gallery3 prepare)

http://blog.csdn.net/totogogo/article/details/6224095

4.ffmpeg编译

http://lishuangxing06.blog.163.com/blog/static/93197189201011138131792/

5.ffmpeg命令详解

http://www.coolni.cn/me/?post=57

6.ffmpeg-php api

http://ffmpeg-php.sourceforge.net/doc/api/ffmpeg_movie.php

7.ffmpeg-php 安装及出错解决办法

http://blog.sina.com.cn/s/blog_55768a1c0100jfct.html

php.ini配置文件里面增加 extensions=/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/ffmpeg-php.so

重启apache /etc/init.d/httpd retart 。 使用 php -r “phpinfo();” 查看ffmpeg-php模块是否安装成功;

安装完毕。

- ---------------------

国外大厂和cdn方式:enhanced-rtmp

  • mux/推流:需要设置: -f flv -flvflags ext_header
ffmpeg -re -i source.flv -c:v libx265 -c:a copy -f flv -flvflags ext_header rtmp://192.168.0.1/live/1000
  • demux/拉流: 不需要格外操作,自动识别

编译

只需要把flv.h/flvdec.c/flvenc.c拷贝入libavformat文件夹中,后面ffmpeg正常编译即可。

from https://github.com/runner365/ffmpeg_rtmp_h265

No comments:

Post a Comment