流媒体传输质量指南

原文:
https://tl.net/forum/tech-support/220584-stream-quality-guide

该文将尝试解释哪些因素会影响流质量,并希望对配置流时应注意的内容提供一些见解。 由于要考虑的因素太多,因此我不提倡任何特殊的流式传输方法,但是希望这可以提供一些有关配置事物时应注意的基本信息。 希望这对某人有用!

流式传输时有三个主要因素:

  • 质量
    这就是您的视频流对观众的外观。

  • 带宽
    为了获得最佳效果,流媒体需要较高的上传带宽。

  • CPU使用率
    如果要在与流媒体播放同一台PC上播放SC2,则必须平衡它,以便流媒体和SC2都不会因为缺乏CPU功能而遭受痛苦。

质量

重要的是要注意,质量与任何单一因素都不直接相关,例如,将分辨率提高到1080p并声称可能的最佳质量根本就不是事实。 串流的外观好坏涉及很多因素。 这里有一些:

编解码器

大多数流软件使用H264或VP6。 编解码器是一款软件,可将50MB+秒的原始图像数据转换为适合Internet数据速率的压缩视频格式。 H264/MPEG4是更现代的编解码器。 但是,编解码器的编程方式有很多实现方式和变化形式,因此尽管使用相同的标准,某些编码软件还是比其他编码软件更好。

使用H264的流行软件包括Adobe Flash Media Encoder和XSplit。 XSplit使用被认为是最高质量的x264编码器,而FMLE使用MainConcept。 VP6是较旧的编解码器,Adobe Flash Media Encoder的用户可以使用。 为了获得相同的质量,它需要更高的比特率(更多上传),但具有一些优势,因为它比FME的H264更快地从场景更改中恢复。

在编解码器部分也值得一提(但实际上这是一个软件问题),由于XSplit的缩放错误,XSplit的内部源缩放总是会比Adobe FME流产生更模糊的输出(嗨,SplitMedia,请解决此问题,我已经已发送大约三个错误报告!)。 如果流中有文本或其他尖锐元素,这将变得非常明显,这也是我个人不喜欢XSplit的主要原因之一。 更新:只要您的输出分辨率与输入分辨率匹配,此错误就不再存在。

影格速率/Frame Rate

帧速率越高,编解码器将需要处理的帧越多,流看起来就越平滑。 一个好的目标帧速率约为25FPS。 一些彩带使用20 FPS,只要始终保持20FPS,就可以了,但是低于20FPS时,您的视频流会变得明显地干涩且令人不快。 超过25FPS并不会带来很多好处,同时需要额外的CPU进行编码。

帧速率的主要目标是一致性。 一致的帧率是好的,上下跳动的帧率非常引人注目并且使观看者感到烦恼。 帧速率与编解码器直接相关-如果遇到麻烦,减少CPU使用率的最快方法是降低帧速率,因为帧速率降低20%会使编解码器的工作量减少20%。

分辨率/Resolution

尽管您可能认为分辨率越高,质量就会越好,但这不一定是正确的。 很少有人会拥有CPU和Internet带宽来以适当的帧速率支持高质量的1080p(1920x1080)流。 在稳定且一致的帧速率下具有较低的分辨率流比尝试尽可能提高分辨率要好得多。

编解码器以可变的比特率工作,并且更复杂的场景可能需要更多时间进行编码。 虽然在查看SC2菜单时,流在1080p @ 30FPS时可能看起来不错,但要进行一场艰巨的战斗,由于编解码器无法跟上所有数据,您可能会发现流变成幻灯片显示。

尝试选择精确缩小2:1的尺寸以获得最佳质量,例如,如果您的SC2为1680x1050,请尝试以840x525进行流式传输。 要更改分辨率,您可以将SC2设置为以较低的分辨率播放,或者将流软件设置为调整输入/输出的大小。 通常,尽管您希望SC2以您的本机监视器分辨率以流的全尺寸或半尺寸分辨率运行。

比特率/Bitrate

