嘿,我想将一个一秒长(25fps)的视频分割成 25 个单独的视频文件。我知道我可以将其分割成 jpeg,但我需要保留音频。所以当我重新编译时音频仍然存在。
这是我试图仅抓取第一帧(带音频):
ffmpeg -i 1.mov -vcodec mjpeg -qscale 1 -an -ss 00:00:00:00 -t 00:00:00:1 frame1.mov
但是好像不行。我假设 ffmpeg 支持这种格式的时间戳是错误的吗?时:分:秒:f?
谢谢
最佳答案
您假设 ffmpeg
支持该格式的时间戳是错误的,但这不是唯一的问题
ffmpeg
不支持您正在使用的时间格式。选项可以是时间(以秒为单位),也可以是hh:mm:ss[.xxx]
(两个冒号和一个点,而不是三个冒号)。- 您的示例代码专门剥离音频。这就是
-an
的作用。 - 当您真正需要帧时按时间分割并不是一个好主意。尽管由于音频帧不太可能与视频帧 1:1 匹配,但这可能是最好的选择。
- 最重要的是,大多数视频和音频编解码器都是有损的,因此不适合分成很多部分然后重新组合在一起。为了在不严重影响质量的情况下做到这一点,您需要首先将视频和音频转换为原始格式,对其进行操作,然后在完成您想要对片段执行的任何操作后重新转码为压缩格式。您仍然会失去一些质量,但不会像其他情况下那么严重。
关于ffmpeg分割成帧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2691996/