跳到主要内容
OT
OBS 与直播技术

跨境直播的 OBS 推流参数怎么设

关键帧、码率、编码器、采样率四项分别该取什么值,依据是哪家官方文档,以及本机同时跑翻译管线时编码器该怎么选。

研究所编辑部约 6 分钟读完
示意图:一条长通道里等间距排列着相同的小方块,每隔一段立起一根较高的标记柱,通道中段有一处收窄

跨境直播的推流参数和国内直播只有一处本质差别:你的机器同时还在跑一条翻译管线。除此之外,关键帧、码率、速率控制这些参数的取值依据,各家平台官方文档写得很清楚,不需要凭感觉调。

先给结论

参数 取值 依据
编码器 优先硬件编码(NVENC / AMD / QuickSync / VideoToolbox) 把 CPU 留给识别与合成
速率控制 CBR Twitch 官方推荐所有主播使用 CBR
码率 稳定上传速度的 75% 起步 OBS 官方故障排查文档
关键帧间隔 2 秒 YouTube 官方推荐 2 秒、不超过 4 秒
采样率 全链路统一 避免重采样与长时间漂移

下面逐条说为什么,以及跨境直播在哪里要单独处理。

关键帧为什么必须手动填 2

留 0(自动)是最常见的一处错配。 直播平台把你的推流切成分片再分发,每个分片必须以关键帧开头才能独立播放,关键帧间隔太长会让分片边界对不齐,观众切换清晰度时就会卡一下。

各家平台的官方口径高度一致:

  • YouTube 在编码器设置文档里写的是「Recommended 2 seconds,Do not exceed 4 seconds」;
  • Twitch 的 Broadcasting Guidelines 里,从 720p30 到 1080p60 的每一组规格,Keyframe Interval 都是 2 seconds;
  • TikTok 是个例外:它的官方帮助文档没有公布 RTMP 摄入的编码规格,只说明 LIVE Studio 会根据你的硬件和网络自动选择参数。也就是说你在网上看到的 TikTok 推流参数表,基本都是第三方经验值而不是官方规格。

这一点值得单独说明:用 OBS 推 TikTok 时,没有可引用的官方编码规格。 保守做法是按 YouTube 与 Twitch 的公共交集来配——CBR、2 秒关键帧、H.264——这套参数在所有基于 HLS 分发的平台上都成立。

码率:先算上传速度,再看平台上限

OBS 官方的故障排查文档给的起点很明确:把码率设成稳定上传速度的 75%。留出的这 25% 不是浪费,它要吸收重传、突发和其他设备抢带宽。

「稳定上传速度」指的是在直播时段实测的值,不是运营商标称值,也不是随手测一次的峰值。跨境直播如果走了代理或专线,这个数字还会随线路波动,更需要实测。

为什么是 CBR 而不是 VBR。 Twitch 的官方说明给了具体机制:VBR 在画面静止时码率会显著下降,等画面动起来码率突然拉高,很多观众端的连接扛不住这个突变,表现为缓冲和丢帧;同时 VBR 在跨 ISP 传输时容易触发「broadcast starvation」。视频走的是 TCP,突发流量本来就是它最不擅长的场景。

跨境直播特有:编码器要把 CPU 让出来

这是唯一一条国内直播用不上的建议。

普通直播里选 x264 还是硬件编码,主要看画质与 CPU 占用的取舍。跨境直播多了一个竞争者:语音识别和语音合成也在抢 CPU。x264 在 medium 这类较慢的预设下会吃掉大量 CPU 时间,翻译链路被挤压时的表现不是画面卡,而是识别结果迟迟不返回、译音越拖越晚——很多人会误判成「翻译服务变慢了」。

硬件编码器把这部分负载移到显卡的专用编码单元上。TikTok 在 LIVE Studio 的官方说明里也是同一个理由:推荐硬件编码器,因为它用 GPU 降低 CPU 负载。

画质差距没有想象中大。Twitch 官方给出的对照是:Turing 架构(RTX 20 系与 GTX 1660/Ti)之后的 NVENC 通常优于 x264 的 fast 预设,与 medium 相当;更老的 Pascal、Kepler 大致相当于 veryfast / faster。也就是说,对绝大多数带货直播的画面内容,硬件编码带来的画质损失远小于 CPU 争抢带来的翻译延迟。

音频这一路才是跨境直播的重点

画面糊一点观众还能看,译音出问题这场直播就白播了。

采样率要全链路统一,取哪个值反而是次要的。 OBS 在 Settings → Audio 里设一个采样率,麦克风、虚拟声卡的输入输出设备也应该是同一个值。不统一的后果是 OBS 要做重采样,既有额外开销,也可能在长时间直播后出现音画漂移。虚拟声卡这一路尤其容易被忽略——它在系统里是独立的录制/播放设备,有自己的采样率设置。

顺带纠正一个流传很广的说法:「直播必须用 48 kHz」并不是平台的统一要求。 YouTube 官方的推荐高级设置里,立体声对应的是 44.1 kHz,48 kHz 是给 5.1 环绕声的;Twitch 官方则直接写「Sampling frequency: any (AAC)」。所以真正要做的是让整条链路对齐,而不是照抄某个数字。

音频码率不要照抄画面的思路往高了填。 Twitch 官方给的是 AAC 最高 160 kbps,为最大兼容性推荐 96 kbps;YouTube 官方推荐立体声 128 kbps。译音是合成语音,本身频谱比真人干净,在这个区间里再往上加收益很小。

