1. 配置参考官网文档最优秀
https://trac.ffmpeg.org/wiki/CompilationGuide/Ubuntu
必要修改:
cd ~/ffmpeg_sources && \
wget -O ffmpeg-snapshot.tar.bz2 https://ffmpeg.org/releases/ffmpeg-snapshot.tar.bz2 && \
tar xjvf ffmpeg-snapshot.tar.bz2 && \
cd ffmpeg && \
PATH="$HOME/bin:$PATH" PKG_CONFIG_PATH="$HOME/ffmpeg_build/lib/pkgconfig" ./configure \
--prefix="$HOME/ffmpeg_build" \
--pkg-config-flags="--static" \
--extra-cflags="-I$HOME/ffmpeg_build/include" \
--extra-ldflags="-L$HOME/ffmpeg_build/lib" \
--extra-libs="-lpthread -lm" \
--ld="g++" \
--bindir="$HOME/bin" \
--enable-gpl \
//--enable-gnutls \
//--enable-libaom \
--enable-libass \
--enable-libfdk-aac \
--enable-libfreetype \
--enable-libmp3lame \
--enable-libopus \
//--enable-libsvtav1 \
--enable-libdav1d \
--enable-libvorbis \
--enable-libvpx \
--enable-libx264 \
--enable-libx265 \
--enable-nonfree && \
PATH="$HOME/bin:$PATH" make && \
make install && \
hash -r
2. RTMP推流实验
参考链接
用到依赖包:
链接:https://pan.baidu.com/s/1AZ37PJ6skyU6TqSQN5-LKg
提取码:1234
2.1 安装时的修改
- openssl库不好使
openssl-1.1.0.tar.gz->openssl-1.1.0i.tar.gz - nginx config命令修改
./configure --prefix=/usr/local/nginx --with-pcre=../nginx-dependence/pcre-8.40 --with-zlib=../nginx-dependence/zlib-1.2.11 --with-openssl=../nginx-dependence/openssl-1.1.0 --with-http_ssl_module --add-module=/nginx-dependence/nginx-rtmp-module
修改为:
./configure --prefix=/usr/local/nginx --with-pcre=/root/nginx-dependence/pcre-8.40 --with-zlib=/root/nginx-dependence/zlib-1.2.11 --with-openssl=/root/nginx-dependence/openssl-1.1.0i --with-http_ssl_module --add-module=/root/nginx-dependence/nginx-rtmp-module
2.2 碰到的坑
error: no /usr/build/ngnix-rtmp-module/config was found
解决方法: 将nginx的configure命令中的位置都改成绝对路径。
ngx_murmurhash.c:37:11: error: this statement may fall through
解决方法: 在./objs/Makefile找到-Werrori 后将其去掉,再重新make编译。
nginx ‘struct crypt_data’ has no member named ‘current_salt’
解决方法: 找到对应文件,将该行注释掉。
参考文档中的推流命令失败。
ffmpeg -re -i /home/lee/video.mp4 -vcodec copy -acodec copy -b:v 800k -b:a 32k -f flv rtmp://localhost/videotest
暂时解决方法: ffmpeg -re -i /home/lee/video.mp4 -vcodec copy -an -f flv rtmp://localhost/videotest
2.3 应用
//摄像头推流到服务器
bin/ffmpeg -i "/dev/video0" -f flv rtmp://10.6.3.15/videotest
网页拉流参考链接https://www.cnblogs.com/shook/p/14137221.html
//编译nginx
./configure --prefix=/usr/local/nginx --with-pcre=/root/nginx-dependence/pcre-8.40 --with-zlib=/root/nginx-dependence/zlib-1.2.11 --with-openssl=/root/nginx-dependence/openssl-1.1.0i --with-http_ssl_module --add-module=/root/nginx-dependence/nginx-http-flv-module
npm install --save videojs-flash
npm install -g npm@7.22.0
注: chrome和microsoft edge 不支持flash,下载一个360浏览器解决的。