树莓派3B+ /+ CSI摄像头 + FFmpeg + SRS 实现直播推流

简介:

手头有一个树莓派3B+ 和一块CSI摄像头,想要实现一个推拉流直播的效果。

所需材料:开发板(我用的是树莓派3B+)、CIS摄像头、云服务器(用来搭建SRS服务器)

具体实现思路:

使用树莓派+CSI摄像头来做画面采集,然后使用FFmpeg推流到SRS云服务器上,然后用户可以拉取SRS服务器上的视频流。

具体步骤:

1.树莓派系统烧录

我之前用树莓派官方的烧录工具进行烧录,由于树莓派官方提供的镜像较新,存在的问题较多(可能是我比较菜吧)。比如对CSI摄像头的支持、以及不在支持raspistill和raspivid。所以我决定重新烧老一点的系统(我把我的树莓派镜像放到了下面)。

我的镜像是这个:2023-05-03-raspios-bullseye-armhf-full.img

镜像网盘地址:

链接:https://pan.baidu.com/s/1IgC4h5TGfSpd26QaNNqGKw?pwd=gk8a 
提取码:gk8a

推荐一个比较好的烧录工具

烧录工具网盘地址:

链接:https://pan.baidu.com/s/11bK0YVrZMx5EwDTbU-hIHA?pwd=81ik 
提取码:81ik

2.树莓派安装FFmpeg

树莓派是自带ffmpeg的,我们可以使用命令查看ffmpeg的版本:

ffmpeg -version

3.搭建SRS流媒体服务器

搭建SRS流媒体服务器需要用到云服务器,只有将SRS流媒体服务器搭建在云服务器上,才能让所有人都能拉取到你的视频流。如果你没有云服务器也没事,可以在开发板上搭建SRS流媒体的局域网服务器,在同一个局域网内的所有用户的是可以拉取到视频流的。如果开发板做了内网穿透,那么同样所有人都可以拉取视频流。

3.1 SRS流媒体服务器的搭建

搭建流媒体服务器查看我的另一篇文章:

http://t.csdnimg.cn/UJ3IV

4.使用FFmpeg推流到SRS服务器

4.1 查看video device0设备

ls -al /dev

你video0就是我们的CSI摄像头 

 

如果没有可以重新插一下摄像头,如果还是没有说明没有添加摄像头的驱动程序.ko文件和对应的raspiberry B3+的硬件使能 

sudo vim /etc/modules

然后添加这段话到最后一段

bcm2835-v4l2

修改Raspberry的启动配置使能项:

sudo raspi-config

 

4.2 测试摄像头

 

然后重启,在查看是否存在video0  

参考教程:

树莓派摄像头使用教程 (spotpear.cn)

没问题的话就测试一下这个摄像头,看看能不能进行拍照截图

raspistill -o test.jpg

 4.3 FFmpeg推流

ffmpeg -f v4l2 -framerate 30 -video_size 1280x720 -i /dev/video0 -c:v libx264 -preset ultrafast -tune zerolatency -b:v 2M -f flv rtmp://your_streaming_server_address

最后来看一下效果,我推流的是我自己电脑的画面

                拉流画面

 

我使用手机上的软件MX播放器进行拉流,这个软件在软件商店有可以直接下载

根据下面的提示拉流 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/605497.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[排序算法] 如何解决快速排序特殊情况效率低的问题------三路划分

前言 在[C/C]排序算法 快速排序 (递归与非递归)一文中,对于快速排序的单趟排序一共讲了三种方法: hoare、挖坑法、双指针法 ,这三种方法实现的快速排序虽然在一般情况下效率很高,但是如果待排序数据存在大量重复数据,那这几种方法的效率就很低,而为了解决快速排序在这样特殊情况…

XCode Build报错

XCode Build时报以下错误 B/BL out of range 143266484 (max /-128MB) 错误提示表明生成的机器代码太大,超出了限制 需要在XCode工程中添加宏定义,使得生成的可执行文件超过限制 步骤: 在项目设置页面中,选择 “Build Settings…

labelme的安装

首先尝试在(openmmlab)的python3.8的环境下安装(失败)。应该是我环境其他部分不对,和python版本应该没什么关系。(后续,创建新的环境后成功,可直接看最后一部分。) 首先安装是没问题的 pip in…

浅谈智能照明系统调试阶段节能方案的探究与产品选型

贾丽丽 安科瑞电气股份有限公司 上海嘉定 201801 【摘要】针对当今智能照明系统调试完成前能源浪费的问题,本文结合工程案例,分析研究了智能照明系统调试阶段的节能方法,提出了采用时间控制器来解决能源及人工浪费等问题的方式。实践证明&a…

基于spark的个性化招聘推荐系统

介绍 本就业推荐系统是一个基于Spark框架的个性化推荐平台,使用Python Django框架、Vue和Element-Plus UI组件库构建而成。该系统通过Scrapy爬虫框架抓取招聘网站的职位数据,用户可以根据关键词查询符合条件的职位信息,同时还提供了基于协同…

QT应用篇:QT自定义最小化托盘显示和操作

