跳至主要内容
Owncat cautions you
此页面为非公开页面。搜索引擎不会索引它,仅拥有直接链接的用户可以访问。

所有观众都在经历缓冲

当每个观众同时缓冲时,问题几乎总是在服务器或广播端,而不是任何单个观众的连接上。 按照以下步骤逐项操作。

阅读以下内容后,您可能还会发现浏览OBS 故障排除指南中的有用提示,即使您不使用 OBS。

Check Stream Performance

如果没有人能够观看,直播就没有意义。 The Stream Performance page in the admin, at /admin/stream-health, gives you an overview of some important metrics that may give you an idea if what you’re offering your viewers is leading to a good experience.

管理界面的流性能屏幕,包含视频片段下载时间、播放器网络速度、错误和质量变化以及观众延迟的图表

The page charts four things: Video Segment Download, Player Network Speed, Errors and Quality Changes, and Viewer Latency.

看到错误、低网络速度和您内容的下载时间过长,可能意味着您需要添加更多的视频质量,以改善低带宽观众、移动网络或其他因素的播放性能。

如果您在此页面看到人们在播放您的直播时遇到问题,您可能希望进行故障排除

Note: Only some players report detailed playback metrics themselves, mostly web browsers running the Owncast web interface.

Server-observed playback metrics require Owncast v0.3.0

For players that do not self-report, such as VLC, mpv, Safari and ffmpeg, Owncast records the download speed and duration of video segments it serves, as observed by the server. This only works when Owncast serves the video itself. If your segments are hosted on S3 storage, viewers download them from there and these players are not represented in the metrics.

Analyze your stream with the HLS Analyzer

访问 HLS Analyzer 以协助故障排除。​ 在提示时输入您的流 URL,它是 <yourserver>/hls/stream.m3u8。 点击 Analyze .m3u8

记录下以下值:

Segment Download (sec):下载一个视频片段所用的时间,以秒为单位。 如果下载一个视频片段所需的时间比每个片段的播放时长更长,就会出现缓冲。

Player Buffer (sec):当前可播放的视频时长,以秒为单位。 如果该值降为零,播放器会出现缓冲。

Outage (sec):播放器没有可用视频并进入缓冲的时间。

检查您的 Owncast 服务器硬件利用率

访问管理员中的硬件使用页面,查看您服务器的资源表现。

管理员中的硬件信息页面,显示CPU、内存和磁盘使用情况的仪表和使用情况随时间变化的图表

如果您的Owncast服务器的CPU使用率达到了最大值,观众将看到缓冲,因为服务器无法再跟上。 如果您遇到这个问题,第一步是解决过度的硬件使用

从您的广播软件开始

可靠地广播您的流

确保您的广播计算机可以可靠地直播视频。 如果您的计算机或网络连接在将视频传输到互联网时遇到困难,观看者将会停留在缓冲状态。 如果需要,请降低广播设备上广播软件的比特率、分辨率和/或帧率。

注意任何丢帧情况,并调查造成这些丢帧的原因。 是您的本地 CPU 还是 GPU? 是您的本地网络吗? 还是 Owncast 服务器因硬件使用而丢帧?

例如,如果您的广播计算机的 GPU 达到最大负荷,那么它将无法保持帧渲染的速度。 如果您正在使用 OBS,判断这一点的一种方法是查看应用程序中的“统计信息”,看看是否出现了任何“渲染延迟”。

匹配视频质量

一个简单的CPU使用优化是确保您输入的视频与您最高的输出质量相匹配。

您在Owncast中配置的最高码率、分辨率和帧率质量应与您在广播软件中发送给Owncast的内容相匹配,以减少所需的额外CPU工作量。 从您与广播软件匹配的最高质量开始,然后再往下调整。 当然,对于网络连接较慢或地理位置较远的人,应提供较低的质量。

增加延迟缓冲区

增加延迟缓冲区设置将使用户在实时后面开始,但会给客户端更多可播放的视频,从而避免卡顿。 较低的延迟效率较低,更容易造成缓冲。 在增加延迟缓冲区值后,您需要检查HLS 分析器,以查看是否减少了任何警告。

You can change this value in the admin under Configuration > Video. Latency and video quality changes take effect on your next stream, so restart your stream after changing them.

