Replay Gain 回放增益

http://zh.wikipedia.org/wiki/Replay_Gain

重定向自 Replay Gain
跳转至: 导航 搜索

回放增益(Replay Gain)是一个于2001年7月12日被公开提出的标准,用于将像MP3Ogg Vorbis等格式的数字化音频的可感知响度进行标准化 (Normalize) 处理。

概要[编辑]

使用 foobar2000 0.9进行回放增益扫描的结果

进行回放增益处理的步骤是,首先对整个音频文件进行心理声学分析扫描,以量度它的感知响度和峰值电平。音频文件的原始响度与目标响度(通常定为89分贝的声压值)的差别被计算出来,这个差别称为增益值。典型的做法是,将该音频文件的增益值和峰值电平值存储于文件的元数据中,以使支持回放增益的音频播放器能够自动衰减(或在一些情形下放大)输出,从而在回放不同的音频文件时得到相似的输出响度。这样就可以避免因制作时制定的标准不同而造成在播放不同专辑的音频文件时需要不断手动调整音量的问题。进行回放增益处理的另一个优势在于,音频文件的峰值电平信息也可用于避免响度较高的歌曲产生削波

回放增益的的实现通常也包括向音频文件内加入元数据而不改变原始音频数据的过程。在回放增益标准指定了一个8字节文件头域的同时,许多流行的音频格式利用文件标记(tag)来记录回放增益信息。如FlacOgg Vorbis格式的文件利用 REPLAYGAIN_* 注释域;而MP3文件通常使用ID3v2或APEv2格式的文件标记来记录。

一些传统音频播放器不支持回放增益元数据。使用这些播放器实现增益值校正的变通方法是直接按照回放增益扫描值进行音量调整,或创建一个经过音量修正的音频文件副本。不过在后者的情形下,所进行的处理可能不是无损可逆的。

虽然回放增益英文名称的标准写法曾是“Replay Gain”,但通常也有“ReplayGain”或“replaygain”的写法。

音轨增益和专辑增益[编辑]

回放增益分析可以被执行于单个音轨之上,以便在回放时所有音轨都被赋予相同的音量。

分析也可以以单个专辑为基础进行。在专辑增益分析中,会另外计算出要被整张专辑所共享的峰值和增益值信息。使用专辑增益数值会保留同一张专辑内不同乐曲间的音量差异。

在回放时,假设元数据(metadata)方法被使用,收听者可以决定他们是愿意所有音轨都听起来音量相等(使用音轨增益),还是所有专辑都听起来音量相等(使用专辑增益)。

支持回放增益的音频播放器[编辑]

回放增益扫描器的实现[编辑]

  • MP3Gain:生成元数据。可直接修改原文件并写入元数据的撤销更改信息。
  • AACGain:直接修改原文件并写入元数据的撤销更改信息。
  • VorbisGain:生成元数据。
  • MPCGain:生成存储于文件头的元数据。
  • WaveGain:生成已应用回放增益的文件副本。
  • iVolume:替换iTunNORM元数据文件标记值 (以每个专辑为基础可选), 该值用于iTunesiPod的声音测试音量标准化。只用于 Mac OS X 上。
  • flac和metaflac:编码器可有选择地生成元数据。文件标记器生成元数据。
  • foobar2000:通过内置的插件生成元数据。
  • LAME:编码器在 LAME 文件标记中写入元数据。
  • Sound Normalizer

其他[编辑]

以幅度峰值判断响度并不可靠,因此峰值标准化不能实现可靠的对感知响度的标准化结果。均方根标准化的精确度稍高,但需留意勿引入削波。
  • 音频声级压缩
在使用音频声级压缩的情形下,执行回放时音量可能发生变动,但音频的 动态范围会被压缩。虽然这样对于保持音量始终一致有好处,但这种结果并不总是希望发生。

参见[编辑]

外部链接[编辑]


Replay游戏回放是一个用于在Unreal Engine 4.26中实现游戏回放功能的系统。你可以通过使用Replay System Tutorial提供的教程来实现这个功能。[1] 你需要创建一个新的蓝图类GI_Replay,它继承自MyGameInstance,并重载函数BP on Find Replays Complete 1。此外,还需要创建一个新的控制器类BP_PB_ReplaySpectator,它继承自PC_ReplaySpectator。然后,在第一人称和第三人称游戏模式蓝图中设置重播旁观者为创建的PC_ReplaySpectator。最后,在两人称角色蓝图中开启复制和复制运动,并编写录制逻辑。 为了解决问题,在MyGameInstance.cpp文件中找到“INetworkReplayStreamer::EnumerateStreams”的函数定义,并在FindReplays函数中进行修改。具体修改如下: void UMyGameInstance::FindReplays() { if (EnumerateStreamsPtr.Get()) { EnumerateStreamsPtr.Get()->EnumerateStreams(FNetworkReplayVersion(), FString(), FString(), OnEnumerateStreamsCompleteDelegate); } } 这样就可以解决问题了。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [UE4 Replay重播系统(游戏死亡回放) 制作及问题解决](https://blog.csdn.net/qq_42618180/article/details/118495081)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [【UE4】Replay游戏回放 for UE4.26](https://blog.csdn.net/qq_28660661/article/details/125605426)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值