编译ffmpeg

来源:互联网 发布:法国旅游 知乎 编辑:程序博客网 时间:2024/06/11 03:46

安装git

yum -y install git*



1、安装Yasm工具:

载地址: http://www.tortall.net/projects/yasm/releases/

最新版本:http://www.tortall.net/projects/yasm/releases/yasm-1.3.0.tar.gz

 

cd /home/mycentos7/tools/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

sudo make install  (或使用root安装: make install)

cd ..


2、安装FAAC:

官网: http://www.audiocoding.com/

 

cd /home/mycentos7/tools/ffmpeg

wget http://downloads.sourceforge.net/project/faac/faac-src/faac-1.28/faac-1.28.tar.gz

tar zxvf faac-1.28.tar.gz

cd faac-1.28

 

直接编译会报错,处理方式有以下三种,任意一种都可以:

(1)sed -i 's@^char \*strcasestr@//char *strcasestr@' ./common/mp4v2/mpeg4ip.h

(2)   sed -i '124 s@extern "C"@extern"C++"@' ./common/mp4v2/mpeg4ip.h

sed -i '126 s@^char \*strcasestr@const char *strcasestr@'./common/mp4v2/mpeg4ip.h

(3)参见附录二的处理

 

./configure

make

sudo makeinstall  (或使用root安装: make install)

cd ..


3、安装LAME:

cd /home/mycentos7/tools/ffmpeg

wget http://downloads.sourceforge.net/project/lame/lame/3.99/lame-3.99.5.tar.gz

tar xzvflame-3.99.5.tar.gz

cd lame-3.99.5

./configure--enable-nasm

make

sudo make install  (或使用root安装: make install)

cd ..


4、安装librtmp:

官网: http://rtmpdump.mplayerhq.hu

 

cd /home/mycentos7/tools/ffmpeg/

git clone git://git.ffmpeg.org/rtmpdump

mv rtmpdump rtmpdump-2.4

cd rtmpdump-2.4

make

sudo makeinstall  (或使用root安装: make install)

cd ..

 

ln -s /usr/local/lib/pkgconfig/librtmp.pc  /usr/lib64/pkgconfig/librtmp.pc

 

二、安装编解码器

1、安装x.264:

官网: http://www.videolan.org/developers/x264.html

下载地址:

最新版本:ftp://ftp.videolan.org/pub/x264/snapshots/last_x264.tar.bz2

(1) git下载

cd /home/mycentos7/tools/ffmpeg

#git clonegit://git.videolan.org/x264

#cd x264

 

(2)wget下载

cd  /home/mycentos7/tools/ffmpeg

wget ftp://ftp.videolan.org/pub/videolan/x264/snapshots/last_stable_x264.tar.bz2

tar xvjflast_stable_x264.tar.bz2

cd x264-snapshot-20150707-2245-stable

(3)编译

 

./configure–enable-shared –enable-pic --enable-static

make

sudo make install  (或使用root安装: make install)

cd ..



三、ffmpeg编译配置
./configure --enable-gpl --enable-shared --enable-postproc --enable-nonfree --enable-zlib  --enable-libfaac --enable-encoder=libfaac(3.3需要libfdk_aac) --enable-libmp3lame --enable-encoder=libmp3lame --enable-libx264 --enable-encoder=libx264 --enable-avfilter --enable-filter=movie  --enable-librtmp --extra-ldflags="-L/usr/local/lib" --extra-cflags="-I/usr/local/include" --extra-libs="-lrtmp"

make     

make  install

