SDK 集成前的目标软件形态确认
音视频 SDK 的集成难点通常不是“调用一个播放函数”,而是目标软件形态不同:Windows 桌面、Linux 服务端、Android App、iOS App、macOS 工具、.NET 客户端、Qt 程序或嵌入式终端,对包形式、渲染窗口、权限、日志、线程和授权身份的要求都不同。
因此在报价和集成前,应确认目标平台、CPU 架构、开发语言、UI 框架、发布方式和是否需要离线运行。
1. 播放能力
播放侧要确认协议和输出方式。常见输入包括 RTSP、RTMP、HTTP(S) 网络流。还要确认 H.264/H.265、软解/硬解、渲染窗口、首帧事件、网络状态、断线重连、低延迟参数和截图/帧回调需求。
如果摄像头来自 ONVIF 搜索,ONVIF 解决的是发现和取 RTSP 地址,不应把 ONVIF 当作独立播放协议。
2. 采集能力
采集侧要确认来源:摄像头、麦克风、屏幕、窗口、区域、本地媒体文件、图片或应用主动送入的数据。不同平台的摄像头权限、屏幕录制权限、系统音频能力和 GPU 帧导出方式差异很大,集成前要用 Demo 在目标机器验证。
需要只读识别或统计时接 Observer;需要美颜、分割、虚拟背景、降噪等修改帧内容时,在编码前接 Capture Processor。Processor 回调在源线程执行,耗时算法应交给应用自己的工作线程,并对每帧恰好完成一次 finish,包括已超时的任务。替换帧须由调用方创建并按结果转移或释放所有权;SDK 维持下游顺序和有界在途任务,不能把超时当作无限排队。正式 1.6.2 文档包中的“Capture Processor 实时算法接入”给出 C API 接入骨架、线程和帧所有权规则,可从文档中心获取。其中算法任务池和处理函数由客户实现,不能把骨架当作复制即运行的程序;SDK 不内置固定 AI 模型。
实际接入时,可参照文档包里的 processor_minimal.cpp 把黑白处理回调接入自己的 Capture 配置。这个文件是 Processor 合同示例,没有独立运行入口。先确认处理后预览与推流收到的是同一条处理链的结果,再把处理函数换成自己的模型调用。接入异步模型时,逐项检查超时、失败回退、帧内存释放和停止采集后的在途任务。Windows Qt Demo 的AI 特效接入演示可以先验证双预览,但它的模型扩展包与正式 SDK 是两项交付,不能代替自有应用中的接入和授权验证。
3. 推流发布
推流侧要确认目标协议和输入源。StreamCore SDK 标准版覆盖 RTMP / RTSP 推流,专业版增加 SRT 和 WHIP(WebRTC 推流);其中 WHIP 使用 H.264 视频与 Opus 音频,并可向服务端提交 Bearer Token。输入可以来自本地采集,也可以来自调用方送入的原始帧或编码包。
4. GB28181 与 ONVIF
GB28181 更适合政企、行业平台和国标联网场景。SDK 的 GB28181 方向是向上级平台注册、保活、提供目录,并在收到 INVITE 后发送 PS/RTP 媒体。ONVIF 更适合搜索设备、识别 Profile、获取 RTSP 地址和做基础设备信息处理。
5. 日志、状态和授权
正式商用集成必须把日志、错误码、运行状态、License 状态和授权绑定信息接入自己的产品。这样现场问题出现时,客户界面和日志能解释是网络、协议、码流、权限、授权还是平台环境问题。
StreamCore SDK 授权怎样接入
StreamCore SDK 的授权对象是实际加载 SDK 的客户宿主应用。Windows / Linux 通常按宿主可执行
文件身份确认,Android 按 applicationId,iOS / macOS 按 Bundle ID;签名证书、Team ID、
机器或部署信息可按授权方案增加校验。
授权中心每次签发只有一个 SC-LIC-ENC-v1... 加密值。下载到的 .lic 是只包含这一行正文的
UTF-8 文本文件,“下载文件”和“复制授权文本”是同一份授权的两种交付方式,不会产生两个
License。两种方式进入相同的 AES-256-GCM 解密、RSA-SHA256 验签、应用身份、功能和容量校验。
各平台以文本注册为主:Native C / C++ 调用streamcore_runtime_register_license_text(),Android 调用 registerLicense,Apple 调用registerLicenseText:,.NET 调用 RegisterLicenseText。Native 宿主也可以提供license_path,SDK 读取文件后仍进入同一文本校验流程。
SDK 不会搜索固定系统目录,也不会替客户应用保存授权。移动端从文件选择器返回的 URI / URL
读取完整 UTF-8 文本;桌面和服务端可以沿用自身的受限配置位置。客户授权不应放入公共 SDK
包、AAR 资源、Apple Bundle、NuGet 内容文件、源码仓库、网页或普通日志中。应用每次启动后、
创建媒体会话前重新注册即可。
6. 从 Demo 到正式发布
先在官方 Demo 中换成目标媒体源,验证播放、采集、推流与需要的国标链路,再把已验证的调用顺序、回调和日志接入自己的宿主程序。正式发布前,在目标机器核对 CPU 架构、运行库、显卡驱动、设备权限、安装目录、离线授权加载和异常退出恢复;Demo 成功不等于客户程序已获得正式授权。
Windows 32 位项目再核对一次架构
Qt Demo 在 64 位机器上运行成功,不代表 32 位客户程序能加载相同的库。Windows 32 位项目须使用对应架构的 SDK 包与依赖库;上线前还要在目标进程内确认宿主身份、日志位置、错误回调和硬件解码实际是否可用。
