当前位置: 首页 > article >正文

大疆上云api直播功能如何实现

概述

流媒体服务器作为直播画面的中转站,它接收推流端的相机画面,同时拉流端找它获取相机的画面。整个流程如下:

  • 在流媒体服务器上创建流媒体应用(app),一个流媒体服务器上面可以创建多个流媒体应用
  • 约定推拉流的地址。假设流媒体服务器工作在1935端口上面,假设创建的流媒体应用的唯一标识为 live01,那么我们可以约定推拉流地址为 rtmp://ip:1935/live01/{camera_id} ,其中camera_id 为唯一标识,用于区分每一个相机 。针对相机A的推拉流地址可以为:rtmp://ip:1935/live01/camera-A,同理针对相机B的推拉流地址可以为:rtmp://ip:1935/live01/camera-B
  • 推流端向 推拉流地址 推送直播流
  • 拉流端从 推拉流地址 拉取直播流播放

出于技术调研的目的,将使用OBS作为上述流程中的推流端;将使用Nginx作为上述流程中的流媒体服务器;将使用ffplay、VLC、flv.js作为上述流程中的拉流端。那么整个流程的落地实践就变成了:

在这里插入图片描述

  • 使用Nginx搭建流媒体服务器,需要基于源码编译 nginx-http-flv-module 模块
  • 在nginx.conf 中创建媒体应用,并做相应的配置,包括对hls(即m3u8)的支持,http-flv的支持
  • 约定推拉流的地址
  • OBS向推拉流地址推送流
  • ffplay拉取直播画面并播放,rtmp协议
  • VLC拉取直播画面并播放,rtmp协议、hls协议
  • 使用基于flv.js 的视频播放器播放直播画面,http协议

基于源码编译安装nginx-http-flv-module

参考之前写的:使用Nginx搭建流媒体服务器

创建流媒体应用

当安装好了 nginx-http-flv-module 之后,就可以创建流媒体应用了。

所谓的创建流媒体应用其实就是编写 nginx 的配置文件,如果需要创建一个名为live 的流媒体应用,那么可以在nginx.conf 中做如下配置:

