目录
1. 安装说明
要想树莓派实现远程监控的能力,那么就需要有一个“视频中转站”,这个中转站要有一个公网IP,这样才可以在任何地方都能访问
我这里使用的中转站是阿里云服务器。当然网上也有很多 rtmp 服务器可以使用,有需要的自行搜索就可以了。
一个简要的实现流程图如下:
2. 树莓派安装 ffmpeg
顺序执行以下命令(具体的下载目录和安装目录按自己实际需要进行修改,sudo make 这一步耗时较长):
cd <你的软件下载目录>
sudo apt-get update
sudo apt-get install libx264-dev
wget http://ffmpeg.org/releases/ffmpeg-4.1.tar.bz2
sudo tar jxvf ffmpeg-4.1.tar.bz2
cd ffmpeg-4.1/
sudo ./configure --prefix=/opt/ffmpeg --enable-shared --enable-pthreads --enable-gpl --enable-avresample --enable-libx264 --disable-yasm
sudo make
sudo install
安装完成后可能遇到的问题:
问题一: 执行 ffmpeg,报命令无效
解决办法:把安装目录下的 /opt/ffmpeg/bin/ffmpeg 文件复制到 /usr/bin 当中,实际的安装目录见 ./configure 的 --prefix 配置项
问题二:报错:ffmpeg: error while loading shared libraries: libavdevice.so.58: cannot open shared object file: No such file or directory
解决办法:
sudo vim ~/.bashrc
复制下面内容粘贴至文件最后(FFMPEG_HOME 的值为实际的 ffmpeg 安装路径),然后保存退出:
export FFMPEG_HOME=/opt/ffmpeg
export PATH=$FFMPEG_HOME/bin:$PATH
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$FFMPEG_HOME/lib:/usr/local/lib
然后执行命令:
source ~/.bashrc
最终完成后,执行 ffmpeg 命令,会出现下面的提示:
3. 云端安装 rtmp 服务器
登录到云端
如果没有安装 unzip 命令,可以先安装以下: sudo yum install unzip
Step 1: 下载 nginx-rtmp-module 模块
cd ~/software/
wget https://github.com/arut/nginx-rtmp-module/archive/master.zip
unzip master.zip
Step 2:下载 openresty
cd ~/software/
wget https://openresty.org/download/openresty-1.13.6.2.tar.gz
tar xvf openresty-1.13.6.2.tar.gz
mv openresty-1.13.6.2 openresty
Step 3:配置和安装
cd openresty
sudo ./configure --prefix=/opt/openresty --add-module=<根据自己的地址写>/nginx-rtmp-module-master
sudo make
sudo make install
sudo ln -s /opt/openresty/nginx/sbin/nginx /usr/sbin/nginx
Step 4:配置 rtmp 信息
sudo vim /opt/openresty/nginx/conf/nginx.conf
然后在配置文件中增加如下内容并保存退出:
rtmp {
server {
listen 1935;
application videotest{
live on;
}
}
}
4. 树莓派推流至 rtmp 服务器
raspivid -w 640 -h 480 -b 15000000 -t 0 -a 12 -a 1024 -a "CAM-1 %Y-%m-%d %X" -ae 18,0xff,0x808000 -o - | ffmpeg -re -i - -s 640x480 -vcodec copy -acodec copy -b:v 800k -b:a 32k -f flv rtmp://<自己云服务器的公有IP地址>/videotest
执行之后可能会有下面的报错
这里可能有两个地方需要设置:
第一个设置:云服务器的安全策略组,要设置内网入方向允许 1935 端口
第二个设置:可能还需要配置防火墙
sudo firewall-cmd --permanent --add-port=1935/tcp
sudo firewall-cmd --reload
5. 客户端播放 rtmp 视频流
我在 PC 上播放是用的 VLC,在 iOS 上是用的 CarEyeRTMP 这个 APP
只需要配置正确 rtmp 地址应该就可以播放了:
播放效果如下:
注:实现视频流直播,对网速会有一些要求,如果连接的客户端多的话,很可能会延迟比较大