树莓派FFmpeg搭配rtmp服务器实现直播推流(一)

利用ffmpeg实现rtmp推流直播 ffmpeg直播 阅读详情
AI摘要

该文详细介绍了如何在树莓派4B上配置和安装nginx及nginx-rtmp-module,用于搭建RTMP服务器。同时,它还指导如何编译安装ffmpeg并使用h264_omx解码器进行摄像头推流,以实现高效的视频流处理。通过这个设置,树莓派可以从csi摄像头采集视频,推送到nginx服务器,供其他客户端拉取播放。


移步原文网站,浏览最新博客。

安装环境要求

硬件

树莓派4B2G,csi摄像头

软件

树莓派系统:2019-07-10-raspbian-buster-full.img
nginx
nginx-rtmp-module
ffmpeg:ffmpeg-4.1
注意:如果是4B的树莓派请务必下载2019年6月之后的树莓派官方full系统,full版本的系统搭载了官方推荐的软件,部分软件后续ffmpeg的编解码需要用到,此外树莓派4B仅支持2019年6月之后的full系统。

整体架构

  • 树莓派【采集本地csi摄像头输入借助ffmpeg工具推流到nginx服务器】
  • 一台具有公网IP的云服务器【部署nginx,提供rtmp推拉流地址】
  • 客户端【根据nginx服务器提供的推拉流地址拉取rtmp视频流本地播放】

配置步骤

搭建nginx rtmp服务器

编译安装nginx和nginx-rtmp-module

安装 NGINX 依赖项(可参考nginx官方源码编译步骤)
PCRE——支持正则表达式。NGINX Core和Rewrite模块需要。

wget github.com/PCRE2Project/pcre2/releases/download/pcre2-10.40/pcre2-10.40.tar.gz
tar -zxf pcre2-10.40.tar.gz
cd pcre2-10.40
./configure
make
sudo make install

zlib – 支持标头压缩。NGNX Gzip模块需要。

wget http://zlib.net/zlib-1.2.13.tar.gz
tar -zxf zlib-1.2.13.tar.gz
cd zlib-1.2.13
./configure
make
sudo make install

OpenSSL – 支持 HTTPS 协议。NGINX SSL模块和其他模块需要。

sudo apt install libssl-dev

从nginx.org下载最新稳定版的nginx

wget https://nginx.org/download/nginx-1.22.1.tar.gz
tar zxf nginx-1.22.1.tar.gz

下载nginx-rtmp-module

wget https://github.com/arut/nginx-rtmp-module/archive/refs/tags/v1.2.2.tar.gz
tar -xvf v1.2.2.tar.gz

直接使用nginx一起编译nginx-rtmp-module

cd nginx目录
./configure --add-module=nginx-rtmp-module全路径
make
sudo make install

至此nginx和nginx-rtmp-module编译安装完成。

配置启动nginx

sudo vi /usr/local/nginx/conf/nginx.conf

添加下列配置到nginx配置文件(可参考nginx-rtmp-module官方配置说明)

rtmp {
    server {
        listen 1935;
        chunk_size 4000;
        application hls {  #rtmp推流请求路径: rtmp://nginx服务器ip:1935/hls
			live on;
			hls on;
			hls_path /usr/local/nginx/html/hls;
			hls_fragment 5s;
		}
        }
}

退出保存启动nginx

./usr/local/nginx/sbin/nginx

浏览器访问nginx服务器ip显示如下则nginx配置启动成功
image.png

ffmpeg编译安装

出于降低树莓派cpu的负担以及提高推流视频帧率的目的,这里采取ffmpeg h264_omx解码器充分发挥树莓派gpu性能(树莓派硬解)。由于树莓派sudo apt install ffmpeg所安装的ffmpeg不带h264_omx解码器,这里我们采取自行下载编译的方式安装ffmpeg。

下载源码并编译安装x264

下载x264源码

git clone https://git.videolan.org/git/x264.git
cd x264
vi config_x264.sh

输入如下内容添加配置参数

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

配置编译安装

sh config_x264.sh
make -j4
sudo make install

下载源码编译安装ffmpeg

wget https://ffmpeg.org/releases/ffmpeg-4.1.tar.bz2
tar jxvf ffmpeg-4.1.tar.bz2
cd ffmpeg-4.1
vi config_ffmpeg.sh

输入如下内容添加配置参数

#!/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 \
\

配置编译安装

sh config_ffmpeg.sh
make -j4
sudo make install

可能遇到的错误

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

