菜单

流媒体服务

相关源文件

OBS Studio 中的直播服务系统提供了一个用于配置和连接到各种直播平台的框架。它包含了流行直播服务(如 Twitch、YouTube、Facebook)的预定义配置,并允许用户设置自定义的直播目标。该系统还根据所选服务自动应用推荐的编码设置。

架构概述

直播服务系统在 OBS 中作为插件实现,并与核心服务系统集成。它提供两种主要服务类型:常见的预定义服务和自定义直播服务器配置。

来源:plugins/rtmp-services/rtmp-common.c1-200 plugins/rtmp-services/rtmp-custom.c1-50 plugins/rtmp-services/CMakeLists.txt1-60

Service 类型

RTMP 服务插件提供两种主要服务实现

预定义服务

预定义服务功能在 rtmp_common 中实现,并提供对 Twitch、YouTube、Facebook 等直播服务列表的访问。这些服务附带预配置的服务器列表和推荐的编码设置。

预定义服务的主要数据结构

来源:plugins/rtmp-services/rtmp-common.c14-28

自定义直播服务器

自定义直播服务器功能在 rtmp_custom 中实现,允许用户手动输入未包含在预定义列表中的直播平台或私有直播服务器的详细信息。

自定义直播的主要数据结构

来源:plugins/rtmp-services/rtmp-custom.c4-8

服务配置

服务数据格式

预定义服务存储在符合特定模式的 JSON 文件 (services.json) 中。以下是服务条目的结构示例:

来源:plugins/rtmp-services/data/services.json1-207 plugins/rtmp-services/data/schema/service-schema-v5.json1-275

用户界面流程

用户界面中的直播服务配置流程

来源:plugins/rtmp-services/rtmp-common.c642-674 plugins/rtmp-services/rtmp-common.c691-717

协议支持

直播服务系统支持多种直播协议

协议描述用例
RTMP实时消息协议大多数标准直播平台
RTMPS安全实时消息协议需要安全连接的平台(YouTube、Facebook)
HLSHTTP 直播部分直播平台,如 YouTube
SRT安全可靠传输低延迟直播
RIST可靠互联网流传输专业广播
WHIPWebRTC HTTP 摄取协议基于 WebRTC 的直播

协议是根据服务器 URL 自动确定的,也可以在服务定义中明确设置。

来源:plugins/rtmp-services/rtmp-common.c113-133 plugins/rtmp-services/rtmp-custom.c112-126 plugins/rtmp-services/data/schema/service-schema-v5.json19-30

服务更新系统

OBS 可以从远程服务器更新服务列表及其配置。这允许在不更新 OBS 的情况下添加新的直播平台或更新服务器信息。

更新系统会检查当前安装的服务版本与远程版本,并根据需要下载任何更新。

来源:plugins/rtmp-services/CMakeLists.txt3-12 shared/file-updater/file-updater/file-updater.c379-399 plugins/rtmp-services/data/package.json1-11

特定服务功能

部分直播服务有特殊处理

Twitch

  • 支持“自动”选项的动态服务器选择
  • 支持增强广播(多轨视频)
  • 基于地理区域的服务器自动检测

YouTube

  • 支持 RTMP 和 HLS 协议
  • 包括主服务器和备份服务器选项
  • 支持多种视频编码器(h264、hevc、av1)

Facebook

  • URL 验证以确保使用正确的摄取服务器
  • 不同质量级别的分辨率和比特率矩阵

来源:plugins/rtmp-services/rtmp-common.c414-440 plugins/rtmp-services/rtmp-common.c823-861 plugins/rtmp-services/data/services.json6-207 plugins/rtmp-services/data/services.json510-577

编码器设置应用

选择服务后,系统可以应用该服务的推荐编码器设置,以确保最佳的直播性能

服务可以指定

  • 最大视频和音频比特率
  • 所需的关键帧间隔
  • 支持的视频编码器
  • 分辨率限制
  • 高级编码器选项

来源:plugins/rtmp-services/rtmp-common.c721-822 plugins/rtmp-services/rtmp-common.c924-996

连接过程

当直播开始时,系统会

  1. 根据所选服务和服务器确定正确的服务器 URL
  2. 检索直播串流密钥和任何身份验证信息
  3. 根据 URL 或明确的协议设置选择适当的协议
  4. 建立与直播平台的连接
  5. 开始传输编码后的视频和音频数据

对于 Twitch 等特殊情况,系统可以动态选择最佳的摄取服务器。

来源:plugins/rtmp-services/rtmp-common.c824-902 plugins/rtmp-services/rtmp-custom.c80-106 plugins/rtmp-services/rtmp-custom.c144-177