前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何快速实现Windows平台屏幕摄像头采集并推送RTMP|轻量级RTSP服务能力?

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

原创
作者头像
音视频牛哥
发布2024-08-08 12:33:56
1580
发布2024-08-08 12:33:56
举报
文章被收录于专栏:RTMP推送

​技术背景

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

技术探讨

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

目前,以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)、低延迟和长期运行稳定的性能。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • ​技术背景
  • 技术探讨
    • 1. 模块初始化和环境设置
      • 2. 视频采集设置
        • 3. 音频采集设置
          • 4. 编码设置
            • 5. 推流设置
              • 6. 实时预览和停止预览
                • 7. 其他功能
                • 总结
                相关产品与服务
                实时音视频
                实时音视频(Tencent RTC)基于腾讯21年来在网络与音视频技术上的深度积累,以多人音视频通话和低延时互动直播两大场景化方案,通过腾讯云服务向开发者开放,致力于帮助开发者快速搭建低成本、低延时、高品质的音视频互动解决方案。
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档