1、ERROR: OMX_Core.h not found
2、WARNING: Option --enable-hwaccel=h264_mmal did not match anything

解决办法

sudo apt-get install libomxil-bellagio-dev

启动ffmpeg开始推流

ffmpeg -s 720x480 -i /dev/video0 -b:v 2000000 -c:v h264_omx -f flv rtmp://119.23.46.140:1935/hls

这里较新版本的树莓派系统可能会报[h264_omx @ 0x7bf480] /opt/vc/lib/libopenmaxil.so not found的问题,博主研究后发现是树莓派full系统升级之后删除或者迁移了部分第三方软件导致的,可通过降低版本解决,推荐版本参考上文。

最终效果
image.png
经过测试可以稳定到30fps左右。(视频清晰度可以通过调节参数得到进一步提升,这里不再做过多研究)

FFmpeg入门 - rtmp推流 介绍了怎样用ffmpeg去播放视频.里面用于打开视频流的avformat_open_input函数除了打开本地视频之外,实际上也能打开rtmp协议的远程视频,实现拉流:./demo -p 本地视频路径​./demo -p rtmp://服务器ip/视频流路径这篇文章我们来讲下怎样实现推流,然后和之前的demo代码配合就能完成推流、拉流的整个过程,实现直播。 阅读详情

相关推荐

【FFmpeg】调用ffmpeg库进行RTMP推流和拉流