单声道值得考虑。 如果译音只从虚拟声卡的一个通道进来,OBS 的音量表只会有一条亮,观众会只从一只耳朵听到译音。OBS 的官方混音器文档里对应的处理是在高级音频属性里打开 Downmix to Mono。这个故障非常隐蔽,戴一只耳机监听时根本发现不了。

卡顿时先看统计面板的哪一栏

OBS 把三种「掉帧」分得很清楚,三者的原因完全不同,官方帮助文本里的对应关系是:

计数器 含义 该动哪里
Dropped Frames (Network) 网络送不出去 降码率、改有线、开动态码率
Frames missed due to rendering lag 显卡合成不过来 减少源、降画布分辨率、关预览
Skipped frames due to encoding lag 编码器跟不上 换更快的预设或改用硬件编码

跨境直播里第三项特别值得盯:如果编码丢帧和译音延迟同时变差,几乎可以确定是 CPU 争抢,而不是翻译服务的问题。换硬件编码器通常能一次解决两个现象。

如果三个计数器都是零,观众仍然反馈卡,那就不是你这一端的问题。OBS 官方把这种情况单独写成了「Stream Buffering」一类,原因在观众端的设备和网络,可做的事只有降码率、以及尽量待在平台推荐的参数范围内。

OBS 里还有几个和网络相关的开关

都在 Settings → Advanced → Network 下,OBS 官方的连接故障排查文档逐条列了它们的用途:

  • Enable network optimizationsEnable TCP pacing(仅 Windows):部分用户反馈能改善丢帧和断连,同时会在日志里写入更多排查信息;
  • Bind to IP 应保持 Default,除非你确实要指定某块网卡;
  • IP Family 可以试着改成 IPv4 Only,官方的说法是如果没有区别就退回默认的 IPv4 and IPv6;
  • Dynamically change bitrate to manage congestion (Beta) 在拥塞时降码率而不是丢帧,但官方提醒它不解决根因,画质也会跟着下降。

跨境直播的链路通常比国内长,这几个开关比在国内更值得试一遍。但顺序是先实测上传速度、再降码率,最后才动这些。

怎么自己验证

开播前跑一遍,全程不超过十分钟:

  1. 在直播时段实测上传速度,取多次结果里偏低的那个,乘 0.75 得到码率;
  2. 按上面的表配好四项参数,打开 Stats 面板;
  3. 打开翻译管线,正常讲五分钟,同时录本地文件;
  4. 看三个计数器有没有增长,尤其是编码丢帧;
  5. 回放本地录制,确认译音在两个声道里都有、没有爆音。

第 3 步必须带着翻译管线一起跑。只测 OBS 空推流是测不出跨境直播真正的瓶颈的——那条管线才是这台机器上最大的变量。

操作步骤

  1. 1

    把编码交给显卡

    在 Settings → Output 里把 Output Mode 切到 Advanced,Streaming 标签下的 Encoder 选显卡的硬件编码器(NVIDIA NVENC、AMD、QuickSync 或 macOS 的 VideoToolbox)。只有在完全没有可用硬件编码器时才退回 x264。

  2. 2

    速率控制选 CBR,码率按上传速度算

    Rate Control 选 CBR。OBS 官方的故障排查文档给的起点是把码率设成稳定上传速度的 75%,剩下的余量留给突发和重传,不要按平台公布的上限去填。

  3. 3

    关键帧间隔手动填 2

    把 Keyframe Interval 填成 2 秒,不要留 0(自动)。YouTube 官方推荐 2 秒且明确要求不超过 4 秒,Twitch 公布的全部编码规格也都是 2 秒。

  4. 4

    让整条音频链路使用同一个采样率

    在 Settings → Audio 里选定一个 Sample Rate,然后把系统里麦克风、虚拟声卡的录制与播放设备都改成同一个值。具体取哪个值不如一致性重要,采样率不一致会带来重采样开销和长时间运行后的漂移。

  5. 5

    网络不稳时开动态码率

    在 Settings → Advanced → Network 勾选 Dynamically change bitrate to manage congestion (Beta)。OBS 官方文档明确说明这只是让拥塞时降码率而不是丢帧,并不解决网络本身的问题。

  6. 6

    开播前用统计面板确认三个计数器

    打开 Stats 停靠面板,空跑五分钟,确认 Dropped Frames (Network)、Frames missed due to rendering lag、Skipped frames due to encoding lag 三项都不增长,再开始正式推流。

常见问题

关键帧间隔留 0(自动)会怎样?
自动值通常远大于 2 秒,平台切换清晰度时会出现明显卡顿。YouTube 官方文档推荐 2 秒并要求不超过 4 秒,Twitch 公布的所有编码规格也都写的 2 秒,手动填 2 是最省事的做法。
码率是不是越高越好?
不是。码率超过稳定上传速度就会开始丢帧,而且观众端设备和网络也不一定接得住。OBS 官方给的起点是稳定上传速度的 75%,平台公布的最大值是上限不是目标值。
一边跑翻译工具一边用 x264 编码可以吗?
可以但不推荐。x264 吃 CPU,而语音识别与语音合成同样在抢 CPU,两者叠加时最先出问题的往往是翻译链路而不是画面。有硬件编码器就用硬件编码器。
观众说卡,但 OBS 里一帧都没丢,是什么原因?
说明问题不在你到平台这一段。OBS 官方把这种情况单独归类为观众端缓冲,常见原因是码率超出了观众设备与网络的承受范围,或者平台没有为你的直播间做转码。
关键词OBS 推流设置关键帧间隔CBR硬件编码跨境直播

查看本页 Markdown 原文