一、 准备好树莓派板卡和系统
前提条件,手上有一块树莓派3B或4B的盒子,且已经安装了官方的raspberrypi 32bit OS系统
强烈建议使用最新的树莓派4B+,因为4B的千兆网卡才是真千兆;
二、安装视频采集和编解码相关应用和依赖
2.1 编译安装依赖库NASM distfiles.macports.org/nasm
# sudo wget http://distfiles.macports.org/nasm/nasm-2.14.tar.bz2
# sudo tar -vxzf nasm-2.14.tar.bz2
# cd nasm-2.14
# sudo ./configure && sudo make && sudo make install
2.2 编译安装x264
源码地址 www.videolan.org/developers/…
这个库是用来支持x264编码硬件加速
不装的话软ffmpeg编码的时候只能传-vcodec h264参数进行软编码,而不能传-vcodec h264_omx获得硬件加速
--disable-asm 参数表示会用到上一步安装的nasm库
# git clone https://code.videolan.org/videolan/x264.git
# cd x264
# sudo ./configure --prefix=$PWD/_install --enable-static --disable-asm --disable-opencl -–enable-shared
# sudo make && sudo make install
# sudo cp _install/include /usr/ -rf
# sudo cp _install/lib /usr/ -rf
三、源码安装ffmpeg(重头来了)
官网下载地址: www.ffmpeg.org/download.ht… 当前最新版本4.3
先安装依赖
# sudo apt-get install libomxil-bellagio-dev libpcre3-dev libssl-dev zlib1g zlib1g.dev
# sudo wget http://www.ffmpeg.org/releases/ffmpeg-4.3.tar.gz
# sudo tar -vxzf ffmpeg-4.3.tar.gz
# cd ffmpeg-4.3
# sudo ./configure --prefix=$PWD/_install --enable-shared --enable-gpl --enable-libx264 --enable-omx-rpi --enable-mmal --enable-hwaccel=h264_mmal --enable-decoder=h264_mmal --enable-encoder=h264_omx --enable-omx
# sudo make && sudo make install
# sudo cp _install/include /usr/ -rf
# sudo cp _install/lib /usr/ -rf
# sudo cp _install/bin /usr/ -rf
# ffmpeg -v
四、安装支持rtmp转发功能的特定nginx服务
4.1 下载nginx-rtmp模块源码
下载后备用,后面编译安装nginx的时候会引用
# sudo git clone https://github.com/arut/nginx-rtmp-module.git
4.2编译安装nginx
# sudo wget http://nginx.org/download/nginx-1.14.2.tar.gz
# cd nginx-1.14.2
# sudo ./configure --prefix=/usr/local/nginx --add-module=../nginx-rtmp-module --with-http_ssl_module
# sudo make && sudo make install
4.3 安装完成后需创建一个本地视频流文件缓存目录,nginx在推流过程中会用到该缓存,本例子目录为 /data/hls
nginx配置示例
直接用这段覆盖整个nginx.conf内容,需要的话再根据自己实际情况改nginx.conf
user pi;
worker_processes auto;
events {
worker_connections 1024;
}
http {
server {
listen 9080;
location / {
root html;
index index.html index.htm;
}
location /stat {
rtmp_stat all;
rtmp_stat_stylesheet stat.xls;
}
location /stat.xls {
root /data/git/nginx-rtmp-module;
}
}
}
rtmp {
#本地推流服务器配置,接收之后再转发给外网的推流服务
server {
listen 1935;
chunk_size 4000;
application hls {
live on;
hls on;
#本地文件缓存目录,需要事先创建目录
hls_path /data/hls;
hls_fragment 10s;
#你自己的推流地址
push rtmp://livepush.walkye.com/live/demo2?txSecret=62cab0d2dba54331d1af2bd6b3d69d21&txTime=5F0570A6;
}
}
}
然后启动nginx
# sudo /usr/local/nginx/sbin/nginx