【网络通信 -- 直播】项目实战记录 -- 搭建一个简单的视频直播系统 (ubuntu + nginx + nginx_rtmp 模块 + ffmpeg + vlc 播放器)
【1】安装配置 nginx 与 nginx_rtmp 模块
【1.1】下载编译安装好zlib、openssl、pure库
wget http://www.zlib.net/zlib-1.2.11.tar.gz
tar xf zlib-1.2.11.tar.gz
cd zlib-1.2.11
./configure
make && make install
wget https://www.openssl.org/source/openssl-1.0.2l.tar.gz
tar xf openssl-1.0.2l.tar.gz
cd openssl-1.0.2l
./config
make && make install
wget https://nchc.dl.sourceforge.net/project/pcre/pcre/8.42/pcre-8.42.tar.gz
tar xf pcre-8.42.tar.gz
cd pcre-8.42
./configure
make && make install
【1.2】下载 nginx-rtmp-module
wget https://github.com/arut/nginx-rtmp-module/archive/master.zip
unzip master.zip
【1.3】下载安装 nginx
wget http://nginx.org/download/nginx-1.7.5.tar.gz
tar -zxvf nginx-1.7.5.tar.gz
./configure --prefix=/usr/local/nginx --add-module=../nginx-rtmp-module-master --with-http_ssl_module
make
make install
【1.4】启动和关闭 nginx
cd /user/local/nginx
# 启动和关闭nginx
sudo /usr/local/nginx/sbin/nginx
sudo /usr/local/nginx/sbin/nginx -s stop
【1.5】访问测试 nginx
访问虚拟机中的 nginx
需要进行端口映射
【1.6】配置 nginx
rtmp {
server {
listen 1900;
application myapp {
live on;
}
}
}
【2】安装配置 FFMPEG
【2.1】安装必要的库
sudo apt-get install build-essential subversion git-core checkinstall yasm texi2html libfaac-dev libfaad-dev libmp3lame-dev libsdl1.2-dev libtheora-dev libx11-dev zlib1g-dev
【2.2】安装 SDL
sudo apt-get install libsdl1.2-dev
sudo apt-get install libsdl-image1.2-dev libsdl-mixer1.2-dev libsdl-ttf2.0-dev libsdl-gfx1.2-dev
【2.3】安装 YASM / NASM
tar -zxvf yasm-1.2.0.tar.gz
cd yasm-1.2.0
./configure
make
make install
tar -xjvf nasm-2.14.tar.bz2
cd nasm-2.14
sudo ./configure
sudo make
sudo make install
【2.4】安装 X264
tar -xjvf last_x264.tar.bz2
cd x264
sudo ./configure –-enable-shared
sudo make
sudo make install
【2.5】安装 X265
sudo apt-get install mercurial cmake cmake-curses-gui build-essential yasm
tar -zxvf x265_1.9.tar.gz
cd x265/build/linux
sudo ./make-Makefiles.bash 选择好之后,输入 q 退出
sudo make
sudo make install
【2.6】安装 FFMPEG
sudo tar -xjvf ffmpeg-3.1.11.tar.bz2
cd ffmpeg-3.1.11
sudo ./configure --prefix=/usr/local/ffmpeg/ --enable-shared --enable-yasm --enable-libx264 --enable-libx265 --enable-gpl --enable-pthreads --extra-cflags=-I/usr/local/include/ --extra-ldflags=-L/usr/local/lib
sudo make
sudo make install
【2.7】配置 FFMPEG 命令
sudo vim /etc/ld.so.conf
加入路径 /usr/local/ffmpeg/lib
sudo ldconfig
sudo vim ~/.bashrc
#ffmpeg
FFMPEG="/usr/local/ffmpeg"
export PATH="$FFMPEG/bin:$PATH"
source ~/.bashrc
【3】搭建简单的视频直播系统
ffmpeg 推流
ffmpeg -re -i test1.mp4 -ar 22050 -f flv rtmp://192.168.91.130:1900/myapp/test
VLC 服务器拉流
推流/拉流效果
【4】典型问题总结
【4.1】ERROR: x265 not found using pkg-config
解决方案 :
export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
【4.2】/usr/local/nginx/logs/nginx.pid 路径下找不到nginx.pid
解决方案
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
【4.3】ffmpeg: error while loading shared libraries: libavdevice.so.57
解决方案
sudo echo “/usr/local/ffmpeg/lib” >> /etc/ld.so.conf
sudo ldconfig
【4.4】ffmpeg/x264:ERROR: libx264 not found
解决方案
修改 x264 编译配置选项
./configure --enable-shared --prefix=/usr/local/x264
修改 FFMPEG 编译配置选项
加入配置项
--extra-cflags=-I/usr/local/x264/include --extra-ldflags=-L/usr/local/x264/lib
参考致谢
本博客为博主的学习实践总结,并参考了众多博主的博文,在此表示感谢,博主若有不足之处,请批评指正。
【2】x265编译
【5】直播推流服务器端搭建