Bilibili 视频音频合并教程(FFmpeg 实用版)

0
20

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

下载后完成以下操作:

  1. 解压文件
  2. 打开 bin 文件夹
  3. 在空白处按 Shift + 右键
  4. 选择 “在此处打开 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

如是多段:

  1. 将所有分段加入 list.txt
  2. 合并视频分段
  3. 合并音频分段
  4. 最终再合并音视频

发布回复

请输入评论!
请输入你的名字