树莓派实现云直播系统

原创文章

硬件需要

  • 树莓派
  • 舵机
  • 摄像头
  • 拥有公网ip的服务器

运行原理

服务通过 linux + php + nginx + python 环境实现,整体服务搭建在内网,通过拥有公网 ip 的服务器做 frp 内网映射,将 web 公布在公网上。通过 nginx 的 base auth 做简单认证。流媒体使用 motion 软件呈现。web 页面使用 Linux + php ,云台的控制使用 web 接口,通过接口,将数据发送到 web 端,web 端发送请求到本地的 python 脚本,从而控制云台转动。

连接硬件

(略)

搭建系统

基础层 ---- python 控制云台转动

1. 安装 python3-rpi.gpio
$ sudo apt-get update
$ sudo apt-get install python3-rpi.gpio
2. 编写代码,实现使用 python 命令可以直接控制云台
#!/usr/bin/env python3
#-- coding: utf-8 --
import RPi.GPIO as GPIO
import time
import sys#设置转动角度
def angle_to_percent_h (angle) :if angle > 170 or angle < 10 :return Falsestart = 4end = 12.5ratio = (end - start)/180 #计算角度angle_as_percent = angle * ratioprint(angle_as_percent)return start + angle_as_percentdef angle_to_percent_s (angle) :if angle > 170 or angle < 10 :return Falsestart = 2end = 12.5ratio = (end - start)/180 #Calcul ratio from angle to percentangle_as_percent = angle * ratioprint(angle_as_percent)return start + angle_as_percentGPIO.setmode(GPIO.BOARD) #使用 Board 模式
GPIO.setwarnings(False) #禁止掉烦人的警告# 使用 40 作为水平方向的舵机信号口
pwm_gpio_x = 40
# 使用 38 作为竖直方向的舵机信号口
pwm_gpio_y = 38
frequence = 50
GPIO.setup(pwm_gpio_x, GPIO.OUT)
GPIO.setup(pwm_gpio_y, GPIO.OUT)
h = GPIO.PWM(pwm_gpio_x, frequence)
s = GPIO.PWM(pwm_gpio_y, frequence)#  接收参数,指定目标角度
x = int(sys.argv[1])
y = int(sys.argv[2])
# x 方向或者 y 方向没有变化,则不调用,防止抖动
if x != -1:h.start(angle_to_percent_s(x))
if y != -1:s.start(angle_to_percent_h(y))
# 增加睡眠时间,等待舵机转动完成
time.sleep(.5)# 关闭并清空 gpio 状态
h.stop()
s.stop()
GPIO.cleanup()

预期目标:直接使用命令行的方式可以控制舵机转动到指定位置。以下是转动到 水平 150°竖直 60°的位置 的命令

$ python main.py 150 60

基础层 ---- 安装 motion ,实现本地访问媒体流

motion是Linux下一款开源的摄像头监控软件,用命名行运行,只保存有运动物体的图像。

$ sudo apt update
$ sudo apt install motion

安装完成后最主要的就是配置。主要修改以下配置,重要配置已做备注

$ sudo vim /etc/motion/motion.conf
  • ‘daemon’ 设置为 on 。 这个是守护进程,当服务挂掉的时候尝试重启,这个很重要一定要开。
  • ‘framerate’ 设置为 1000 到 1500 中间的一个数值。
  • ‘Stream_port’ 设置为 8081,这个是本地访问流媒体时候的http端口,本地查看的时候,在浏览器打开 http://127.0.0.1:8081 即可。
  • ‘Stream_quality’ 设置为 100。流媒体质量。
  • ‘Stream_localhost’ 设置为 off。这个是 仅本地浏览 的配置,为 off 的时候,局域网或者外网可以访问,on 的时候仅本地(127)可以访问
  • ‘webcontrol_localhost’ 设置为 off。仅本地可以控制,同上
  • ‘quality’ 设置为 100。
  • 设置宽高:‘width’ 、 ‘height’ 分别设置为 640 、 480.
  • 设置’post_capture’ to 5.
  • stream_maxrate 设置为 10。即 fps 。** 这个很重要,这个是控制视频流的帧率,越高画面越看起来越流畅,但是消耗的流量更多 **

到了这一步,可以启动 motion 服务了

$ sudo service motion start

本地浏览器打开 http://127.0.0.1:8081 即可查看当前实时画面

基础层 ---- 搭建 web

1. 安装 nginx 环境
$ sudo apt install nginx

详细信息 查看原文

