零、环境
1、服务器采用腾讯云服务器[ dmidecode |more ]
CPU:单核,最大 2000 MHz
内存: 1 GB
2、系统
Linux VM-122-135-ubuntu 3.13.0-36-generic
#63-Ubuntu SMP Wed Sep 3 21:30:07 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux
root权限
3、软件版本
ffmpeg-2.7.2
nginx-1.8
yasm-1.2.0
essential-amd64-20071007
amrnb-11.0.0.0
amrwb-11.0.0.0
fdk-aac-0.1.4
libvorbis-1.3.5
libtheora-1.1.1
xvidcore-1.3.3
last_stable_x264
libvpx-1.4.0
nginx_mod_h264_streaming-2.2.7
nginx-rtmp-module
ngx_cache_purge
ckplayer6.7
4、目录结构
|---ffmpeg |---source 源文件目录 |---web 页面目录 |---install 安装目录
一、准备工作
1、跟新系统
apt-get update
2、卸载原有ffmpeg和h264
apt-get remove ffmpeg x264
3、修改系统路径
因为是自定义安装到自身指定的目录ffmpeg/install目录,为了系统中直接使用,需要配置系统环境(原理和windows的环境目录path一样)。如果想直接安装到系统默认目录,则不需要配置,而且在第二节中所有依赖项的configure时,去掉–prefix设置。
# 查看当前PATH echo $PATH # 输出如:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
为了方便,我们直接修改配置文件,而不是环境变量。对所有用户有效在etc/profile增加(单独so库可以使用etc/ld.so.conf文件配置)。如果只对当前用户有效在Home目录下的.bashrc或.bash_profile里增加。添加内容如下:
# 增加.so搜索路径 export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/xiaoxia/biye/ffmpeg/install/share # 增加.a搜索路径 export LIBRARY_PATH=$LIBRARY_PATH:/home/xiaoxia/biye/ffmpeg/install/lib # 增加bin搜索路径 export PATH=$PATH:/home/xiaoxia/biye/ffmpeg/install/bin # 增加GCC的include文件搜索路径 export C_INCLUDE_PATH=$C_INCLUDE_PATH:/home/xiaoxia/biye/ffmpeg/install/include # 增加G++的include文件搜索路径 export CPLUS_INCLUDE_PATH=$CPLUS_INCLUDE_PATH:/home/xiaoxia/biye/ffmpeg/install/include
然后通过以下命令更新:
# 更新路径: source .bashrc # 更新路径: ldconfig
或者对于单独的so类库可以直接加到系统配置:
# 添加系统类库 echo '/home/xiaoxia/biye/ffmpeg/install/lib' >> /etc/ld.so.conf ldconfig
二、依赖库安装
1、基础的libs
gcc、make、bzip2、unzip、patch等基础程序和库需要安装,已经具备所以忽略。需要的可以参考如下:
apt-get install gcc make bzip2 unzip patch
备注:gcc-编译器、make-负责项目组织、bzip2和unzip-负责(解)压缩、patch-负责打补丁相关。可能有些编解码库需要其他系统工具,可以按照需求来进行添加。
2、安装yasm
Yasm是一个完全重写的NASM汇编。目前,它支持x86和AMD64指令集。
在source目录下:
mkdir yasm && cd yasm wget http://www.tortall.net/projects/yasm/releases/yasm-1.2.0.tar.gz tar zxvf yasm-1.2.0.tar.gz cd yasm-1.2.0 ./configure --prefix=/home/xiaoxia/biye/ffmpeg/install make && make install # 检查是否安装成功 yasm --version
3、安装Mplayer编码库(仅限于64位系统)
为了方便,我们直接使用Mplayer的编码库
mkdir essential && cd essential wget -c http://www2.mplayerhq.hu/MPlayer/releases/codecs/essential-amd64-20071007.tar.bz2 tar xvjf essential-amd64-20071007.tar.bz2 mkdir /home/xiaoxia/biye/ffmpeg/install/lib/codecs cp -Rvp essential-amd64-20071007/* /home/xiaoxia/biye/ffmpeg/install/lib/codecs
essential-amd64-20071007.tar.bz2
4、安装amrnb
AMRxx是一个对 3GPP Adaptive Multi-Rate Floating-point (AMR) 语音编码的共享库封装。AMR NB的语音带宽范围:300-3400Hz,8KHz采样。
mkdir amrnb && cd amrnb wget http://www.penguin.cz/~utx/ftp/amr/amrnb-11.0.0.0.tar.bz2 # 访问不了可以直接通过下方链接下载 tar xvjf amrnb-11.0.0.0.tar.bz2 cd amrnb-11.0.0.0/ ./configure --prefix=/home/xiaoxia/biye/ffmpeg/install --with-pic --enable-shared make && make install
5、安装amrwb
AMR WB的语音带宽范围: 50-7000Hz,16KHz采样。和amrnb同样的方式安装。
mkdir amrwb && cd amrwb wget http://www.penguin.cz/~utx/ftp/amr/amrwb-11.0.0.0.tar.bz2 # 访问不了可以直接通过下方链接下载 tar xvjf amrwb-11.0.0.0.tar.bz2 cd amrwb-11.0.0.0/ ./configure --prefix=/home/xiaoxia/biye/ffmpeg/install --with-pic --enable-shared make && make install
6、安装fdk-aac
aac音频编码器。
mkdir fdk-aac && cd fdk-aac wget http://downloads.sourceforge.net/project/opencore-amr/fdk-aac/fdk-aac-0.1.4.tar.gz tar zxvf fdk-aac-0.1.4.tar.gz cd fdk-aac-0.1.4/ ./configure --prefix=/home/xiaoxia/biye/ffmpeg/install --with-pic --enable-shared make && make install
7、安装libogg-dev
ogg音频编码器。包含了负责处理Ogg Vorbis文件的通用例程。
mkdir libogg-dev && cd libogg-dev wget http://downloads.xiph.org/releases/ogg/libogg-1.3.2.tar.gz tar zxvf libogg-1.3.2.tar.gz cd libogg-1.3.2/ ./configure --prefix=/home/xiaoxia/biye/ffmpeg/install --with-pic --enable-shared make && make install
8、安装libvorbis
ogg Vorbis音频编码器。包含了一些使用Vorbis进行解码时所必需的基础函数。
mkdir libvorbis && cd libvorbis wget http://downloads.xiph.org/releases/vorbis/libvorbis-1.3.5.tar.gz tar zxvf libvorbis-1.3.5.tar.gz cd libvorbis-1.3.5/ ./configure --prefix=/home/xiaoxia/biye/ffmpeg/install --with-pic --enable-shared make && make install
9、安装vorbis-tools
10、安装libtheora
Theora是开放而且免费的视频压缩编码技术。Firefox和Opera将通过新的HTML5元素提供了对Ogg/Theora视频的原生支持。
mkdir libtheora && cd libtheora wget http://downloads.xiph.org/releases/theora/libtheora-1.1.1.tar.bz2 tar xvjf libtheora-1.1.1.tar.bz2 cd libtheora-1.1.1/ ./configure --prefix=/home/xiaoxia/biye/ffmpeg/install --with-pic --enable-shared make && make install
11、安装xvidcore
XviD 是一款开源的MPEG-4视频编解码器。
mkdir xvidcore && cd xvidcore wget http://downloads.xvid.org/downloads/xvidcore-1.3.3.tar.gz tar zxvf xvidcore-1.3.3.tar.gz cd xvidcore/build/generic ./configure --prefix=/home/xiaoxia/biye/ffmpeg/install make && make install
12、安装一些格式转换常用的编码库
这些库运行依赖于之前安装的编解码实现库,这些库中大多是一些头文件、开发调用接口、转换或者配置等内容。简单理解为lib一个是程序运行时需要的库(运行库), 而lib-dev是编译源码时需要的库(开发库)。
apt-get install libmp3lame-dev \ libfaac-dev \ libtheora-dev \ libvorbis-dev \ libopencore-amrnb-dev \ libopencore-amrwb-dev \ libxvidcore-dev
13、安装x.264
是H.264视频编码器。
mkdir x264 && cd x264 wget ftp://ftp.videolan.org/pub/x264/snapshots/last_x264.tar.bz2 tar xvjf last_x264.tar.bz2 cd x264-snapshot-20151020-2245-stable/ ./configure --prefix=/home/xiaoxia/biye/ffmpeg/install --enable-shared --enable-pic make && make install
14、安装libvpx
VP8编码解码器
mkdir libvpx && cd libvpx wget http://webm.googlecode.com/files/libvpx-v1.4.0.tar.bz2 tar xvjf libvpx-v1.4.0.tar.bz2 cd libvpx-v1.4.0/ ./configure --prefix=/home/xiaoxia/biye/ffmpeg/install --enable-shared --enable-pic make && make install
15、安装libopenh264
和x.264一样,是h264编码器。
# 需要nasm、pkg-config支持 apt-get install nasm apt-get install pkg-config cd source git clone https://github.com/cisco/openh264.git cd openh264 vi Makefile # 修改24行,PREFIX=/home/xiaoxia/biye/ffmpeg/install make && make install
其他音视频编解码库可以根据自身需求进行编译安装。下载地址可在 参考-3对应的连接查找。
三、安装FFMPEG
ffmpeg安装关键在于编解码库和配置,根据自己的使用需求可以自己定义。
1、下载ffmpeg
mkdir ffmpeg && cd ffmpeg wget http://ffmpeg.org/releases/ffmpeg-2.7.2.tar.bz2 tar xvjf ffmpeg-2.7.2.tar.bz2 cd ffmpeg-2.7.2
2、配置
配置时来确定使用哪些编解码器,本次配置如下:
./configure \ --prefix=/home/xiaoxia/biye/ffmpeg/install \ --enable-gpl \ --enable-version3 \ --enable-postproc \ --enable-nonfree \ --enable-shared \ --enable-libfaac \ --enable-libmp3lame \ --enable-libopencore-amrnb \ --enable-libopencore-amrwb \ --enable-libtheora \ --enable-libvorbis \ --enable-libvpx \ --enable-libx264 \ --enable-libopenh264 \ --enable-libxvid \ --enable-ffserver \ --enable-ffplay
可能会有警告,可以忽略:
WARNING: pkg-config not found, library detection may fail. WARNING: using libx264 without pkg-config
问题1:ERROR: openh264 not found using pkg-config
配置完成后,会自动列出将要应用的依赖等信息,可以根据这些信息核查。
3、编译安装
make make install
4、测试
在web目录下上传几个视频和音频文件,然后进行如下测试:
A、利用ffmpeg推送flv待rtmp服务器
ffmpeg -re -i ./sea.flv -vcodec copy -acodec copy -f flv -y rtmp://xxxx:1935/live/livestream
B、利用ffprobe获取mp3信息
ffprobe -v quiet -print_format json -show_format -show_streams ./audio.mp3
C、利用ffmpeg转换视频文件格式从mp4转为flv
ffmpeg -i 230.mp4 -c:v libx264 -crf 24 mp42flv.flv
四、FFMPEG与NGINX做为媒体服务器
3.4.A中测试和本节在下一篇文章中详细介绍。
文章链接:https://blog.evanxia.com/2016/12/1225
参考
1、项目:https://git.oschina.net/evan-xia/x_1510_WebStream
2、http://blog.csdn.net/p081513083/article/details/46681541
3、http://www.th7.cn/system/lin/201507/122513.shtml
4、http://www.cnblogs.com/azraelly/archive/2012/12/31/2840541.html
5、http://www.cnblogs.com/wainiwann/p/4031129.html
转载标明出处:https://blog.evanxia.com/2016/12/1212