在防火墙阻挡UDP包的情况下部署SRS
前言这个问题的解决方案在官方文档中已经给出了
实现准备工作首先你需要有一台不能从外部发送 UDP 包的服务器(大部分私有服务器都是这样吧)
可以用官方推荐的工具进行测试
启动 SRS12# 换成服务器外网地址CANDIDATE="127.0.0.1"
12345678docker run --name srs -it \--network="host" \--env CANDIDATE=$CANDIDATE \-v /app/srs/conf/:/usr/local/srs/conf/ \-v /app/srs/objs/:/usr/local/srs/objs/ \registry.cn-hangzhou.aliyuncs.com/ossrs/srs:5 \./objs/srs \-c conf/my.srs.conf
为什么 CANDIDATE 要换成服务器外网地址
可以看到,除了上面的客户端请求服务器 url 和服务器回传 SDP 是经过 https 代理之外,其余数据传输过程都是根据 SDP 包含的 CANDIDATE 和 udp 端口交 ...
利用SRS作为纯媒体流服务器实现SFU流转发(不含信令)
你想要的流水线1docker run --name srs -it --env CANDIDATE=$CANDIDATE --network="host" -v ~/workspace/srs/conf/:/usr/local/srs/conf/ -v ~/workspace/srs/objs/:/usr/local/srs/objs/ registry.cn-hangzhou.aliyuncs.com/ossrs/srs:5 ./objs/srs -c conf/my.srs.conf
12cd ~/workspace/httpx-static/httpx-static./httpx-static -t 80 -s 443 -k server.key -c server.crt -r -proxy=http://127.0.0.1:1985/api/v1/ -proxy=http://127.0.0.1:1985/rtc/v1/ -proxy=http://127.0.0.1:8080/
1go run server.go 8085
前言首先要清楚 Web ...
OmniParser-v2 gradio 示例 在 python310 版本下没有输出的解决方案 及 Jeston 部署
前言使用的 Jetson Orin Nano Super Developer Kit (8G) 已经安装好了 ubuntu 22.04 系统,本文在此基础上进行的探索
Jetson AI lab 教程
OmniParser-V2
环境配置OmniParser 要求 python 3.12
但是 Jetson 使用的 torch 等工具只能使用 python 3.10
因此,我们选择 python 3.10 来继续探索
Firefox1sudo apt install firefox
Anaconda使用 firefox 去官网下载吧
1bash xxx.sh
新环境使用 Anaconda 创建一个新环境
1conda create -n omni python==3.10
CUDA 工具链 以及 torch跟随教程(从第二步开始)->教程
第四步会报错,可以试试不做
做完第五步结束
测试 torch cuda
123import torchprint(torch.__version__)print(torch.cuda.is_available())
OmniParser 依赖1 ...
libvlc对鸿蒙设备的移植探索
前言请注意:这是一个不成功的探索,仅供参考。
在做鸿蒙三方库移植时,一眼相中了目前还没有人移植的 vlc。
作为音视频、播放器领域巨头,vlc 的名号可谓无人不知、无人不晓。
但是,由于 vlc 使用的编译工具链过于古旧,项目庞大难以一一分析,本人对于三方库编译移植一条龙又是第一次接触。
凡此种种,不一而足。这些因素都指向了此次探索的失败结局。
解构一切恐惧都来源于未知,对于 vlc 及其衍生物的不熟悉,不了解,片面理解导致了选型的失败。
从项目层级来看:
vlc - vlc 的总库,可以编译出来可执行文件
libvlc - C 语言的 vlc 基础库
libvlcpp - C++ 语言的绑定接口,方便 C++ 开发者开发 ( 并非 libvlc 的 C++ 实现 )
分析从目标入手由官方文档可知,vlc 目录下的每个模块含义
lib - libvlc 源码
src - libvlccore 源码
compat - libcompat 源码
include - 头文件
modules - 各种必要与非必要插件依赖
按照官方教程编译出来 libvlc.so 之后可以查看依赖 ...
flv
flvflv 不像 RTMP 那样繁文缛节
123456789101112constructor() { this.parserBuffer = Buffer.alloc(13); this.parserState = FLV_PARSE_INIT; this.parserHeaderBytes = 0; this.parserTagBytes = 0; this.parserTagType = 0; this.parserTagSize = 0; this.parserTagTime = 0; this.parserTagCapacity = 1024 * 1024; this.parserTagData = Buffer.alloc(this.parserTagCapacity); this.parserPreviousBytes = 0; }
RTMP
RTMPRTMP(Real-Time Messaging Protocol)是由Adobe Systems开发的一种用于音视频以及数据在因特网上进行高效传输的协议,被广泛用于各种实时流媒体传输。
握手RTMP(实时消息传输协议)的握手过程是客户端和服务器建立连接的初始阶段,它确保双方能够同步时钟并协商连接参数。RTMP的握手过程主要包括以下三个阶段:
C0 和 S0:
客户端发送一个字节的C0数据,它表示RTMP协议的主版本,通常为0x03。
服务器接收后,回复一个字节的S0数据,同样用来表示RTMP协议的版本。
C1 和 S1:
客户端紧接着发送C1数据块,长度为1536字节。C1包含了一个32位的UTC时间戳、一个32位的零值字段(被称为Flash Player的版本信息,但通常填充为零),以及1528字节的随机数据。
服务器收到之后,回复S1数据,也是一块1536字节的数据,结构与C1相同:包括一个32位的时间戳、一个32位的零值字段和1528字节的随机数据。
C2 和 S2:
客户端在收到S1后会发送C2数据,这是一个1536字节的块。这次包含的是服务器在S1 ...
node-media-server-v2读源码-Rtmp
前言RTMP(Real-Time Messaging Protocol)是由Adobe Systems开发的一种用于音视频以及数据在因特网上进行高效传输的协议,被广泛用于各种实时流媒体传输。
RtmpPacket12345678910111213141516class RtmpPacket { constructor(fmt = 0, cid = 0) { this.header = { fmt: fmt, cid: cid, timestamp: 0, length: 0, type: 0, stream_id: 0 }; this.clock = 0; this.payload = Buffer.alloc(0); this.capacity = 0; this.bytes = 0; }}
RtmpRTMP
define123456// for HandShakeconst RTMP_HANDSHAKE_SIZE = 153 ...
node-media-server-v2读源码
前言node-media-server 是基于 node.js 的 RTMP/HTTP-FLV/WS-FLV/HLS/DASH 流媒体服务器三方库
目录123456789101112131415161718192021src- |- core- | |- avcodec.js | |- avpacket.js | |- context.js | |- logger.js | |- protocol- | |- amf.js | |- flv.js | |- rtmp.js | |- server- | |- broadcast_server.js | |- http_server.js | |- rtmp_server.js | |- session- |- base_session.js |- flv_session.js ...
node-media-server v4 Get 不到 /admin
node-media-server 是基于 node.js 的 RTMP/HTTP-FLV/WS-FLV/HLS/DASH 流媒体服务器三方库
环境配置npm install node-media-server下载到的 mode-media-server 是最新版本 v4.0.7
样例运行12345678910111213141516171819// app.jsconst NodeMediaServer = require('node-media-server'); const config = { rtmp: { port: 1935, chunk_size: 60000, gop_cache: true, ping: 60, ping_timeout: 30 }, http: { port: 8000, allow_origin: '*' }}; var nms = new NodeMediaServer(config)nms.ru ...
Error: The current device does not contain the following SysCap attributes in the rpcid.json file
开发环境:DevEco Studio Next beta1Openharmony SDK 12(5.0.0.68)RK3568-DAYU200
编译成功,但打包到开发板时报错1234The current device does not contain the following SysCap attributes in the rpcid.json file:SystemCapability.Sercurity.xxx...Make sure the device supports all the SysCap attributes required for running the app
缓兵之计:删除DevEco Studio的编译SDK中ets/api/define-device/default.json中相关栏
default.json可替换为其他设备类型.json
同理
ets/api/define-device-common
js/api/define-device
中的相关栏也要删除
根治:相应的在编译烧录前在相同位置添加相关栏