如何快速实现Windows平台屏幕摄像头采集并推送RTMP|轻量级RTSP服务能力?

本文涉及的产品
视觉智能开放平台,图像资源包5000点
视觉智能开放平台,视频资源包5000点
视觉智能开放平台,分割抠图1万点
简介: 一个好的推送模块,除了实现高效率的编码传输外,还要有好的音视频采集机制和灵活的架构支持,便于后期功能扩展,比如实时快照、预览、实时录像等。除此之外,还要有好的交互机制(比如envent callback)、低延迟和长期运行稳定的性能。

技术背景

好多开发者跟我们做技术交流的时候,会问到如何快速实现Windows平台屏幕摄像头推流能力?一个好的Windows推送模块,需要注意哪些技术细节?

技术探讨

本文以Windows平台为例,谈谈我们对这块的理解。大牛直播SDK的RTMP推送|轻量级RTSP服务模块实现主要涉及到SDK的初始化、视频采集设置、音频采集设置、编码设置、推流设置以及实时预览和停止预览等功能:

image.gif


目前,以RTMP推送模块为例,目前我们主要设计支持以下功能:

  • 音频编码:AAC/SPEEX;
  • 视频编码:H.264、H.265;
  • 推流协议:RTMP;
  • [音视频]支持纯音频/纯视频/音视频推送;
  • [屏幕/摄像头]支持帧率、关键帧间隔(GOP)、码率(bit-rate)设置;
  • [屏幕]支持屏幕裁剪,根据帧率和推送分辨率,自动推荐码流;
  • [摄像头]支持摄像头选择、分辨率设置、帧率设置;
  • [摄像头]摄像头支持水平反转、垂直反转、0° 90° 180° 270°旋转;
  • [屏幕]支持DXGI采集设置、启/停用Aero;
  • [音频]采集麦克风;
  • [音频]采集扬声器;
  • [预览]支持推送端实时预览;
  • 支持实时静音、取消静音;
  • [对接服务器]支持自建标准RTMP服务器或CDN;
  • 支持断网自动重连、网络状态回调;
  • 屏幕和摄像头合成/多层合成;
  • 支持窗口采集(一般不建议使用);
  • 支持实时动态水印;
  • 支持实时快照;
  • 支持降噪处理、自动增益控制、VAD端点检测;
  • 支持扬声器和麦克风混音;
  • 支持外部编码前音视频数据对接;
  • 支持外部编码后音视频数据对接;
  • 支持RTMP扩展H.265(需设备支持H.265特定机型硬编码)和Enhanced RTMP;
  • 支持特定机型硬编码;
  • 支持实时音量调节;
  • 支持扩展录像模块;
  • 支持Unity接口;
  • 支持H.264扩展SEI发送模块;
  • 支持Windows7及以上版本。

如果是轻量级RTSP服务:

  • [基础功能]支持Windows平台RTMP直播推送模块常规功能;
  • [音频格式]AAC;
  • [视频格式]H.264、H.265;
  • [协议类型]RTSP;
  • [传输模式]支持单播和组播模式;
  • [端口设置]支持RTSP端口设置;
  • [鉴权设置]支持RTSP鉴权用户名、密码设置;
  • [获取session连接数]支持获取当前RTSP服务会话连接数;
  • [多服务支持]支持同时创建多个内置RTSP服务;
  • [RTSP url回调]支持设置后的rtsp url通过event回调到上层。

1. 模块初始化和环境设置

  • 设置日志路径:在初始化SDK之前,可以调用相关接口设置日志文件的存放路径,以便后续调试和日志分析。
  • 初始化SDK:调用NT_PB_Init()接口完成SDK的初始化。注意,无论后续是否进行多实例推送,Init()接口都仅需调用一次。

2. 视频采集设置

  • 数据源选择:支持从摄像头、屏幕或外部数据源采集视频数据。
  • 参数设置:包括帧率、分辨率、码率、关键帧间隔等。这些参数可以通过SDK接口单独设置,以满足不同的推流需求。
  • 摄像头设置:支持摄像头选择、分辨率设置、帧率设置、水平/垂直翻转、旋转等。
  • 屏幕采集:支持全屏采集或部分区域采集,同时支持DXGI采集设置和启/停用Aero等功能。

3. 音频采集设置

  • 音频源选择:支持采集麦克风音频、扬声器音频或进行混音输出。
  • 编码设置:默认使用AAC编码模式,但也可以选择SPEEX编码模式以获取更低的码率。
  • 音频处理:支持噪音抑制、自动增益控制、回音消除等音频处理功能。

