跑歌利亚之前,随手在游戏里切到一个 DnB 电台,临时排了一个 set,结果一圈跑完,音乐刚好落在最后一个鼓点上。那个瞬间的感觉,比单纯刷一个三星还让人上头。很多《极限竞速:地平线5》玩家都有类似的体验:歌利亚这条赛道实在太长,长到足够听完一整段电子音乐。但大部分人的做法是“随机播放”,真正能实现“跑完刚好听完”的人,往往靠的是对音轨时长、BPM、混音重叠时间的精确控制。
这篇文章把这件事当作一个音频工程问题来拆。它不只讲 DnB 好听,而是会讲清楚三件事:DnB 音乐为什么天然适合长距离竞速;如何根据歌利亚的单圈耗时倒推播放列表结构;以及如何用免费的 Python 库和 ffmpeg 完成 BPM 检测、时长匹配、响度归一化这些底层操作。看完之后,你可以用本地曲库自己做一套“赛道定制 set”,不再依赖游戏内电台的随机播放。
1. 歌利亚赛道与 DnB:为什么这个组合会上头
歌利亚是《极限竞速:地平线5》里最有辨识度的一条赛道。它把墨西哥地图最值得跑的路段串在一起,有高速直道、连续弯道、越野路段,甚至还会遇到暴雨前后的路面变化。单圈长度在二十公里上下,用高组别车辆跑一圈,通常在 10 到 20 分钟之间,具体时间取决于车辆调校、难度和失误次数。这就构成了一个非常特殊的时间容器:它比大多数竞技游戏里的单局时间长,但又比看一集剧集短,正好处在一个“听一整段音乐刚好”的时间颗粒度上。
音乐和驾驶的化学反应,其实不是玄学。人对速度的感知会受到听觉节奏的影响。当音乐 BPM 在 170 到 180 之间时,鼓点密度高,能量输出均匀,驾驶者会不自觉地进入一种持续加速的状态。DnB 音乐的低频贝斯和快速鼓组,会让长直道上的巡航变得更有推进感,也会让连续弯道里的节奏切换更加干脆。尤其是在歌利亚这种长赛道上,一段结构完整的 DnB set 能提供类似“游戏章节”的体验:开头是氛围铺垫,中段是能量高峰,收尾时刚好抵达终点。
很多人以为“跑歌利亚听 DnB”只是一种审美偏好,但从工程角度看,这其实是赛道时长、音乐 BPM、曲目段落结构和混音重叠时间的四层匹配。如果只是随机播放,歌曲会在最不合适的时刻进入低潮段;如果手动切歌,又会因为切歌时机不准而打乱驾驶节奏。真正舒服的体验来自一个预先排好的 set:它知道车手会在第几分钟进入长直道,会在第几分钟遇到最密集的弯道,然后精准地在这些节点上释放能量。
所以这篇文章的价值,不在于推荐某首具体的歌,而在于给你一套可复用的方法:测量赛道时间,分析音频文件的 BPM 和调性,计算需要几首歌,最后用工具把整套 set 排出来。这套方法放在流媒体电台里同样适用。
2. DnB 的核心技术要素:BPM、Breakbeat、Bassline、调性
在动手排 set 之前,先把 DnB 的技术骨架说清楚。DnB 的全称是 Drum and Bass,属于电子音乐的一个重要分支。它的核心特征可以从四个维度来理解。
BPM(Beats Per Minute)是每分钟节拍数。DnB 的典型 BPM 在 170 到 180 之间,也就是每秒大约 3 拍。这个速度比 House 的 120 到 128 BPM 快得多,也比 Techno 常见的 130 到 140 BPM 更高。高 BPM 带来的直接效果,是听觉上的“紧迫感”和“持续驱动感”。在游戏中,这种节奏会自然地匹配高速行驶状态。
Breakbeat 是 DnB 的节奏基础。它不像 House 或 Techno 那样使用稳定的四四拍底鼓,而是使用碎拍节奏,把鼓的采样切分成不规则的排列。最常见的例子是所谓“Amen Break”,一组来源于 1960 年代灵魂乐唱片、后来被电子音乐制作者反复使用的鼓点采样。DnB 制作人会把这类鼓点切片、变调、重新排列,形成高密度的节奏型。对听众来说,这种节奏不会单调,因为每一小节里鼓的位置都有细微变化。
Bassline(贝斯线)是 DnB 的另一个核心。DnB 的低音通常不是简单的一个正弦波,而是经过滤波、失真、调制处理的复杂声音。常见的有 Sub Bass 和 Reese Bass。Sub Bass 强调极低频,用身体去感受;Reese Bass 则是通过多个振荡器互相干扰产生厚实、带有金属质感的低音。这类贝斯线在车载音响和游戏耳机上表现非常突出,这也是为什么 DnB 在赛车游戏里特别“带感”。
DnB 的曲目结构通常非常明确,一般包含 Intro、Drop、Breakdown、Build-up、Second Drop、Outro 这几个阶段。Intro 是节奏逐渐进入的部分,能量较低,适合与前一曲混合;Drop 是主鼓点与贝斯同时进入的部分,是全曲能量最高的时刻;Breakdown 会抽掉鼓组,留下和弦、氛围或人声,让听感短暂放松;Build-up 通过军鼓滚奏或噪声上升重新积攒能量;Second Drop 往往是第二波高潮;Outro 则负责收尾,方便接下一首。这种清晰的结构对 DJ 来说非常友好,因为你知道什么时候进,什么时候接,什么时候让能量喘息。
调性同样重要。DJ 软件里常见的调性标记使用 Camelot 表示法,比如 8A、9A。这套系统把音乐调性映射成数字和字母,方便进行 调性匹配。如果两首歌的调性相同或相邻,混音时更容易协调;如果调性冲突明显,两首歌同时播放会产生刺耳的不和谐音。在玩地平线5时,如果只是在游戏内切歌,通常不需要考虑调性;但要自己排一套连续播放的 set,调性匹配就是影响听感的关键因素。
综合来看,DnB 是一类高度结构化、能量密度高、段落边界清晰的电子音乐。它非常适合被编排成“为赛道定制”的连播序列,因为每一段的起点、高潮和收尾都非常明确,方便与驾驶时间轴对齐。
3. 从赛道时长倒推 set 编排
排 set 的第一步不是选歌,而是先确认赛道需要多长时间。歌利亚的默认圈数通常是一圈,但玩家也可以自定义多圈。无论哪种情况,核心思路是:把赛道耗时作为一个固定长度,把整套 set 的总时长尽量接近这个长度。
假设一首 DnB 曲目的平均长度是 5 分半,而歌利亚单圈需要 15 分钟。如果单纯播放 3 首完整曲目,总长度会超过 15 分钟;但 DJ 在混音时不会把每首歌完整放完,而是会在前一首的 Outro 阶段就混入下一首的 Intro,曲目之间存在 30 到 60 秒的重叠。如果把重叠时间按 40 秒计算,3 首曲目的有效播放时长约为 5.5 分钟乘以 3,减去两次重叠共 80 秒,也就是 15 分钟出头。这个计算结果正好覆盖歌利亚一圈的耗时。
实际编排时,不一定需要把时长做到分秒不差。更合理的做法是让 set 的总时长比赛道时间短 30 到 60 秒,这样在冲线前后还有一点余量。如果音乐比车先结束,最后一段冲刺会显得安静;如果音乐比车晚结束,玩家看到终点线时注意力会被分散。最理想的节点是音乐的最高潮落在最后一个弯道,或者落在冲线后的瞬间。
编排顺序不能只按 BPM 从高到低排,更推荐的是关注能量曲线。开场第一首可以选择 BPM 在 170 左右、Intro 较长、能量逐渐爬升的曲目,对应赛段刚出发时的队伍拉锯;中段选择 Drop 明显、贝斯厚重的曲目,对应长直道和高速弯;最后阶段可以选择结构更紧凑、BPM 稍高的曲目,制造冲刺感。
以下是一个简单的规划表,读者可以参考它来确定自己的 set 结构:
| 阶段 | 预计时间 | 歌曲功能 | 对应赛道状态 | 建议 BPM |
|---|---|---|---|---|
| 开场 | 0-3 分钟 | 氛围铺底,Intro 长 | 起跑、前几个弯道,车流密集 | 170-172 |
| 第一次 Drop | 3-6 分钟 | 能量释放,鼓点进入 | 第一段高速直道 | 172-174 |
| 中段推进 | 6-10 分钟 | 贝斯主导,持续驱动 | 连续弯道与越野路段 | 174-175 |
| 高能冲刺 | 10-13 分钟 | 第二 Drop,鼓点密集 | 最后一条长直道 | 175-178 |
| 收尾 | 13-15 分钟 | Outro 收束或延续 | 冲线、赛后回放 | 170-174 |
这张表里的 BPM 和时长只是示例,不代表所有 DnB 曲目都适合这个序列。真正做的时候,应该用曲目分析工具逐个确认每首歌的 BPM,再按实际数值调整顺序。这也是为什么手动分析文件信息比单纯凭感觉选歌更可靠。
4. 环境与工具准备
排 set 这件事,门槛比很多人想象中低。你不需要昂贵的 DJ 控制器,也不一定非要用专业打碟软件。只要有一台电脑和一副能听到低频的耳机,就能完成从分析到编排的全部工作。
在操作系统层面,Windows、macOS 和 Linux 都可以。音频分析工具里,Python 生态的 librosa 在三个系统上都能运行;ffmpeg 是跨平台命令行工具;DJ 软件方面,Rekordbox 和 Serato DJ Lite 主要在 Windows 和 macOS 上使用,Virtual DJ 的兼容性更广。如果你只是想在赛前做一份连续播放的音频文件,甚至可以不用 DJ 软件,用 Audacity 就能完成拼接。
音频文件格式建议优先使用 WAV、FLAC 或码率不低于 320kbps 的 MP3。DnB 里大量信息集中在低频和瞬态,低码率音频会损失贝斯的质感。所有文件最好在开始分析前统一样式,要么全部是 WAV/FLAC,要么全部是 320kbps MP3,否则后续响度统计和 BPM 分析时容易出现偏差。
工具选择可以参考下面这个对比:
| 工具 | 用途 | 上手难度 | 备注 |
|---|---|---|---|
| librosa | Python 音频分析库,检测 BPM、节拍 | 中 | 适合有编程基础的玩家 |
| ffmpeg / ffprobe | 音频转码、时长查询、响度处理 | 中 | 命令行工具,功能强大 |
| Audacity | 图形化音频编辑与拼接 | 低 | 适合手动拖动、裁剪 |
| Rekordbox | DJ 软件,管理曲库、打点、混音 | 中 | 打碟玩家的主战场 |
| Serato DJ Lite | 免费 DJ 软件,基础混音 | 低 | 适合入门体验 |
| Virtual DJ | 功能全面的 DJ 软件 | 低 | 虚拟键盘操作友好 |
从实际流程来看,P 推荐的组合是:用 librosa 做 BPM 批量检测,用 ffprobe 获取每首歌的精确时长,用 ffmpeg 做响度统一,再用 DJ 软件或 Audacity 完成最终编排。这个流程的好处是每一步都有明确输出,任何一步出错都能单独排查。
5. 核心流程拆解
5.1 收集曲库并统一格式
先确定这次 set 的目标时长。假设歌利亚一圈需要 15 分钟,那么曲库中最好准备 6 到 8 首候选曲目,从中选出 3 到 4 首。选曲时不止看 BPM,还要看曲目的结构与情绪色彩。开场曲要有一个足够长的 Intro,方便慢慢进入状态;中段曲目需要 Drop 清晰,能量充足;最后一首可以选带大段 Build-up 的曲目,让情绪在冲线时到达顶点。
选完之后,把所有文件统一转换成同一种格式。使用 ffmpeg 可以快速批量转换,例如把任意输入文件转成 320kbps MP3:
for f in *.flac; do ffmpeg -i "$f" -b:a 320k "${f%.flac}.mp3"; done这个命令在 macOS 和 Linux 的终端里可以直接运行,Windows 下建议使用 PowerShell 配合 foreach 循环。转换后建议用文件名前缀标记 BPM 和调性,比如174_A_minor_songname.mp3,这比在软件里反复查看元数据更高效。
5.2 分析每首曲目的 BPM 与调性
BPM 可以用 librosa 自动检测,调性则可以用 DJ 软件扫描,或者用专业调性分析工具。入门阶段,先重点关注 BPM,因为对拍是否准确直接决定两首歌重叠播放时会不会乱。
分析时要注意,自动检测出来的 BPM 不一定永远准确。DnB 经常使用 Half-time 节奏,也就是鼓点密度减半但节拍速度不变,此时检测器可能会把 BPM 识别为一半,比如把 174 识别成 87。如果发现检测结果明显低于正常范围,需要手动确认。另一个容易错误的情况是音频里有明显的人声独白或长氛围段,BPM 检测器可能在这些段落产生波动。
5.3 估算赛道时长并规划 set 结构
赛道时长会因车辆、难度和天气状况变化。最准确的方法是在游戏中记录一次完整单圈时间,然后在规划脚本里输入这个时间。如果暂时不方便实测,也可以用 14 到 16 分钟作为区间估算。
拿到赛道时长后,按第 3 章的计算方法确定曲目数量。计算公式可以写成:
曲目数量 = 赛道总时长 /(平均单曲时长 - 混音重叠时长)例如,赛道 15 分钟,单曲 5 分半,重叠 40 秒,那么 3 首曲目大约能填满 15 分 10 秒。这个公式不需要精确到秒,关键是心里先有一个总量概念,避免排完发现差出一整首歌。
5.4 在 DJ 软件中建立播放列表并打点
进入 DJ 软件后,把选好的歌曲加入一个新播放列表,按 BPM 从低到高或者按能量曲线排序。接着做三件事:第一,检查每首歌的节拍网格是否正确对齐;第二,在每首歌的 Drop 开头位置设置 Cue Point,也就是标记点;第三,使用 Key 同步功能把调性调整到合适位置。
如果不想用 DJ 软件,也可以用 Audacity 手动拼接。方法是在时间轴上把上一首的 Outro 和下一首的 Intro 部分重叠摆放,通过音量包络实现淡入淡出。这种方式更费时间,但可以精确定制每一秒。
5.5 排练、录音并验证时长
排完之后不要直接进游戏。先把 set 从头播放一遍,用手机计时,记录每一段 Drop 的时间点。重点检查两处:一是歌曲衔接处是否有拍子错位;二是整个 set 的总时长是否与赛道时间基本吻合。如果发现总时长偏差超过 1 分钟,需要调整曲目数量或重叠时长,而不是硬着头皮用。
有条件的话,把 set 录制成 WAV 文件,再放到游戏后台播放,这里推荐使用本地播放模式,避免网络电台的不可控插入。录制可以用 DJ 软件的录音功能,也可以用 Audacity 的“录音电脑内部音频”。录制文件的好处是,之后可以把整段音频当作一个整体文件来处理,不用再担心现场切歌时机。
6. 完整示例与代码实现
这一节给出可以实际运行的分析与匹配脚本。假设你的电脑已经安装了 Python 3、ffmpeg,并且准备了几首 DnB 曲目。
6.1 使用 librosa 检测 BPM
创建bpm_checker.py:
import sys import librosa def analyze_bpm(audio_path: str): y, sr = librosa.load(audio_path, sr=22050) tempo, beat_frames = librosa.beat.beat_track(y=y, sr=sr) print(f"文件: {audio_path}") print(f"BPM: {tempo:.1f}") return float(tempo) if __name__ == "__main__": for path in sys.argv[1:]: analyze_bpm(path)运行方式:
python bpm_checker.py song1.mp3 song2.mp3 song3.mp3这段代码使用 librosa 的节拍追踪算法,从音频中估计全局 BPM。需要说明的是,librosa 不同版本在beat_track的返回值和参数上可能存在差异,如果脚本报错,可以先升级到最新版本,再根据官方文档调整。
6.2 使用 ffprobe 获取音频时长
DJ 软件里能看到的曲目时长,在命令行里也可以用 ffprobe 获取:
ffprobe -v quiet -show_entries format=duration -of csv=p=0 song1.mp3输出是一串以秒为单位的数字,例如332.45。多个文件可以用循环处理:
for f in *.mp3; do duration=$(ffprobe -v quiet -show_entries format=duration -of csv=p=0 "$f"); echo "$f $duration"; done拿到精确时长后,就可以把它代入下一节的计算脚本。
6.3 计算曲目数量与 set 总时长
创建set_planner.py:
def plan_set(track_seconds: float, avg_len_seconds: float, overlap_seconds: float): print("赛道时长:", round(track_seconds / 60, 2), "分钟") print("平均单曲时长:", round(avg_len_seconds / 60, 2), "分钟") print("重叠时间:", overlap_seconds, "秒") print("---") for n in range(1, 12): total = n * avg_len_seconds - (n - 1) * overlap_seconds diff = abs(total - track_seconds) if diff < 90: print(f"候选曲目数量: {n}") print(f"set 总时长: {total / 60:.2f} 分钟") print(f"与赛道耗时差: {diff:.1f} 秒") print() if __name__ == "__main__": track_min = float(input("请输入歌利亚一圈耗时(分钟): ")) avg_min = float(input("请输入平均单曲时长(分钟): ")) overlap_sec = float(input("请输入混音重叠时间(秒): ")) plan_set(track_min * 60, avg_min * 60, overlap_sec)运行示例:
请输入歌利亚一圈耗时(分钟): 15 请输入平均单曲时长(分钟): 5.5 请输入混音重叠时间(秒): 40预期输出:
赛道时长: 15.0 分钟 平均单曲时长: 5.5 分钟 重叠时间: 40 秒 --- 候选曲目数量: 3 set 总时长: 15.17 分钟 与赛道耗时差: 10.0 秒这个脚本只做一件事:在给定曲目数和重叠时间下,计算总时长是否接近赛道时间。它不会替你判断歌曲好不好听,但能大幅度减少“排完发现少一首歌”的概率。
6.4 使用 ffmpeg 做响度归一化
不同曲目的响度可能差异很大。DnB 里有的老歌整体偏安静,有的新歌压得很响,直接连续播放会在切换时产生明显音量跳跃。推荐用 ffmpeg 的 loudnorm 滤波器做一次响度归一化,目标值可以设为流媒体常用的 -14 LUFS:
ffmpeg -i song1.mp3 -af loudnorm=I=-14:TP=-1.5:LRA=11 normalized_song1.mp3参数含义:
I=-14:整体响度目标为 -14 LUFS。TP=-1.5:真实峰值上限为 -1.5 dBTP,避免削波。LRA=11:响度范围控制,数值越小动态范围越窄。
归一化后的文件会比原始文件更平稳。需要注意的是,loudnorm 单遍处理对某些曲目可能不够精确,追求极限效果时可以使用双遍处理,具体方法可以参考 ffmpeg 官方文档。
6.5 在 DJ 软件中完成最终编排
如果使用 DJ 软件,不需要写代码。推荐流程是:
- 新建播放列表,命名包含目标和时长,例如
Goliath_15min_DnB。 - 按 BPM 从低到高拖入曲目。
- 点击软件的 Beat Grid 调整功能,让每一首歌的鼓点网格对齐。
- 在每个 Drop 起点设置 Cue Point。
- 预览前 30 秒,确认上一首 Outro 和下一首 Intro 的衔接自然。
如果目标是“一键播放”,也可以在 Audacity 里把处理过的音频拼接成一个完整文件,导出为 WAV 或高码率 MP3。这样进游戏前只需要打开一个文件,而不需要在意切歌时机。
7. 运行结果与效果验证
完成编排后,验证分两步:第一步验证音频本身,第二步验证游戏内体验。
音频验证可以先看控制台输出。以 6.1 的脚本为例,运行后你应该能看到类似下面的信息:
文件: intro_track.mp3 BPM: 173.9 --- 文件: main_track.mp3 BPM: 175.2 --- 文件: end_track.mp3 BPM: 177.0如果发现某一首 BPM 与预期差别很大,先检查是不是检测程序把 Half-time 识别成了全速。只需要对比人耳听到的节拍和显示数值是否一致即可。
接着播放整个 set,记录以下三个时间点:
- 第一首曲目的 Drop 进入时间。
- 最后一首曲目的 Build-up 开始时间。
- 整个 set 的结束时间。
把结束时间与歌利亚单圈时间对比,理想状态是结束时间比赛道时间短 10 到 30 秒。因为在实际游戏中,起跑前还有倒计时、车辆调整等时间,如果 set 在发车前就开始播放,这几十秒的余量会被自然消耗掉。
进入游戏后,第一圈先不要追求成绩,而是集中感受音乐与路段的对位关系。比较实用的判断标准是:进入第一个高速路段时,音乐是否处于能量上升阶段;进入连续弯道时,鼓点是否稳定;最后一段冲刺时,音乐是否还有推动力。只要这三个答案都是“是”,这个 set 的编排就是成立的。
如果体验不理想,不要急着换歌。大概率问题出在重叠时间的长度上。重叠时间太长会让两首歌同时播放的部分过于拥挤,听感混乱;太短则会让音乐出现明显断层。建议每次调整 10 到 15 秒,反复对比。
8. 常见问题与排查思路
实际执行中会遇到的问题,远不止“歌不好听”这么简单。下面列出几个高频问题,以及对应的排查方向。
| 问题现象 | 可能原因 | 排查方式 | 解决方案 |
|---|---|---|---|
| 游戏内电台切广告或主播说话 | 使用的是网络流媒体电台 | 查看游戏内电台设置和曲目信息 | 改用本地音乐模式,播放自己导出的音频文件 |
| 两首歌衔接处鼓点明显错位 | BPM 检测不准确或节拍网格未对齐 | 在 DJ 软件中检查节拍网格,听第一拍位置 | 手动调整网格,开启 Beat Sync 或 Key Sync |
| 曲目 BPM 显示为正常值的一半 | Half-time 节奏导致自动检测误判 | 用节拍器或人耳数拍确认 | 手动乘以 2 修正 BPM 值 |
| 切换播放时音量突变 | 曲目响度不一致 | 用 loudnorm 或响度表逐个测量 | 对全部曲目统一做响度归一化 |
| set 总时长比赛道短了 2 分钟以上 | 曲目数量不足或重叠时间过长 | 用 set_planner.py 重新计算 | 增加一首歌,或缩短重叠时间 |
| 低频在游戏音响上轰鸣声过重 | DnB 本身低频能量强,车内音响没有调校 | 对比耳机和车载音响播放 | 适当降低音频文件的低频频段,或调整游戏内音量设置 |
| 录制视频发布后涉嫌版权问题 | 使用了受版权保护的音乐 | 查看平台版权政策,查询音乐授权状态 | 录制视频时使用游戏内“关闭音乐”功能,替换为可商用音乐 |
其中“游戏内电台切广告”是所有问题里最容易破坏体验的一个。游戏内置的流媒体电台即使再稳定,本质上也是实时网络流,无法保证与本地 set 完全同步。所以如果你真的想做到“跑完刚好听完”,唯一稳妥的做法是把完整 set 导出成一个音频文件,在本地播放,而不是依赖游戏内的电台频道。
9. 最佳实践与后续学习方向
到这一步,你已经能通过脚本和软件完成一个完整的赛道定制 set。但长期做这件事,还需要建立一套自己的工程习惯。
第一,给曲库建立规范标签。文件名里统一标注 BPM、调性和情绪标签,例如175_8A_drive_energy.mp3。这样每次排 set 时不需要反复试听,直接按标签筛选就能快速拼出候选列表。第二,响度归一化放在曲库整理阶段完成,而不是每次排 set 前临时处理。一次性把整个曲库的响度统一,后续使用会省掉大量检查时间。第三,保留原始音频文件,不要用归一化后的文件覆盖原文件,因为不同使用场景响度目标不同,比如游戏内播放和视频配乐的目标值可能不一样。第四,注意版权问题。DnB 音乐和游戏画面本身都有版权,录制视频并发布到公共平台前,要确认音乐的授权情况,最安全的方式是使用可商用音乐源,或者录制时关闭游戏内音乐。
如果你对这条路径有更深厚的兴趣,可以往三个方向继续学习。一个是 DJ 混音技术本身,学习对拍、调性混音、效果器使用,这能让你从“排好固定的 set”升级到“现场即兴发挥”。另一个是电子音乐制作,理解 DnB 的贝斯合成、鼓组编排和混音技术,这能反过来提升你听歌和选歌的判断力。第三个方向是游戏音频集成,学习 Wwise、FMOD 等中间件的使用,了解游戏里电台系统、区域音频、动态混音是怎么设计出来的。从“玩家”到“创作者”的转变,往往就从这一步开始。
回到最初那个场景。跑歌利亚之前即兴打一个 set,表面上是娱乐,实际上是在有限的赛道时间里做一次精确的音频编排。它需要你理解赛道时长、音乐结构、BPM、调性、响度和重叠混音,而这些技能放到任何音频工程场景里都通用。下次再准备跑歌利亚时,不妨试着自己排一次,跑完刚好听完的体验,值得被收藏。