Skip to main content Link Menu Expand (external link) Document Search Copy Copied

Centos安装FFmpeg

  • 1、首先安装系统编译环境

      $ yum install -y automake autoconf libtool gcc gcc-c++ #CentOS
    
  • 2、编译所需源码包

#yasm:汇编器,新版本的ffmpeg增加了汇编代码
wget http://www.tortall.net/projects/yasm/releases/yasm-1.3.0.tar.gz
tar -xzvf yasm-1.3.0.tar.gz
cd yasm-1.3.0
./configure
make
make install

#lame:Mp3音频解码
wget http://jaist.dl.sourceforge.net/project/lame/lame/3.99/lame-3.99.5.tar.gz
tar -xzvf lame-3.99.5.tar.gz
cd lame-3.99.5
./configure
make
make install

#amr支持
wget http://downloads.sourceforge.net/project/opencore-amr/opencore-amr/opencore-amr-0.1.3.tar.gz
tar -xzvf opencore-amr-0.1.3.tar.gz
cd opencore-amr-0.1.3
./configure
make
make install

#amrnb支持
wget http://www.penguin.cz/~utx/ftp/amr/amrnb-11.0.0.0.tar.bz2
tar -xjvf amrnb-11.0.0.0.tar.bz2
cd amrnb-11.0.0.0
./configure
make
make install

#amrwb支持
wget http://www.penguin.cz/~utx/ftp/amr/amrwb-11.0.0.0.tar.bz2
tar -xjvf amrwb-11.0.0.0.tar.bz2
cd amrwb-11.0.0.0
./configure
make
make install

#ffmpeg
wget https://ffmpeg.org/releases/ffmpeg-3.0.4.tar.bz2
tar -xjvf ffmpeg-3.0.4.tar.bz2
cd ffmpeg-3.0.4
./configure --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-version3 --enable-shared
make
make install

#加载配置
#最后写入config后,终端运行ffmpeg命令,出现success和已安装的扩展,则运行成功。
ldconfig
  • 3、php调用ffmpeg权限问题
    • apache/Nginx下的PHP/Ruby可以直接Windows和Linux下的系统命令,在Linux下,一般只能执行普通用户对应的权限,如果要执行一下需要Sudo的命令,则需要进行一些配置。

    • 修改方式是将Webserver运行的用户名,加上sudo权限,这样php或者Ruby(以下就只写php了)就可以调用sudo及对应的命令了。

    • 一般来说,为了安全,需要指定这些用户可以执行哪些命令,方法是修改sudoers这个文件的配置。

    • 首先编辑 /etc/sudoers 使用 vim来编辑 /etc/sudoers的权限是440:
        -r–r—– 1 root root 3248 Oct 18 23:47 /etc/sudoers
      

      需要

        $ chmod u+w /etc/sudoers
      
    • 修改完后再恢复原来的权限
        $ chmod -w /etc/sudoers
      
    • 因为如果/etc/sudoers的权限不是440,那么sudo会报错:
        [root@hn ~]# sudo
        sudo: /etc/sudoers is mode 0640, should be 0440
        sudo: no valid sudoers sources found, quitting
      
    • 在最下面添加一行
        nobody ALL=NOPASSWD:/usr/local/squid/sbin/squid -k reconfigure
      

      然后注释掉文件中的Defaults requiretty这行,否则会出现sudo: sorry, you must have a tty to run sudo的错误

      保存退出即可

    • 这里的nobody为WebServer运行的用户名,

      如httpd默认为apache,Nginx默认为nobody;

      ALL=NOPASSWD为执行sudo时不需要输入密码,即在非交互界面中直接执行命令;

        /usr/local/squid/sbin/squid -k reconfigure 
      

      则是将可以执行的完整命令。

参考网址:


萌ICP备20240168号