从使用的函数来看,主要的操作流程和数据流走向大约为: 1. 初始化网络模块,为RTMP传输进行准备(avformat_network_init) 2. 打开输入文件,创建输入文件结构体并且读取输入文件信息(avformat_open_input),此时也会创建输入的流信息 3. 根据输入文件查找流信息(avformat_find_stream_info) 4. 查看输入文件信息(av_dump_format) 5. 根据输出文件信息来创建输出文件结构体(avformat_alloc_output

weixin_42877471的博客 9018

ffmpeg 之 RTMP 一

1 RTMP 介绍 RTMP(Real Time MessagingControl) 是Adobe 公司flash 播放器和服务器之间的音视,视频以及数据传输的流媒体协议。该协议是个协议族,包括多种协议,包括最基本的RTMP 以及RTMPE,RTMPT,RTMPS 等多种变种。 RTMP:工作在TCP 上, 使用端口号为1935; RTMPE:在RTMP 上增加了加密功能。 RTMPT:: 工作在HTTP 上 ...

陌上烟雨遥的博客 3603

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

目录 1. 安装说明 2. 树莓派安装 ffmpeg 3. 云端安装 rtmp 服务器 4. 树莓派推流至 rtmp 服务器 5. 客户端播放 rtmp 视频流 1. 安装说明 要想树莓派实现远程监控的能力,那么就需要有一个“视频中转站”,这个中转站要有一个公网IP,这样才可以在任何地方都能访问 我这里使用的中转站是阿里云服务器。当然网上也有很多 rtmp 服务器可以使用,有需要的...

Walle的博客 8490

树莓派直播推流---树莓派摄像头推流的几种方式

无论使用何种推流方式,我们要使用树莓派CSI摄像头时必须首先要进行一些设置 具体参考前面的博客:https://blog.youkuaiyun.com/zz531987464/article/details/83422794 1.raspivid工具推流-延迟大约170ms 该工具已经默认集成到了树莓派之中 raspivid -t 0 -w 1280 -h 720 -fps 20 -o - | nc...

Stay Hungry Stay Foolish 2万+

利用nginx和rtmp在Ubuntu系统下搭建流服务器并测试推流拉流_ubuntu 安装nginx服务 推流直播(1)

application hls { # 这里的hls一定要和/home/raychiu/data/ffmpegTest/hls的hls相同,否则报:rtmp://localhost:1935/home/raychiu/data/ffmpegTest/hls: Input/output error错。#rtmp推流请求路径,文件存放路径。#每个TS文件包含5秒的视频内容。#然后写入下边这一行,注意对应自己的安装路径。

2401_84715997的博客 1388

利用nginx和rtmp在Ubuntu系统下搭建流服务器并测试推流拉流_ubuntu 安装nginx服务 推流直播

application hls { # 这里的hls一定要和/home/raychiu/data/ffmpegTest/hls的hls相同,否则报:rtmp://localhost:1935/home/raychiu/data/ffmpegTest/hls: Input/output error错。#rtmp推流请求路径,文件存放路径。#每个TS文件包含5秒的视频内容。#然后写入下边这一行,注意对应自己的安装路径。

2401_84731999的博客 855

树莓派FFmpeg搭配rtmp服务器实现直播推流(二)

移步[原文网站](http://mjvvv.cn/blogBrowse?blogId=60),浏览最新博客。

Red_Fox___的博客 1105

《哥谭神话-工程篇》02.Palantir的Ontology层(语义层) -企业操作系统的大脑

Ontology(语义层) 是Foundry 的核心层。Ontology 位于集成到 Foundry 中的数字资产(数据集和模型)之上,并将其连接到现实世界的对应物,从工厂、设备和产品等物理资产到客户订单或金融交易等概念。本篇将详细拆解Ontology(语义层)。

885

如何使用OpenCV RTMP直播推流

Python OpenCV实现RTMP推流

xfxuezhang.cn 2万+

【破局之道】LangChain4j 0.31.0 + Java 8 + Spring Boot:在“过时”环境中构建本地大模型应用的实战指南

本文为使用Java 8和Spring Boot等“过时”技术栈的团队提供了构建本地大模型应用的实战指南。通过采用LangChain4j 0.31.0这一兼容版本,结合Ollama部署本地大模型,开发者无需升级JDK即可在现有项目中快速集成AI能力,实现智能问答、文档摘要等功能,为传统项目注入创新活力。

t4y5u6i7o的博客 557

jetson agx orin开箱及接口介绍

jetson agx orin开箱及接口介绍

qq_58728069的博客 1万+

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

树莓派4B配置usb摄像头RTSP/RTMP/HTTP推流 文章目录树莓派4B配置usb摄像头RTSP/RTMP/HTTP推流树莓派编译安装FFmpeg(添加H.264硬件编解码器支持)说明准备工作一. 下载x264源码并编译安装 x264二、下载源码编译安装ffmpeg三、上述过程中遇到的错误树莓派中搭建RTSP服务器 树莓派编译安装FFmpeg(添加H.264硬件编解码器支持) 说明 FFmpeg是一套开源的音视频编解码库,有非常强大的功能,包括视频采集功能、视频格式转换等。众所周知视频编解码是一个

qq_43591363的博客 1万+

小红书高时效推荐系统背后的技术升级

在小红书 APP 中,推荐系统的实效性对推荐效果有着特别重要的影响,特别是作为 UGC 平台,小红书的推荐系统如果能更快地捕捉用户与笔记之间的变化和联系,就能够给推荐带来更好的效果。在2021年上半年,首页推荐的召回、粗排、精排的主要模块都保持在天级更新的状态,我们通过持续迭代,将召回 CF 渠道、召回索引更新、召回模型/粗精排模型的训练都做到了分钟级更新,为首页推荐的分发效率带来飞跃式提升,并给业务侧带来非常显著的收益。 小红书站内“最近一天内发布的新笔记”在首页的曝光占比一直很高,这段时间更是快速

REDtech_1024的博客 3521

基于网页实现RTMP流的web直播(监控)实现(利用树莓派ffmpeg实现推流)

基于网页实现RTMP流的web直播(监控)实现(利用树莓派ffempg实现推流) 1、Linux上nginx-rtmp服务器的搭建 2、在树莓派上安装ffempg 在树莓派中的 ffmpeg 推流命令(将-t 10删除,则会一直进行推流) ffmpeg -ss 0 -t 10 -i /dev/video0 -f flv rtmp://(ip):(端口)/(nginx服务器应用)/(自定义应用) 配置后将网页放在nginx服务器的html文件夹中就可以访问。若有公网IP的话,将网页放在本地,而访问流的ip改

qq_43556844的博客 3765

OpenClaw + Qwen 模型集成飞书完整教程

1、环境要求:- **操作系统**: Windows- **Node.js**: v18+ (推荐 v20+)- **飞书账号**: 需要企业管理员权限(创建应用用)或者个人飞书账号创建个人应用- **网络**: 能访问 GitHub 和飞书开放平台2、安装Node.js下载完成后验证是否安装成功,cmd窗口输入“node --version”,显示版本号即为安装成功(如下图所示)3、获取大模型APIKEY(这里以Qwen为例)

qq_29609427的博客 477

基于龙虾Claw的会议纪要自动提取与重点内容总结办公场景实践

本文介绍如何使用龙虾Claw构建会议纪要自动提取与重点内容总结系统,实现会议内容的智能处理。

一键难忘的博客 253

树莓派搭建rtmp服务器使用ffmpeg推流

首先需要下载 nginx-1.8.1 : http://nginx.org/download/nginx-1.8.1.tar.gz wget http://nginx.org/download/nginx-1.18.0.tar.gz nginx-rtmp-module : https://github.com/arut/nginx-rtmp-module git clone https://github.com/arut/nginx-rtmp-module openssl :https://www.o

weixin_42454034的博客 1974

【Dify】PPT生成工具应用

本文介绍了一款自动化PPT生成工具,通过智能接口将文本内容高效转化为结构化演示文档。该系统采用三阶段工作流(内容输入、HTTP请求上传、文件输出),无需复杂操作即可生成专业PPT。工具适用于教学课件、产品发布、企业培训等场景,能显著提升内容表达效率,特别适合初学者快速制作演示材料。文章详细说明了核心节点、应用场景及开发资源,为文本到PPT的自动化转换提供了实用解决方案。

Mr数据杨 1216

利用FFmpeg进行专业级直播推流:从入门到精通

通过本文的系统学习,您应该已经掌握了FFmpeg直播推流的核心技术与高级技巧。根据硬件条件选择合适的编码参数建立完善的监控和自动恢复机制定期更新FFmpeg版本获取性能改进针对不同场景进行专项优化FFmpeg的功能远不止于此,后续可深入探索滤镜应用、多路合成等高级特性,构建更专业的直播推流解决方案。

OpenSkeye的博客 2939

【Docker】完美解决拉取镜像超时报错:ERROR: Get https://registry-1.docker.io/v2/

因为我们下载的镜像是外网的镜像资源,所以下载的速度会非常的慢,甚至大概率下载时会报错,所以需要我们配置一个国内的服务器镜像地址,国内服务器镜像地址有很多,这里咱们就说一下阿里镜像加速器的配置方法。

liu_chen_yang的博客 12万+

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

树莓派ffmpeg直播推送,nginx视频流接受转码,客户端hls rtmp视

树莓派ffmpeg直播推送,nginx视频流接受转码,客户端hls rtmp视频流拉流 树莓派利用ffmpeg将摄像头视频流以rtmp视频流的格式,推送到安装有nginx,nginx-rtmp的云服务器端,在云服务器端会进行视频流的录制成flv格式或者转码成m3u8格式的hls视频流 ffmpeg,rtmp,hls简单了解 ffmpeg ffmpeg用于记录,转换和流传输音频和视频的完整的跨...

weiyang_tang的博客 3149

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

利用nginx和rtmp在Ubuntu系统下搭建流服务器并测试推流拉流

在一台Ubuntu服务器上搭建流服务器,然后在树莓派上利用ffmpeg推流,第三方PC端用VLC、ffplay拉流

RayChiu757374816的博客 6307

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

树莓派直播推流---nginx流媒体服务器搭建

参考: https://blog.youkuaiyun.com/li_wen01/article/details/70639397https://www.jianshu.com/p/76c1be068170 1.下载源代码 #下载nginx源代码 wget https://nginx.org/download/nginx-1.13.4.tar.gz #下载rtmp插件模块 git clone http...

Stay Hungry Stay Foolish 2785

FFmpeg+nginx实现b站推流直播

移步[原文网站](http://mjvvv.cn/blogBrowse?blogId=59),浏览最新博客。

Red_Fox___的博客 2913

树莓派结合FFmpeg与nginx-rtmp打造低延迟直播系统(一)

本文详细介绍了如何利用树莓派结合FFmpeg与nginx-rtmp模块搭建一套低延迟的直播推流系统。通过启用树莓派的硬件编码能力,FFmpeg可高效处理视频流,再经由自建的RTMP服务器分发,实现低成本、高性能的个人直播或监控解决方案。

h9j8k7l6m5n的博客 1057

树莓派基于ffmpeg+阿里云流媒体服务器实现视频直播

一些基础理论知识准备 致敬雷神 [总结]FFMPEG视音频编解码零基础学习方法 https://blog.youkuaiyun.com/leixiaohua1020/article/details/15811977 http://bbs.eeworld.com.cn/thread-506472-1-1.html 总体框架图 音视频编码基本原理(理论部分) https://blog.youkuaiyun.com/leixiaohua1020/article/details/28114081 视频压缩编码的方式: 视频压缩的主要依

agentky的博客 2312
上一篇: FFmpeg+nginx实现b站推流直播
下一篇: 树莓派FFmpeg搭配rtmp服务器实现直播推流(二)
red-fox-yj
博客等级 码龄8年 9粉丝 18原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

red-fox-yj

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值