安装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