比特率是编解码器将尝试产生的大约kbps数量。 但是H264格式是可变比特率格式,因此,即使您指定2000kbps,如果编解码器尝试对某些内容进行编码,并且恰好在该特定瞬间以2500kbps的速率输出,它将使用或丢弃它。 重要的是,选择一个比特率要远低于Internet的最大上传速度,以解决此类突发事件。 如果您以1900kbps的速度上传和传输2mbps的视频,那么突然出现2500kbps的突发视频将导致帧滞后或丢帧(两者均同样糟糕)。

如果您的上游永远无法恢复并“赶上”流中的实时点(例如,平均2.1mbps尝试从2mbps的上游流出),则滞后可能会累积到这一点。 丢帧也很糟糕,就像丢下关键帧一样,生成另一个关键帧可能需要5到10秒钟,在此期间,观众将没有视频。

另一方面,比特率太低,您的流看起来很糟糕。 编解码器无法正常工作-例如,不可能将1920x1080 @ 25FPS转换为看起来不错的1mbps流。

以上四个因素是设置视频流时要考虑的最重要的事情。 一些彩带更喜欢较低帧频的高分辨率。 其他人则采取更为保守的方法,并使用具有高帧速率和比特率的低分辨率。 首先,这实际上是一个很好的选择,因为它可以确保没有比特率质量问题,并且通常不占用太多CPU。

带宽

我在质量部分已经谈到了带宽的主题,但是为了清楚起见,它应该在自己的部分中讨论。 首先,流媒体对您的连接很难。 任何数据包丢失或抖动都可能导致您的数据延迟到达流传输提供者,由于时间戳记延迟而将其丢弃。 更糟糕的是,重传到备份流缓冲区并且没有新数据传给查看者的地步,吞吐量可能会降低。

确定比特率时,一个好的经验法则是保留大约25%的上游闲置空间。 如果您的上传速度为2mbps,则将流比特率设置为1500kbps。 这为偶尔来自编解码器的数据突发以及诸如任何VoIP软件以及SC2本身之类的后台应用程序留有足够的空间。

确定上游速度时,进行实际测试很重要。 如果您访问www.speedtest.net并选择离您最近的服务器,那么您将无法获得实际的结果。 对于美国的用户,我建议选择东海岸或西海岸的服务器,以距离您最远的服务器为基准。 如果您仍在使用WindowsXP,则将需要进行一些注册表调整,以使延迟较高的站点获得良好的性能,但这不在本指南的范围内。

视您的连接类型而定,随着更多用户上线,您的上载速度可能会在一天中有所变化。 拥挤的有线网络,尤其是使用无线网络可能是一个大问题。 通常在流式传输时运行测试以获得准确的结果。 最后要记住的一点是,某些ISP提供了“增强”技术,该技术在传输的前X秒钟内会稍微放宽上传/下载限制,以在速度测试中提供更好的外观。

对于那些每月连接传输量有限的封顶连接用户,您可能希望避免常规流式传输。 它会很快增加很多带宽,并可能使您从ISP处花费额外的费用。

最后,请记住,将比特率设置为X时,观众需要大约X+500kbps才能获得可靠的流媒体体验。 如果您可以10000kbps的速度上传,那太好了,但是不要期望有很多人能够观看您的视频流。 (旁注:如果您是合作帐户,Justin.TV提供了将流转换为较低分辨率/比特率的服务。有关详细信息,请与他们联系。)

这是一些非常粗略的示例比特率,您应该在25FPS时寻找高质量的流(这些比特率将根据所使用的编码器和其他因素而有所不同,例如,使用XSplit,您可以以较低的比特率获得相同的质量):

480p(720x480):750-1000kbps
720p(1280x720):1500-3000kbps
1080p(1920x1080):3000-5000kbps

你们大多数人所玩的分辨率都无法与其中之一完全匹配,因此您可能希望将视频流的大小缩小到匹配的宽高比。

CPU使用率

这里是有趣的部分。 流式传输需要大量的CPU。 SC2也是如此。 如果流媒体质量太高,流媒体和游戏都将开始滞后。 您需要在质量和流对游戏性能的影响之间找到平衡。

首先,如果您的处理器少于四核处理器,那么您最好还是暂时不要以任何质量的流媒体播放。 SC2本身可以轻松实现几乎双核CPU的最大化,而没有流媒体的空间。