树莓派实现云直播系统相关推荐

  1. 首帧秒开+智能鉴黄+直播答题,阿里云直播系统背后技术大起底

    摘要: 想要快速实现直播能力,并对原有业务不产生任何影响,依托如阿里云一样的直播平台,来搭建移动直播系统,将技术难题交给阿里云,把更多的精力放在核心业务的本身,是最为稳妥和高效的选择.本文介绍阿里云直 ...

  2. 【云周刊】第156期:首帧秒开+智能鉴黄+直播答题,阿里云直播系统背后技术大起底...

    本期头条 首帧秒开+智能鉴黄+直播答题,阿里云直播系统背后技术大起底 关注直播行业的人都知道, 2016年是移动直播的元年,那一年,网红被我们挂在嘴边,直播平台数量呈大规模增长.模式从最开始的秀场直播 ...

  3. 云直播系统架构与实施(转)

    直播类型 传统直播 传统直播基本都是单向传输,很少有做交互.类似于广电演唱会的直播,做交互都是放在秀场里做.只是简单的对外传输直播流,并且流数比较少,延迟容忍度高,基本都超过 10 秒,包括电视转流. ...

  4. 云直播系统架构与实施

    文章来源:http://geek.csdn.net/news/detail/89010 据数据统计,可以看出 2015 年是视频直播的元年.于2015 年年底的数据显示,直播的 APP 已经达到 20 ...

  5. 腾讯云海外直播系统架构是怎么设计的?(附视频回放)

    | 导语 6月29日,音视频及融合通信技术技术沙龙圆满落幕.本期沙龙特邀请腾讯云技术专家分享关于最新的低延迟技术.全新的商业直播方案等话题,针对腾讯云音视频及融合通信产品的技术全面剖析,为大家带来纯干 ...

  6. 云服务器+开发板搭建直播系统,自建流媒体服务器开直播

    使用背景 你工作中有没有碰到过这种情况: 1,实验室里跑着实验要一直盯着,周围还有很多事情要做. 2,晚上跑着实验下班了,回到家还想时不时的看一下实验情况. 现在很流行的直播可以帮上忙,把实验台当作直 ...

  7. 腾讯云低延时直播系统架构设计与弱网优化实践

    "直播带货"可能是2020年最具代表性的词汇之一,那么传统电商该如何融合直播系统,直播过程如何保障用户的最佳观看体验?本文由腾讯云资深架构师何书照在LiveVideoStack线上 ...

  8. 5G网络逐渐普及TSINGSEE青犀视频云边端架构网页视频实时互动直播系统又将如何发展?

    国家发展的风口浪尖是互联网,互联网发展的风口浪尖是5G.中国工程院院士.中国互联网协会理事长邬贺铨说:未来5G会进一步使宽带化的移动互联网应用变得无处不在,支撑起一个万物互联的时代.5G以其超大宽带. ...

  9. 酷瓜云课堂局域网课程点播+直播系统

    系统介绍 酷瓜云课堂内网版,采用C扩展框架Phalcon开发,使用本地基础服务,无营销相关功能,主要适用于公司,学校等内部网络环境使用.局域网内搭建课程点播系统,课程直播系统的最好选择. 系统功能 实 ...

最新文章

  1. redis系列:通过文章点赞排名案例学习sortedset命令
  2. Linux下命令行的彩色终端
  3. java根据ip查计算机名_Java如何从IP地址查找主机名?
  4. 树莓派 st-link master使用ST-LINK V2下载STM32程序 支持F0 F1 F2 等
  5. ProtoBuffer的.proto文件生成c++
  6. 方舟编译器需要安装吗,还是系统升级后自带的?
  7. Mac可读可写remount硬盘
  8. 《Python》 字典
  9. HP Loadrunner 11下载地址
  10. OpenCV官方教程节选
  11. 无法打开包括文件math.h
  12. B站视频下载助手使用教程
  13. Android app接入微信人脸支付详解
  14. svn之黄色感叹号处理方法
  15. rebase操作使用方法
  16. 产品运输和使用振动环境的分类
  17. 机器指令-微指令存储相关基本概念
  18. 小博老师解析Java核心技术点 ——表单令牌(一)
  19. 推荐给你几个我的姐妹们都在用的多张照片拼图软件
  20. 中国智能锁产业发展动向及投资战略规划分析报告2021-2027年

热门文章

  1. 计算机数学考试分值分布,考研初试分值如何分布
  2. 一个不错的旋转木马轮播图特效
  3. 几种卡通渲染方法的解析
  4. 山东大学软件学院2022年众智科学期末简单回忆版题目
  5. 10岁就发布了5款App,被库克约见的小男孩长什么样
  6. 广电信息将深挖三网融合“金矿”
  7. 【机器学习】KNN算法实现手写板字迹识别
  8. 开源数据访问组件Smark.Data 1.8入门编
  9. 如何分页展示数据 【smark-work-parent】
  10. 假期余额不足,说一下这个假期做的事