Bilibili 视频下载后,多数情况下会被拆分为 视频流(mp4 / m4s) 与 音频流(m4a / m4s)。要得到可正常播放的完整视频文件,可以使用 FFmpeg 进行无损合并。
本文介绍完整的下载、合并步骤,并提供常见问题解决方法。
一、准备工作:下载 FFmpeg(Windows)
推荐使用安全、稳定的 Windows 版本:
FFmpeg Windows Builds by BtbN Releases · BtbN/FFmpeg-Builds · GitHub 下载文件:
ffmpeg-master-latest-win64-gpl.zip
下载后完成以下操作:
- 解压文件
- 打开
bin文件夹 - 在空白处按 Shift + 右键
- 选择 “在此处打开 PowerShell 窗口”
你将能够在 PowerShell 中直接运行:
.\ffmpeg.exe
二、Bilibili 的常见视频文件类型说明
B 站视频通常由两种格式组成:
| 类型 | 出现情况 | 描述 |
|---|---|---|
video.m4s | 新版 DASH 格式 | 视频流(无声音) |
audio.m4s | 新版 DASH 格式 | 音频流(无画面) |
.mp4 + .m4a | 一些下载方式 | MP4 = 视频;M4A = 音频 |
如需合并,需要将视频与音频匹配在一起。
三、合并指令(FFmpeg)
1. 合并 mp4(视频) + m4a(音频)
最常见情况:
.\ffmpeg.exe -i "123.mp4" -i "123.m4a" -c copy output.mp4
说明:
-c copy表示无损封装(不做二次压制)- 速度极快,几乎是瞬间完成
2. 合并 Bilibili 的 m4s 文件(video.m4s + audio.m4s)
你的原示例有错误,这里给出正确写法:
.\ffmpeg.exe -i video.m4s -i audio.m4s -c copy output.mp4
3. 多个 m4s 分段(如 0001.m4s、0002.m4s)
如果下载工具拆成多个碎片,需要先合并分段文件。
(1)创建一个 list.txt
内容示例:
file '0001.m4s'
file '0002.m4s'
file '0003.m4s'
(2)合并视频分段
.\ffmpeg.exe -f concat -safe 0 -i list.txt -c copy video.mp4
(3)合并音频(如有多个段)
方法同上。
最后,将音频与视频合并:
.\ffmpeg.exe -i video.mp4 -i audio.m4a -c copy output.mp4
四、常见错误与解决方法
1. moov atom not found
出现示例:
moov atom not found
Invalid data found when processing input
原因
- 视频文件不完整或被错误分段
- m4s 仅是视频/音频的一部分,不是完整 mp4 封装
- 下载工具未正确合并碎片
解决方法
① 使用 concat 合并所有分段文件(最常见)
确保你将所有 *.m4s 按顺序写入:
file 'seg-1.m4s'
file 'seg-2.m4s'
file 'seg-3.m4s'
使用:
.\ffmpeg.exe -f concat -safe 0 -i list.txt -c copy fixed.mp4
② 确认是否使用正确的视频与音频文件
很多人误把 audio.m4s 当成视频,导致合并失败。
③ 下载时选择“合并文件”或“文件原始格式”
如使用 IDM、N_m3u8DL、BBDown 等工具,需确保开启自动合并或选择正确媒体流。
2. “Non-monotonous DTS” / “timestamp” 错误
出现情况:分段合并不规范
解决方法:
.\ffmpeg.exe -i input.mp4 -c copy -fflags +genpts fixed.mp4
3. 文件无法播放或音画不同步
可能原因:
- 视频流被压缩损坏
- 音频与视频不匹配
- 合并时使用了错误的命令
解决:
.\ffmpeg.exe -i input.mp4 -vcodec copy -acodec copy fixed.mp4
如仍无法修复,可尝试重新下载源文件。
五、完整示例:合并 B 站视频(最通用流程)
假设你有以下文件:
video.m4s
audio.m4s
执行:
.\ffmpeg.exe -i video.m4s -i audio.m4s -c copy output.mp4
如是多段:
- 将所有分段加入 list.txt
- 合并视频分段
- 合并音频分段
- 最终再合并音视频