4. 编码设置

  • 视频编码:支持H.264和H.265编码。在Windows 64位系统上,如果推RTMP流,需要服务器支持RTMP H.265扩展(或Enhanced RTMP),同时播放器SDK也需要同步支持RTMP H.265扩展播放。
  • 音频编码:如前所述,支持AAC和SPEEX编码。

5. 推流设置

  • 推流协议:看是使用RTMP还是轻量级RTSP服务。
  • 推流地址:如果是RTMP,可以设置RTMP服务器的推流地址,可以支持同时推送到多个URL(如一个内网服务器,一个外网服务器),如果是轻量级RTSP服务,发布RTSP流后,会回调上来一个可供拉流播放的RTSP URL。
  • 网络状态回调:支持断网自动重连和网络状态回调功能,以确保推流的稳定性和可靠性。

6. 实时预览和停止预览

  • 实时预览:支持在推流前进行实时预览,以便检查视频和音频的采集效果。
  • 停止预览:在推流过程中或预览时,可以随时停止预览以节省系统资源。

7. 其他功能

  • 支持多种操作系统:大牛直播SDK推送端支持Windows 7及以上系统。
  • 集成示例:提供了C++和C#两套接口示例(如WIN-PublisherSDK-CPP-Demo和WIN-PublisherSDK-CSharp-Demo),方便开发者参考和集成。
  • 扩展功能:支持实时快照、实时录像、降噪处理、自动增益控制、VAD端点检测等扩展功能。

总结

一个好的推送模块,除了实现高效率的编码传输外,还要有好的音视频采集机制和灵活的架构支持,便于后期功能扩展,比如实时快照、预览、实时录像等。除此之外,还要有好的交互机制(比如envent callback)、低延迟和长期运行稳定的性能。

相关文章
|
16天前
|
API Docker Windows
2024 Ollama 一站式解决在Windows系统安装、使用、定制服务与实战案例
这篇文章是一份关于Ollama工具的一站式使用指南,涵盖了在Windows系统上安装、使用和定制服务,以及实战案例。
2024 Ollama 一站式解决在Windows系统安装、使用、定制服务与实战案例
|
14天前
|
C# Windows 监控
WPF应用跨界成长秘籍:深度揭秘如何与Windows服务完美交互,扩展功能无界限!
【8月更文挑战第31天】WPF(Windows Presentation Foundation)是 .NET 框架下的图形界面技术,具有丰富的界面设计和灵活的客户端功能。在某些场景下,WPF 应用需与 Windows 服务交互以实现后台任务处理、系统监控等功能。本文探讨了两者交互的方法,并通过示例代码展示了如何扩展 WPF 应用的功能。首先介绍了 Windows 服务的基础知识,然后阐述了创建 Windows 服务、设计通信接口及 WPF 客户端调用服务的具体步骤。通过合理的交互设计,WPF 应用可获得更强的后台处理能力和系统级操作权限,提升应用的整体性能。
34 0
|
16天前
|
网络安全 Windows
在Windows电脑上启动并配置SSH服务
在Windows电脑上启动并配置SSH服务
38 0
|
17天前
|
网络安全 Windows
windows安装ssh服务
windows安装ssh服务
21 0
|
缓存 NoSQL C#
windows下实现屏幕分享(C#)
采用UDP广播进行数据的传输,实现windows下进行低延迟的屏幕共享。 开发语言:C# 第三方组件:Redis   1.实现思路   总体流程图 DGIS.DesktopShare实现windows下屏幕分享低延迟功能,按照服务执行位置由三部分构成:发起端、接收端、缓存端。
2938 0
|
10天前
|
网络安全 虚拟化 Windows
windows 11安装openSSH server 遇到的"kex_exchange_identification: read: Connection reset"问题
windows 11安装openSSH server 遇到的"kex_exchange_identification: read: Connection reset"问题
|
20天前
|
PHP Windows
【Azure App Service for Windows】 PHP应用出现500 : The page cannot be displayed because an internal server error has occurred. 错误
【Azure App Service for Windows】 PHP应用出现500 : The page cannot be displayed because an internal server error has occurred. 错误
|
30天前
|
开发框架 .NET API
Windows Server 2022 安装IIS 报错 访问临时文件夹 C:\WINDOWS\TEMP\3C 读取/写入权限 错误: 0x80070005
Windows Server 2022 安装IIS 报错 访问临时文件夹 C:\WINDOWS\TEMP\3C 读取/写入权限 错误: 0x80070005
64 0
|
1月前
|
Linux Docker Windows
Windows——Docker拉取Windows Server镜像
Windows——Docker拉取Windows Server镜像
98 0
|
2月前
|
弹性计算 持续交付 Docker
阿里云云效产品使用合集之如何部署到阿里云服务器上的 Windows Server 上的 IIS
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。