缺点:增加延迟会使与观众实时互动变得更加困难,因为您执行操作和他们看到之间的延迟增加。

降低您的视频质量

更高质量的视频意味着更大的视频文件需要更长时间来下载。

引用自 OBS Wiki

> 这是新主播常犯的一个错误。 主播们往往会使用尽可能多的比特率,而不考虑这可能对观众造成的影响。 当然,我们理解你希望你的直播看起来很好的。 提高比特率是实现这一目标的简单方法,但必须在合理范围内。 >

最终,虽然你的 1080p 60fps 9mb/s 直播可能看起来很华丽,且 3 个人可以顺利观看,但你的直播提供商或其他观众很可能会遇到问题。

在 Owncast 中减少视频输出变体的比特率和帧率,然后将你的最高质量与广播软件中发送的内容匹配。

每个视频片段越大,下载所需时间就越长。 因此,通常情况下,如果你降低视频质量(比特率和/或分辨率),下载所需时间可能会减少,从而降低缓冲对观众的影响。

当你在服务器上降低帧率和/或比特率时,也应该降低在广播软件中发送给 Owncast 的内容。 这有助于因为:

  1. 它减少了你的互联网连接使用的网络流量,从而降低了上行带宽在流媒体中成为瓶颈的可能性。
  2. 它减少了进入 Owncast 的数据量。
  3. 在 Owncast 中需要处理的对话工作越少,速度就越快。

缺点:降低视频帧率和/或比特率可能会明显降低某些内容的直播质量。

帧率

降低视频的帧率往往是减少缓冲的一种简单方法。 FPS 意为“每秒帧数”,因此如果你将视频帧率从 60fps 降至 30fps,观众下载的视频帧数实际上减半,从而将视频数据减少一半。

缺点:降低帧率可能会明显降低某些内容的直播质量。

使用外部存储

如果核心问题是您的服务器无法处理您的观看者数量,您可以利用第三方对象存储提供商,这样您的观看者将从那里而不是您的服务器下载视频。 Owncast still serves the master playlist, the APIs and chat itself, but the variant playlists and video segments, which make up almost all of the bandwidth, are offloaded to the storage provider.

这使您能够在自己的Owncast服务器上生成视频,但从一个具有无限带宽和容量、且成本低廉的提供商那里提供视频。

With this setup you don't need extra CPU or a more powerful server in order to support more viewers, as the heavy video traffic no longer comes from your server.

了解有关使用Owncast配置外部存储的更多信息

使用 CDN

为了支持全球更多的人,通常下一步是使用 CDN(内容分发网络)。 将 CDN 放在你的视频前面可以使视频由地理位置更接近观众的服务器进行分发。

了解有关在 Owncast 中使用 CDN 的更多信息

迁移到一个位置更居中或由更快的提供商托管的服务器

在地理位置更居中或对外连接更快的服务器上运行 Owncast 可能会更顺利。 如果你的服务器在物理上既远离你(用于推流),又远离你的观众(用于获取视频),那么你的配置可能不是最优的。

如果您在向外部存储上传时遇到缓慢情况

如果您正在使用外部存储,请确保您能够快速上传到该存储服务。 否则,您文件到达所有人用于查看视频的存储提供商的延迟将导致缓冲。

如果您的上传连接较慢,或者您正在上传到距离太远的外部存储服务,或未针对快速上传进行优化,则可能会遇到视频片段上传时间过长的问题,最终无法快速使用它们。

  1. 确定您的存储服务是否有另一个地理位置更接近您的端点。
  2. 使用离您的 Owncast 实例尽可能近(物理上和逻辑上)的存储服务。 例如,如果您在 AWS 机器上,请使用同一区域的 S3 bucket。 如果您在 Digital Ocean,请尝试使用 DO Spaces。 但如果您在 Linode 机器上,可能不要使用 DO Spaces,请改用 Linode Object Storage。 使用 --enableVerboseLogging 运行 owncast,以查看是否收到任何上传缓慢的警告。
  3. 尝试提高服务器提供商的上传速度。
  4. 了解您的存储服务是否提供类似于 AWS 的传输加速 的功能(可能)尝试提高上传速度。
  5. 降低视频质量,以使视频片段更小并减少上传所需时间。

Improve this page

See something missing or incorrect? Edit this page and improve the documentation for everyone.

Contributors to this documentation