树莓派4B配置usb摄像头RTSP推流

树莓派4B配置usb摄像头RTSP/RTMP/HTTP推流

文章目录

  • 树莓派4B配置usb摄像头RTSP/RTMP/HTTP推流
    • 树莓派编译安装FFmpeg(添加H.264硬件编解码器支持)
        • 说明
        • 准备工作
        • 一. 下载x264源码并编译安装 x264
        • 二、下载源码编译安装ffmpeg
        • 三、上述过程中遇到的错误
        • 树莓派中搭建RTSP服务器


树莓派编译安装FFmpeg(添加H.264硬件编解码器支持)

说明

FFmpeg是一套开源的音视频编解码库,有非常强大的功能,包括视频采集功能、视频格式转换等。众所周知视频编解码是一个非常消耗系统资源的过程,而树莓派自带了H.264的硬件编解码器,因此本文将详解在树莓派配置FFmpeg使其支持硬件编解码器并编译安装的过程。

准备工作

树莓派4B
树莓派已连接到网络(github可正常访问)

一. 下载x264源码并编译安装 x264

1、更新源并安装git

sudo apt-get update 
sudo apt-get install git
sudo apt-get install npm

2、 下载x264源码

git clone https://git.videolan.org/git/x264.git

3、 进入x264目录

cd x264

4、新建一个名为 config_x264.sh 的文件

touch config_x264.sh

5、使用nano打开config_x264.sh

nano config_x264.sh

6、添加如下内容

#!/bin/sh
./configure \
--disable-shared --enable-static \
--enable-strip \
--disable-cli

7、 然后增加执行权限

chmod +x config_x264.sh

8、 依此进行以下每一行命令

./config_x264.sh
make -j4
sudo make install

执行make -j4时会花费点,应该会几分钟左右。


二、下载源码编译安装ffmpeg

1、在FFmpeg官网获取源码 http://ffmpeg.org/download.html ,当前版本为 ffmpeg-4.1.tar.bz2

wget https://ffmpeg.org/releases/ffmpeg-4.1.tar.bz2

2、解压

tar jxvf ffmpeg-4.1.tar.bz2

3、进入解压得到的ffmpeg目录

cd ffmpeg-4.1

4、新建一个名为 config_ffmpeg.sh 的脚本文件

touch config_ffmpeg.sh

5、使用nano打开 config_ffmpeg.sh

nano config_ffmpeg.sh

6、输入如下内容:

#!/bin/sh
PREFIX=/usr/local
./configure \
--enable-gpl    --enable-version3 --enable-nonfree \
--enable-static --disable-shared \
\
--prefix=$PREFIX \
\
--disable-opencl \
--disable-thumb \
--disable-pic \
--disable-stripping \
\
--enable-small \
\
--enable-ffmpeg \
--enable-ffplay \
--enable-ffprobe \
\
--disable-doc \
--disable-htmlpages \
--disable-podpages \
--disable-txtpages \
--disable-manpages \
\
--disable-everything \
\
--enable-libx264 \
--enable-encoder=libx264 \
--enable-decoder=h264 \
--enable-encoder=aac \
--enable-decoder=aac \
--enable-encoder=ac3 \
--enable-decoder=ac3 \
--enable-encoder=rawvideo \
--enable-decoder=rawvideo \
--enable-encoder=mjpeg \
--enable-decoder=mjpeg \
\
--enable-demuxer=concat \
--enable-muxer=flv \
--enable-demuxer=flv \
--enable-demuxer=live_flv \
--enable-muxer=hls \
--enable-muxer=segment \
--enable-muxer=stream_segment \
--enable-muxer=mov \
--enable-demuxer=mov \
--enable-muxer=mp4 \
--enable-muxer=mpegts \
--enable-demuxer=mpegts \
--enable-demuxer=mpegvideo \
--enable-muxer=matroska \
--enable-demuxer=matroska \
--enable-muxer=wav \
--enable-demuxer=wav \
--enable-muxer=pcm* \
--enable-demuxer=pcm* \
--enable-muxer=rawvideo \
--enable-demuxer=rawvideo \
--enable-muxer=rtsp \
--enable-demuxer=rtsp \
--enable-muxer=rtsp \
--enable-demuxer=sdp \
--enable-muxer=fifo \
--enable-muxer=tee \
\
--enable-parser=h264 \
--enable-parser=aac \
\
--enable-protocol=file \
--enable-protocol=tcp \
--enable-protocol=rtmp \
--enable-protocol=cache \
--enable-protocol=pipe \
\
--enable-filter=aresample \
--enable-filter=allyuv \
--enable-filter=scale \
--enable-libfreetype \
\
--enable-indev=v4l2 \
--enable-indev=alsa \
--enable-indev=alsa \
--enable-outdev=alsa \
\
--enable-omx \
--enable-omx-rpi \
--enable-encoder=h264_omx \
\
--enable-mmal \
--enable-hwaccel=h264_mmal \
--enable-decoder=h264_mmal \
\