PS:在虚拟机中运行时,最后红色部分不能添加,configure后需要修改config.mak文件
找到 “EXTRALIBS= ” 这一项 ,然后在其最后 添加 -lrtmp(否则有c编译问题C compiler test failed.
PS:有些Centos服务器不一样,如果不加 --extra-libs="-lrtmp"(在config.mak中添加了)会提示一些rtmp函数未定义,根据具体情况确定。


四、ffmpeg添加环境变量

1、创建软连接
ln -s /usr/local/ffmpeg/lib/libavcodec.so.56.1.100   /usr/lib/libavcodec.so.56
ln -s /usr/local/ffmpeg/lib/libavdevice.so.56.0.100  /usr/lib/libavdevice.so.56
ln -s /usr/local/ffmpeg/lib/libavfilter.so.5.1.100   /usr/lib/libavfilter.so.5 
ln -s /usr/local/ffmpeg/lib/libavformat.so.56.4.101  /usr/lib/libavformat.so.56
ln -s /usr/local/ffmpeg/lib/libavutil.so.54.7.100    /usr/lib/libavutil.so.54
ln -s /usr/local/ffmpeg/lib/libpostproc.so.53        /usr/lib/libpostproc.so.53
ln -s /usr/local/ffmpeg/lib/libswresample.so.1.1.100  /usr/lib/libswresample.so.1
ln -s /usr/local/ffmpeg/lib/libswscale.so.3.0.100    /usr/lib/libswscale.so.3

 
2、动态链接库
        vi /etc/ld.so.conf
        加入:/usr/local/ffmpeg/lib
        执行
        ldconfig

3、添加环境变量
PATH=$PATH:/usr/local/ffmpeg/bin/
export PATH

4、验证:

root@localhost:/usr/local/ffmpeg/lib# ffmpeg
ffmpeg version 2.4.2 Copyright (c) 2000-2014 the FFmpeg developers
  built on Jul  3 2017 18:03:39 with gcc 4.4.7 (GCC) 20120313 (Red Hat 4.4.7-17)
  configuration: --enable-shared --disable-yasm --prefix=/usr/local/ffmpeg --enable-postproc
  libavutil      54.  7.100 / 54.  7.100
  libavcodec     56.  1.100 / 56.  1.100
  libavformat    56.  4.101 / 56.  4.101
  libavdevice    56.  0.100 / 56.  0.100
  libavfilter     5.  1.100 /  5.  1.100
  libswscale      3.  0.100 /  3.  0.100
  libswresample   1.  1.100 /  1.  1.100
Hyper fast Audio and Video encoder
usage: ffmpeg [options] [[infile options] -i infile]... {[outfile options] outfile}...

Use -h to get full help or, even better, run 'man ffmpeg'



五、TS流分割器segmenter的安装与使用
1、git clone https://github.com/johnf/m3u8-segmenter
2、cd m3u8-segmenter
3、
 ./configure FFMPEG_CFLAGS=-I../ffmpeg-2.1.1  FFMPEG_LIBS='-L ../ffmpeg-2.1.1/libavformat -L../ffmpeg-2.1.1/libavcodec -L../ffmpeg-2.1.1/libavutil -pthread -lavformat -lavcodec -lavutil -lm -lz' 

4、make

5、ln -s /home/zxy/ffmpeg/ffmpeg-2.4.2/m3u8-segmenter/m3u8-segmenter /usr/bin/segmenter

6、source /etc/bashrc
   source /etc/profile

六、FFmpeg的使用

1、rtmp切割为m3u8、 ts流
可用的直播源
  • rtmp://live.hkstv.hk.lxdns.com/live/hks
    rtmp://live.hkstv.hk.lxdns.com/live/hks live=1

ffmpeg -i   rtmp://live.hkstv.hk.lxdns.com/live/hks -bsf:v h264_mp4toannexb  -vcodec copy -acodec copy -ac 1  -strict -2   -maxrate 800k -bufsize 1835k -pix_fmt yuv420p -flags -global_header   -segment_wrap  10   -f segment -segment_list 19-cctv19.m3u8 -segment_list_flags +live    -segment_time 10  -segment_list_size 6  out%03d.ts

2、rtsp切割为m3u8、 ts流
ffmpeg -i   rtsp://184.72.239.149/vod/mp4://BigBuckBunny_175k.mov   -vcodec copy -acodec copy -ac 1  -strict -2   -maxrate 800k -bufsize 1835k -pix_fmt yuv420p -flags -global_header   -segment_wrap  10   -f segment -segment_list 19-cctv19.m3u8 -segment_list_flags +live    -segment_time 10  -segment_list_size 6  out%03d.ts

3、hls切割为m3u8、 ts流
http://live.hkstv.hk.lxdns.com/live/hks/playlist.m3u8

ffmpeg -i   http://live.hkstv.hk.lxdns.com/live/hks/playlist.m3u8   -vcodec copy -acodec copy -ac 1  -strict -2   -maxrate 800k -bufsize 1835k -pix_fmt yuv420p -flags -global_header   -segment_wrap  10   -f segment -segment_list 19-cctv19.m3u8 -segment_list_flags +live    -segment_time 10  -segment_list_size 6  out%03d.ts

=======================================
4、udp转rtmp   
   开启crtmpserver推送rtmp流(先安装crtmpserver):./crtmpserver crtmpserver.lua                         
   使用VLC推送udp流
       ffmpeg -i udp://230.0.0.1:6000 -c:v copy -c:a libfaac -f flv rtmp://192.168.1.109/live/live_stream
   
   NG 报错

ffmpeg -i udp://230.0.0.1:6000 -c:v copy -c:a aac -strict -2 -f flv rtmp://192.168.1.109/live/live_stream
播放卡顿

ffmpeg -i udp://230.0.0.1:6000 -c:v copy -c:a copy -bsf:a aac_adtstoasc -f flv rtmp://192.168.1.109/live/live_stream
播放卡顿

ffmpeg -i udp://230.0.0.1:6000 -c copy -f flv rtmp://192.168.1.109/live/live_stream  有点卡

=======================================
5、rtsp转rtmp
ffmpeg -i rtsp://video.fjtu.com.cn/vs01/yhhy/yhhy_01.rm -c copy -f flv rtmp://192.168.1.109/live/live_stream  
报错


ffmpeg -i rtsp://184.72.239.149/vod/mp4://BigBuckBunny_175k.mov -c copy -f flv rtmp://192.168.1.109/live/live_stream  
原视频就没有声音,正常


ffmpeg -i   rtsp://184.72.239.149/vod/mp4://BigBuckBunny_175k.mov   -vcodec copy -acodec copy -ac 1  -strict -2   -maxrate 800k -bufsize 1835k -pix_fmt yuv420p -flags -global_header -f flv rtmp://192.168.1.109/live/live_stream
原视频就没有声音,转发后正常

=====================
vlc本地推流
ffmpeg -i rtsp://192.168.110.181:6000/vlc -c copy -f flv rtmp://127.0.0.1/live/live_stream
卡顿

ffmpeg -i   rtsp://192.168.110.181:6000/vlc   -vcodec copy -acodec copy -ac 1  -strict -2   -maxrate 800k -bufsize 1835k -pix_fmt yuv420p -flags -global_header -f flv rtmp://127.0.0.1/live/live_stream
卡顿


6、hls转rtmp
VLC 本地推送hls,搭建http推送流,激活转码(TS流)  http://192.168.1.107:8080/1
ffmpeg -i http://192.168.1.107:8080/1 -c copy -f flv rtmp://127.0.0.1:9999/live/live_stream
正常,有点卡

ffmpeg -i   http://192.168.1.107:8080/1   -vcodec copy -acodec copy -ac 1  -strict -2   -maxrate 800k -bufsize 1835k -pix_fmt yuv420p -flags -global_header -f flv rtmp://127.0.0.1:9999/live/live_stream




其他测试

使用ffmpeg推送rtmp流:ffmpeg -re -i ./cctv-1-1-h264_mp3.ts -f flv rtmp://127.0.0.1/live/live_stream