将应用程序最小化到托盘任务栏中,可以使用Qt框架中的QSystemTrayIcon类。该类允许应用程序在关闭窗口后最小化到系统托盘,保持在后台运行,同时可以显示应用程序图标、添加右键菜单功能以及发送消息通知等。通过学习这些技术,能够为自己的Qt应用程序增加更多的交互性和便利性…

关于Js深拷贝的三种方法详细讲解

目录 前言 一、pandas是什么? 二、使用步骤 1.利用函数递归来实现深拷贝 2.利用引入lodash包 3.利用JSON字符串转换 总结 前言 当涉及到JavaScript数据拷贝的时候,深拷贝是一个非常关键的概念。在JavaScript中,对象和数组被认为是引用类型&a…

结构体(structure)的认识

前言——————希望现在在努力的各位都能感动以后享受成功的自己! 今天我们来了解了解一下结构体,结构体又有什么奥妙呢,废话不多说,何为结构体呢?------->结构是⼀些值的集合,这些值称为成员变量。结…

每日算法打卡:子矩阵的和 day 8

文章目录 原题链接题目描述输入格式输出格式数据范围输入样例:输出样例: 题目分析示例代码 原题链接 796. 子矩阵的和 题目难度:简单 题目描述 输入一个 n 行 m 列的整数矩阵,再输入 q 个询问,每个询问包含四个整数…

即时设计:设计稿与PPT完美结合,让您的创意作品更具影响力

PPT助手 更多内容 在设计领域,将设计稿与PPT结合起来,可以让您的作品更具吸引力和影响力。为了满足这一需求,我们向您推荐一款强大的设计工具,它可以将设计稿导出为PPT文件,支持线上预览和编辑,让您的创意…

2024年大数据不完全预测

人工智能的进步可能是2024年的主要推动力,也凸显出大数据的挑战——如何存储、管理、管理和使用大数据——从未如此紧迫。,因为如果作为基石的数据失控,人工智能就没有意义了。当然反之亦然。 人工智能的进步可能是2024年的主要推动力&#…

【leetcode】力扣算法之相交链表【中等难度】

题目描述 给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null 。 图示两个链表在节点 c1 开始相交: 题目数据 保证 整个链式结构中不存在环。 注意,函数…

如何解决海量数据的问题

近年来,高并发、分布式以及大数据成了后端开发者绕不开的话题,招聘软件上几呼都写着有高并发、大数据等项目经历优先时。很多人实际项目往往都是 CRUD,也没机会接触到这些场景啊。 但是,有位伟人曾经说过:没有条件&am…

并发(9)

目录 50.AQS的核心思想是什么? 51.AQS有哪些核心方法? 52.AQS定义什么样的资源获取方式? 53.AQS底层使用了什么样的设计模式? 54.什么是可重入,什么是可重入锁?他用来解决什么问题? 55.Ree…

小程序实现绘制图片 保存到手机

HTML <template><view><canvas canvas-id"myCanvas" :style"{height:380px,width:wWidthpx,background:#FFFFFF}"></canvas><view class"textCenter"><button click"saveCanvas">保存图片</b…

三代半导体材料有何区别

什么是半导体材料 半导体材料是制作半导体器件和集成电路的电子材料&#xff0c;是半导体工业的基础。利用半导体材料制作的各种各样的半导体器件和集成电路&#xff0c;促进了现代信息社会的飞速发展。 绝缘体、半导体和导体的典型电导率范围 半导体材料的研究开始于19世纪初…

什么是消费增值?如何做到增值?

在当今的商业世界&#xff0c;消费观念正在经历一场深刻的变革。传统的消费模式中&#xff0c;消费者购买商品后&#xff0c;交易即结束&#xff0c;消费者与商品的关系仅停留在使用层面。然而&#xff0c;随着消费增值模式的出现&#xff0c;这一观念正在被颠覆。这一模式将消…

React 元素拖拽教程 react-dnd 实现拖拽

实现效果 下面是实际的项目中的应用&#xff0c;涉及业务逻辑代码比较繁琐&#xff0c;下文只说明其基本原理&#xff0c;有疑问的地方请留言 h5原生的拖拽处理起来过分的繁琐&#xff0c;而社区已经提供了成熟的库 react-dnd 来帮助我们实现这些细节&#xff0c;我们只需要关…

Docker 基础

文章目录 1.Docker概述2.Docker安装3.Docker与虚拟机VM4.Docker命令1.帮助命令2.镜像命令1.images2.search3.pull4.rmi 3.容器命令1.run2.ps3.rm4.start5.stop6.restart7.kill 4.常用其他命令1.后台启动容器2.查看日志&#xff08;logs&#xff09;3.查看进程信息&#xff08;t…

使用proteus进行主从JK触发器仿真失败原因的分析

在进行JK触发器的原理分析的时候&#xff0c;我首先在proteus根据主从JK触发器的原理进行了实验根据原理图&#xff0c;如下图&#xff1a; 我进行仿真&#xff0c;在仿真的过程中&#xff0c;我向电路图中添加了外部的置0/1端口&#xff0c;由此在proteus中得到下面的电路图 …