7、然后增加执行权限

chmod +x config_ffmpeg.sh

8、依此进行以下每一行命令

./config_ffmpeg.sh
make -j4
sudo make install

执行make -j4时会花费大约1小时左右,需要耐心等待。


三、上述过程中遇到的错误

执行 ./config_ffmpeg.sh,发生的错误:

1、ERROR: OMX_Core.h not found
2、WARNING: Option --enable-hwaccel=h264_mmal did not match anything
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kCtkVEsf-1596721024877)(en-resource://database/5499:1)]
执行 ./config_ffmpeg.sh 发生以上两个错误解决办法:

I believe you need a package called “libomxil-bellagio-dev” that willprovide the OMX header files.

sudo apt-get install libomxil-bellagio-dev

编译安装完成后运行推流命令 ffmpeg -f alsa -ac 2 -i hw:1,0 -ar 44100 -f flv rtmp://192.168.10.109/live/audio 时发生如下错误:

FFMPEG: Unknown input format: ‘alsa’
编译安装完成后运行推流命令 ffmpeg -f alsa -ac 2 -i hw:1,0 -ar 44100 -f flv rtmp://192.168.10.109/live/audio 时发生如下错误 FFMPEG: Unknown input format: ‘alsa’ 的解决办法:

sudo apt-get install libasound2-dev

然后重新执行下载源码编译安装ffmpeg过程中的第6到8步。

树莓派中搭建RTSP服务器

代码github地址

https://github.com/iizukanao/node-rtsp-rtmp-server

Node.js中的RTSP,RTMP和HTTP服务器

  • 支持RTSP,RTMP / RTMPE / RTMPT / RTMPTE和HTTP。
  • 仅支持H.264视频和AAC音频(AAC-LC,HE-AAC v1 / v2)。

1、安装

git clone https://github.com/iizukanao/node-rtsp-rtmp-server.git
cd node-rtsp-rtmp-server
npm install -d

2、另外,安装CoffeeScript 1.x或2.x

npm install --global coffeescript

3、启动服务器

cd node-rtsp-rtmp-server
sudo coffee server.coffee

4、发布实时流,从RTSP客户端您可以从RTSP客户端(例如FFmpeg)发布流,命令如下:

ffmpeg -re -i “/dev/video0” -c:v libx264 -preset fast -c:a libfdk_aac -ab 128k -ar 44100 -f rtsp rtsp://localhost:80/live/STREAMNAME

5、访问直播
通过RTSPRTSP流适用于VLC媒体播放器或Android的VideoView
RTSP网址:rtsp://localhost:80/live/STREAMNAME
请注意,默认情况下,RTSP服务器在端口80上运行。

6、调试成功之后把服务设置为自启动
在pi文件夹下新建mjpg_streamer.sh和fmpeg.sh文件,mjpg_streamer.sh内容:

#!/bin/bash

MJPG_STREAMER_PATH="/home/pi/node-rtsp-rtmp-server"
cd $MJPG_STREAMER_PATH
sudo coffee server.coffee

fmpeg.sh内容:

#!/bin/bash
ffmpeg -re -i "/dev/video0" -c:v libx264 -preset fast -c:a libfdk_aac -ab 128k -ar 44100 -f rtsp -rtsp_transport tcp rtsp://localhost:8080/live/STREAMNAME

修改mjpg_streamer.sh和fmpg.sh文件权限(不添加权限可能自启服务没有权限执行脚本)

chmod 777 mjpg_streamer.sh
chmod 777 fmpeg.sh

实现开机后台自启(创建摄像头服务开机自启服务camera.service)

nano /etc/systemd/system/camera.service

camera.service文件内如如下

[Unit]
Description=camera daemon
After=syslog.target  network.target
Wants=network.target

[Service]
Type=simple
ExecStart=/home/pi/mjpg_streamer.sh
Restart= always
RestartSec=1min

[Install]
WantedBy=multi-user.target

实现开机后台自启(创建推流服务开机自启服务fmpeg.service)

nano /etc/systemd/system/fmpeg.service

camera.service文件内如如下

[Unit]
Description=camera daemon
After=syslog.target  network.target
Wants=network.target

[Service]
Type=simple
ExecStart=/home/pi/fmpeg.sh
Restart= always
RestartSec=1min

[Install]
WantedBy=multi-user.target

设置服务自启动

sudo systemctl enable camera.service
sudo systemctl enable fmpeg.service 

你可能感兴趣的:(文档类,centos,linux)