【树莓派】ffmpeg + nginx 推 rtmp 视频流实现远程监控

目录

1. 安装说明

2. 树莓派安装 ffmpeg

3. 云端安装 rtmp 服务器

4. 树莓派推流至 rtmp 服务器

5. 客户端播放 rtmp 视频流


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 地址应该就可以播放了:

播放效果如下:

 

注:实现视频流直播,对网速会有一些要求,如果连接的客户端多的话,很可能会延迟比较大

树莓派是一种微型计算机,可以运行不同的操作系统,如Raspbian。而ffmpeg是一种开源的多媒体框架,可以用于处理和转码音视频文件,同时也支持直播功能。树莓派可以通过安装ffmpeg实现直播功能。以下是使用树莓派ffmpeg进行直播的步骤: 1. 首先,你需要在树莓派上安装ffmpeg。可以通过运行以下命令来安装ffmpeg: ```shell sudo apt-get install ffmpeg ``` 2. 安装完毕后,你可以使用以下命令来启动流功能,并将视频流到指定的地址: ```shell ffmpeg -re -i /root/video.mp4 -vcodec libx264 -acodec aac -strict -2 -f flv "你的流地址" ``` 其中,`-i`参数后面是要流的视频文件路径,`-vcodec`指定视频编码器,`-acodec`指定音频编码器,`-f`指定输出格式,`"你的流地址"`是你要流到的地址。 3. 举个例子,如果你想通过B站进行直播,可以使用以下命令: ```shell ffmpeg -re -i /mnt/aria2-downloads/xianghuo.mkv -vcodec libx264 -acodec aac -strict -2 -f flv "rtmp://live-push.bilivideo.com/live-bvc/直播码" ``` 其中,`/mnt/aria2-downloads/xianghuo.mkv`是要流的视频文件路径,`"rtmp://live-push.bilivideo.com/live-bvc/直播码"`是B站提供的流地址。 请注意,具体的流地址和参数设置可能会因不同的直播平台而有所不同。你需要根据你要使用的平台的要求进行相应的设置。同时,还需要确保你的树莓派网络连接稳定,以获得良好的直播效果。
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值