理想的CPU:
酷睿i5 2500k / i7 2600k
酷睿i5 / i7 8xx / 9xx系列
AMD Phenom X4 / X6

不幸的是,包括旧版Core 2在内的所有这些都显示了它们的年龄,您将无法获得最好的结果。 流和SC2完全依赖于CPU,您的图形卡对事物的影响极小,因此请不要外出购买昂贵的GPU,以希望它能够解决问题。

您选择的编解码器(受您的流式传输程序的影响)对CPU的影响很大。 Adobe的Flash Media Encoder具有标准的H264编码器,但它占用大量CPU。 一个好处是多线程,这意味着它可以充分利用多个内核并从i7 CPU中受益。 另一方面,XSplit产生更高质量的输出, 但似乎不能很好地受益于多核,因此您的CPU速度成为一个因素(2500k和2600k如此出色的一个原因是它们可以通过超频轻松达到4 + GHz)更新:最新的XSplit版本现在可以正确使用多个内核。 还有其他程序,例如VLC(非常难设置)和Dynno(遭受宏块伪影的困扰),但是大多数人会关注的两个主要程序是XSplit和FME。

将SC2放入流式程序的方式也对CPU使用率和游戏延迟产生了很大影响。 大多数屏幕捕获选项(例如XSplit的内部捕获和VHScrCap)都使用大量的CPU,并且依赖GDI,即使您的CPU数量未达到最大值,GDI也会导致游戏延迟。 到目前为止,最好的选择是使用DXTory,它可以通过拦截DirectX调用将屏幕直接从视频卡中剥离出来。 与此相关的开销几乎为零,但是DXTory不是免费的-它将使您回到50美元左右,并且不允许您捕获游戏以外的任何内容。 下一个最佳选择似乎是SCFH,它是基于GDI的屏幕截图。 即使您使用XSplit,也不必强制使用XSplit的内部捕获-您可以轻松添加DXTory或SCFH的摄像机源。

XSplit之类的程序提供了一个虚拟集,您可以在其中添加叠加和其他效果。 请记住-特别是在使用透明度的情况下-这些影响的成本可能会增加CPU使用率。 高质量的调整大小对于CPU来说也是一项昂贵的操作,因此,为了尽可能减少CPU使用率,请尝试将屏幕大小与流大小匹配(XSplit用户可以忽略这一点,因为XSplit似乎可以缩放所有内容,而不管其大小是否与输出大小匹配)。 。

一些指南建议设置亲和力,以便您的流式程序和SC2在单独的CPU内核上运行。 我真的不建议这样做,因为它只是限制性能,如果您想确保SC2不会滞后于流,只需在任务管理器中将SC2.exe设置为“高优先级”即可。

如果您使用Vista / Windows 7来做的另一件事是禁用Aero(花式半透明桌面效果等)。 为此,请右键单击流式程序或SC2的快捷方式,然后在“兼容性”下,选中“禁用桌面合成”框。 使用GDI捕获方法时,这尤其有帮助。

最后的想法
我喜欢在XSplit上使用Adobe FMLE的原因之一是状态窗口。 XSplit为您提供了几乎为零的反馈-它不会告诉您当前的FPS,是否有本地缓冲,是否有任何输入或输出丢失的帧等。这很不错-尝试一下设置,看看是否您的流滞后,如果您只是缓冲,请重新启动并希望它更好。等等。另一方面,FMLE为您提供了非常有用的统计信息-丢帧,当前比特率(请记住它是可变的)等等。

输入下降意味着您的捕获源(例如DXTory或SCFH)无法提供足够快的输入-这可能发生在大型战斗中,其中SC2 FPS下降到所需的流FPS以下。 输出丢失是要注意的-这意味着输出帧被丢弃,因为它们无法及时编码。 任何数量的输出下降都意味着您的流将滞后,您应该重新调整设置。 如果您看到发布缓冲区或帧丢失为非零值,则表明您的上传速度太慢或与流服务的连接失败。

请记住要以实际的负载进行测试-编解码器很容易查看SC2菜单,因此编解码很容易,并且不会提供准确的反馈。 观看一些重播并四处移动摄像机(但不要以2倍或更高的速度运行重播,因为这会比实际游戏消耗更多的CPU)。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值