# 常见问题

## 如何终止程序？

`ctrl + c`

## 设置修改后什么时候生效？

设置修改后基本上是即时生效的，但是对于正在录制的任务有些例外。

对保存位置或路径模板的修改，不影响当前正在录制的文件，要下一次创建文件才会生效。

对画质的修改，要下一次获取直播流 `url` 才会生效。如果想立即生效，停止录制再重新开始录制就可以。

## 什么是流拼接和无缝拼接？

流拼接就是在录制的过程中出现网络中断时从中断的位置接续上去，以避免录播文件片段化。
而无缝拼接就是把中断处前后重复的数据丢掉然后再接续上，就好像没中断过一样，不会丢失数据。

**注意：只有网络中断后在短时间内重新连接上，中断处前后有重复数据才有可能进行无缝拼接。**

## 怎么知道是否出现了流中断?

如果流出现了中断，不但日志里有记录，程序还会把流中断的详细信息写入到视频文件的元数据里。

可以用 `ffprob` 查看视频文件元数据的 `Comment` 字段。

有些播放器也可以查看。`VLC` 可以按 `ctrl + i` 后查看注释；`PotPlayer` 可以按两次 tab 键查看评论（mp4 没问题，但是 flv 会因为内容过长而不显示~）。

mp4 还在非无缝拼接的位置添加了章节标记，支持章节标记的播放器应该可以看到。

## 如何避免流中断、漏录？

cpu 使用率过高、网络带宽不足或不稳定、硬盘读写慢都会导致流中断，如果不能及时恢复就无法进行无缝拼接进而导致漏录了。所以，只要运行程序的机器配置足够高且网络带宽充足稳定就可以有效避免录制端导致的流中断、漏录。

主播网络或 B 站服务器问题导致的流中断、漏录是无法避免的~

## 为什么录播文件的时长小于直播持续时间？

- 开播后推流有延迟
- 录制过程出现流中断并且未能无缝拼接，漏录了~
- 主播网络不稳定，流中出现了时间戳跳变、反跳，经过修正后时长可能会变短。

## 为什么录制的画质和所设置的画质不符合？

所设置的画质在开播后不一定存在，如果不存在就会以原画代替。

## 为什么按文件大小或时长分割的文件比设置的值小或短？

分割位置必须在关键帧处才不会丢帧。为了确保文件不会超过指定的限制，会在关键帧将超过所设置的值的前一个关键帧处进行分割，所以文件的大小或时长要比所设置的值小一些。

## 为什么没有设置分割文件还是出现了多个录播文件？

为了避免录播文件出现花屏等问题，在直播流参数改变（主播修改分辨率、码率等）时就会自动分割文件。

有时则是主播网络很不稳定造成多次下播上播导致的。

## 为什么设置了转换为 `mp4` 格式，但却没有进行转换？

请确保正确安装了 `ffmpeg`，可以在终端里正常使用 `ffmpeg`。

## 怎样才算是旧录播文件？

修改时间和访问时间都超过 24 小时才会被当成旧录播文件在空间不足时被删除。

## 空间不足时是怎样删除旧录播文件的？

删除文件是按修改时间和访问时间的先后进行的，修改时间或访问时间较早的先被删除，直到可用空间不少于所设置的阈值为止。

## 支持录制付费直播吗？

没试过~ 可以尝试在网络请求设置里填写已付费账号登录后的 Cookie

## 为什么要重复造轮子？

因为现有工具大多都是直接下载流或调用 ffmpeg 进行录制，不能很好地解决漏录、数据损坏、录播文件片段化等录播问题。尤其录制的直播很不稳定，结果很不尽如人意。