# 以下内容放可在 nginx.conf 的最后,rtmp 配置块为顶级配置块
rtmp_auto_push on ;rtmp {server {listen 1935; #监听的端口notify_method get;chunk_size 4000;application live { #rtmp推流请求路径live on;# 添加 hls 支持hls on;hls_path /usr/local/nginx/html/hls;hls_fragment 3;hls_playlist_length 60;# 允许从任何源push 流allow publish  all ;# 允许从任何地方来播放流allow play all;# 20s内没有push,就断开连接drop_idle_publisher 20s ;}}
}
  • listen 1935:指定流媒体服务器的运行端口
  • live :为流媒体应用的应用的名称,也即流媒体应用的唯一标识
  • live on : 添加直播的支持
  • hls_path:指定生成的m3u8文件的位置

创建http-flv端点和hls端点

创建http-flv端点和hls端点的目的是让直播流可以在http协议上面传输直播画面。

若不创建,将仅可以使用rtmp协议拉流,即rtmp://ip:1935/live/stream_no;若创建了就可以使用hls或者flvjs来拉流播放了。

创建http-flv端点和hls端点同样是编辑nginx.conf来实现,如下示例配置:

http {......server {listen  82;server_name  rtmpserver;# 创建hls端点location /hls {add_header 'Access-Control-Allow-Origin' '*' ;add_

相关文章:

大疆上云api直播功能如何实现

概述 流媒体服务器作为直播画面的中转站,它接收推流端的相机画面,同时拉流端找它获取相机的画面。整个流程如下: 在流媒体服务器上创建流媒体应用(app),一个流媒体服务器上面可以创建多个流媒体应用约定推拉流的地址。假设流媒体服务器工作在1935端口上面,假设创建的流…...

理解文字识别:一文读懂OCR商业化产品的算法逻辑

文字识别是一项“历久弥新”的技术。早在上世纪初,工程师们就开始尝试使用当时有限的硬件设备扫描并识别微缩胶片、纸张上的字符。随着时代和技术的发展,人们在日常生活中使用的电子设备不断更新换代,文字识别的需求成为一项必备的技术基础&a…...

使用 Cursor、MCP 和 Figma 实现工程化项目自动化,提升高达 200% 效率

直接上手不多说其他的! 一、准备动作 1、Cursor下载安卓 1.1访问官方网站 打开您的网络浏览器,访问 Cursor 的官方网站:https://www.cursor.com/cn 1.2开始下载: 点击"Download for free" 根据您的浏览器设置,会自…...

Arduino、ESP32驱动GUVA-S12SD UV紫外线传感器(光照传感器篇)

目录 1、传感器特性 2、控制器和传感器连线图 3、驱动程序 UV紫外线传感器是一个测试紫外线总量的最佳传感器,它不需要使用波长滤波器,只对紫外线敏感。 Arduino UV紫外线传感器,直接输出对应紫外线指数(UV INDEX)的线性电压,输出电压范围大约0~1100mV(对应UV INDEX值…...

PTA 1097-矩阵行平移

给定一个&#x1d45b;&#x1d45b;nn的整数矩阵。对任一给定的正整数&#x1d458;<&#x1d45b;k<n&#xff0c;我们将矩阵的奇数行的元素整体向右依次平移1、……、&#x1d458;、1、……、&#x1d458;、……1、……、k、1、……、k、……个位置&#xff0c;平移…...

Notepad++ 替换 换行符 为 逗号

多行转一行&#xff0c;逗号分隔 SPO2025032575773 SPO2025032575772 SPO2025032575771 SPO2025032575771 SPO2025032575770为了方便快速替换&#xff0c;我们需要先知道这样类型的数据都存在哪些换行符。 点击【视图】-【显示符号】-【显示行尾符】 对于显示的行尾换行符【C…...

使用飞书API自动化更新共享表格数据

飞书API开发之自动更新共享表格 天马行空需求需求拆解1、网站数据爬取2、飞书API调用2.1 开发流程2.2 创建应用2.3 配置应用2.4 发布应用2.5 修改表格权限2.6 获取tenant_access_token2.7 调用API插入数据 总结 天马行空 之前一直都是更新的爬虫逆向内容&#xff0c;工作中基本…...

使用vscode搭建pywebview集成vue项目示例

文章目录 前言环境准备项目源码下载一、项目说明1 目录结构2 前端项目3 后端项目获取python安装包(选择对应版本及系统) 三、调试与生成可执行文件1 本地调试2 打包应用 四、核心代码说明1、package.json2、vite.config.ts设置3、main.py后端入口文件说明 参考文档 前言 本节我…...

蓝桥杯嵌入式十六届模拟三

由硬件框图可以知道我们要配置LED 和按键 一.LED 先配置LED的八个引脚为GPIO_OutPut,锁存器PD2也是,然后都设置为起始高电平,生成代码时还要去解决引脚冲突问题 二.按键 按键配置,由原理图按键所对引脚要GPIO_Input 生成代码,在文件夹中添加code文件夹,code中添加fun.…...

onedav一为导航批量自动化导入网址(完整教程)

OneNav作为一个功能强大的导航工具,支持后台管理、加密链接、浏览器书签批量导入等功能,能够帮助用户轻松打造专属的导航页面。今天,我将为大家详细介绍如何实现OneNav导航站的批量自动化导入网址。 1、建立要批量导入的表格 格局需要创建表格,表格的要求是一定要有需要,…...

Linux之编辑器vim命令

vi/vim命令&#xff1a; 终端下编辑文件的首选工具&#xff0c;号称编辑器之神 基本上分为三种模式&#xff0c;分别是 命令模式&#xff08;command mode&#xff09;>输入vi的命令和快捷键&#xff0c;默认打开文件的时候的模式插入模式&#xff08;insert mode&#x…...

备赛蓝桥杯之第十六届模拟赛2期职业院校组第四题:地址识别

提示&#xff1a;本篇文章仅仅是作者自己目前在备赛蓝桥杯中&#xff0c;自己学习与刷题的学习笔记&#xff0c;写的不好&#xff0c;欢迎大家批评与建议 由于个别题目代码量与题目量偏大&#xff0c;请大家自己去蓝桥杯官网【连接高校和企业 - 蓝桥云课】去寻找原题&#xff0…...

多模态自动驾驶混合渲染HRMAD:将NeRF和3DGS进行感知验证和端到端AD测试

基于3DGS和NeRF的三维重建技术在过去的一年中取得了快速的进步&#xff0c;动态模型也变得越来越普遍&#xff0c;然而这些模型仅限于处理原始轨迹域内的对象。 HRMAD作为一种混合方案&#xff0c;将传统的基于网格的动态三维神经重建和物理渲染优势结合&#xff0c;支持在任意…...

mac m3 pro 部署 stable diffusion webui

什么是Stable Diffusion WebUI &#xff1f; Stable Diffusion WebUI 是一个基于Stable Diffusion模型开发的图形用户界面&#xff08;GUI&#xff09;工具。通过这个工具&#xff0c;我们可以很方便的基于提示词&#xff0c;描述一段文本来指导模型生成相应的图像。相比较通过…...

多层感知机实现

激活函数 非线性 ReLU函数 修正线性单元 rectified linear unit relu(x)max(0,x) relu的导数&#xff1a; sigmoid函数 s i g m o i d ( x ) 1 1 e − x sigmoid(x)\frac{1}{1e^{-x}} sigmoid(x)1e−x1​ 是一个早期的激活函数 缺点是&#xff1a; 幂运算相对耗时&…...

ngx_http_index_set_index

定义在 src\http\modules\ngx_http_index_module.c static char * ngx_http_index_set_index(ngx_conf_t *cf, ngx_command_t *cmd, void *conf) {ngx_http_index_loc_conf_t *ilcf conf;ngx_str_t *value;ngx_uint_t i, n;ngx_http_inde…...

怎样实现CAN数据的接收和发送?

在裸机环境下实现CAN数据的接收和发送&#xff0c;需要通过 硬件寄存器操作 或 HAL库函数 结合 手动实现的队列 来完成。以下是完整的接收和发送流程实现&#xff1a; 1. 硬件初始化 首先初始化CAN控制器和GPIO&#xff1a; void CAN_Init(void) {// 1. 使能CAN时钟__HAL_RCC…...

Linux笔记---动静态库(使用篇)

目录 1. 库的概念 2. 静态库&#xff08;Static Libraries&#xff09; 2.1 静态库的制作 2.2 静态库的使用 2.2.1 显式指定库文件及头文件路径 2.2.2 将库文件安装到系统目录 2.2.3 将头文件安装到系统目录 3. 动态库 3.1 动态库的制作 3.2 动态库的使用 3.2.1 显式…...

关于matlab和python谁快的问题

关于matlab和python谁快的问题&#xff0c;python比matlab在乘法上快10倍&#xff0c;指数计算快4倍&#xff0c;加减运算持平&#xff0c;略慢于matlab。或许matlab只适合求解特征值。 import torch import timen 50000 # 矩阵规模 M torch.rand(n, 31)start_time time.t…...

基于 ffmpeg 实现合并视频

ffmpeg是一个强大的多媒体处理工具&#xff0c;支持视频文件的合并。 列出目录下所有MP4文件 import os import glob# 当前目录 directory os.getcwd() directory "/directory/to/mp4/*"# 列出目录下所有MP4文件 files glob.glob(directory)# 排序 files.sort(…...

手机销售终端MPR+LTC项目项目总体方案P183(183页PPT)(文末有下载方式)

资料解读&#xff1a;手机销售终端 MPRLTC 项目项目总体方案 详细资料请看本解读文章的最后内容。在当今竞争激烈的市场环境下&#xff0c;企业的销售模式和流程对于其发展起着至关重要的作用。华为终端正处于销售模式转型的关键时期&#xff0c;波士顿 - 华为销售终端 MPRLTC …...

【Python LeetCode Patterns】刷力扣,15 个学习模式总结

1. 前缀和&#xff08;Prefix Sum&#xff09;—— 查询子数组中元素和303. 区域和检索 - 数组不可变304. 二维区域和检索 - 矩阵不可变 2. 双指针&#xff08;Two Pointers&#xff09;—— 移向彼此或远离彼此3. 滑动窗口&#xff08;Sliding Window&#xff09;—— 找到满足…...

蓝桥杯单片机刷题——串口发送显示

设计要求 通过串口接收字符控制数码管的显示&#xff0c;PC端发送字符A&#xff0c;数码管显示A&#xff0c;发送其它非法字符时&#xff0c;数码管显示E。 数码管显示格式如下&#xff1a; 备注&#xff1a; 单片机IRC振荡器频率设置为12MHz。 串口通信波特率&#xff1a;…...

DeepSeek V3-0324升级:开启人机共创新纪元

一、技术平权&#xff1a;开源协议重构AI权力格局 DeepSeek V3选择MIT协议开源6850亿参数模型&#xff0c;本质上是一场针对技术垄断的“数字起义”。这一决策的深层影响在于&#xff1a; 商业逻辑的重构 闭源AI公司依赖API收费的商业模式面临根本性挑战。当顶级模型能力可通过…...

探索抓包利器ProxyPin,实现手机APP请求抓包,支持https请求

以下是ProxyPin的简单介绍&#xff1a; - ProxyPin是一个开源免费HTTP(S)流量捕获神器&#xff0c;支持 Windows、Mac、Android、IOS、Linux 全平台系统- 可以使用它来拦截、检查并重写HTTP(S)流量&#xff0c;支持捕获各种应用的网络请求。ProxyPin基于Flutter开发&#xff0…...

K8S接口请求过程

K8S接口请求过程 1. 宿主机IP (Host IP)2. Service IP3. NodePort4. Pod端口 (Pod Port)5. 容器端口 (Container Port)6. 应用端口 (Application Port)例子&#xff1a;外部流量如何进入应用配置流量路径表详细说明补充说明--连通性测试&#xff1a; 在Kubernetes&#xff08;k…...

文献学习:单细胞+临床+模型构建 | 一篇Molecular Cancer文献如何完整解读CDK4/6i耐药机制

&#x1f44b; 欢迎关注我的生信学习专栏~ 如果觉得文章有帮助&#xff0c;别忘了点赞、关注、评论&#xff01; &#x1f4cc;一、研究背景&#xff1a;CDK4/6i 是不是“万无一失”&#xff1f; HR/HER2- 是最常见的乳腺癌亚型&#xff0c;占比超过70%。近年来&#xff0c;随…...

3.26前端模拟面试

包含 Vue 3、TypeScript、性能优化、工程化等方面&#xff0c;偏八股文。 基础知识 Vue 3 响应式原理&#xff1a;Vue 3 如何实现响应式系统&#xff1f;Proxy 和 Reflect 的作用是什么&#xff1f; TypeScript 类型体操&#xff1a;实现一个 TypeScript 类型 DeepPartial&am…...

Python SciPy面试题及参考答案

目录 什么是 SciPy?它与 NumPy 有什么区别? 如何在 Python 中安装 SciPy? 如何导入 SciPy 库? SciPy 中有哪些子模块?简要介绍它们的功能。 如何使用 SciPy 进行数值积分?请举例说明。 SciPy 中提供了哪些求解微分方程的函数? 什么是插值?SciPy 中如何进行插值?…...

数据库——MySQL基础

一、建立数据库 新建 create 删除 drop 修改 alter 数据库 database 数据表 table 建数据表 create table stu( 字段名 类型 [ 约束 ] [ 主键 ] [注释] ); 二、数据类型 数字 整数 tinyint &#xff08;小型数据&#xff09;一般用来做状态…...