# 文件合并

本页说明 DDTV 中"录制文件分与合"的实际行为:什么时候一场直播会录成多个文件、断流重连时文件怎么处理,以及当你确实需要把多个文件合成一个时该怎么办。

# 先说结论:断流重连不会分文件

录制过程中遇到网络波动、推流卡顿导致的断流,DDTV 会自动重连续录,并且重连后是追加写入同一个文件,而不是新建一个文件。也就是说,一场直播中间不管断多少次流,录出来的依然是一个文件,不存在"分段文件需要合并"的问题,也就无需任何合并设置。

# 什么情况下会产生多个文件

只有触发切割时,一场直播才会被录成多个独立文件:

  • 按文件大小或录制时长切割(全局或按房间设置,见自动切割)
  • 直播间标题变更自动切割(需手动开启)
  • HLS 录制中检测到分辨率/推流参数变化(如主播 PK 连线后画面参数改变),为了保证每个文件可正常播放而自动切割
  • 主播停止推流后重新推流(B 站判定为重新开播)后再次触发的录制,属于新的录制任务

这些情况下产生的多个文件是有意为之的:每个文件都是完整可独立播放的,DDTV 不会(也不应该)把它们自动合成一个。

# 我想手动把多个文件合成一个,怎么办

如果你确实需要把同一场直播的多个分段合成一个文件,可以用 ffmpeg 的 concat 方式无损合并(要求各分段编码参数一致):

  1. 在分段文件所在目录新建 list.txt,按顺序逐行写入:
file '分段1_fix.mp4'
file '分段2_fix.mp4'
file '分段3_fix.mp4'
  1. 执行:
ffmpeg -f concat -safe 0 -i list.txt -c copy -bsf:a aac_adtstoasc -y 合并输出.mp4

注意

  • 只有编码参数(分辨率、帧率、编码格式)一致的分段才能用 -c copy 无损合并;参数不一致的分段强行合并会导致视频损坏,需要先转码统一参数。
  • 建议合并 _fix.mp4(修复后)的文件而不是 _original 文件。