为什么我的 "ffmpeg -ss -to" 拆分结果有音频但没有视频?
Why do the results of my "ffmpeg -ss -to" split have audio but no video?
我正在尝试使用 ffmpeg 将剪辑分成短间隔(我正在从 csv 中读取)。我使用的命令如下所示:
ffmpeg -i filename.mp4 -ss 00:00:00.030000 -to 00:00:02.030000
-pix_fmt yuv420p -c copy new_filename.mp4
这成功地将父 mp4 拆分为许多较小的 mp4,但较小的文件丢失了部分或全部视频。他们中的大多数最终只是音频。有些有视频 - 但只有大约一半的剪辑(其余部分是黑色的)。音频始终存在。知道为什么会发生这种情况吗?
注意事项:我使用的是 ffmpeg 3.0.2。此外,我将此命令创建为 Python 列表,并通过以下调用 运行 创建它
subprocess.run(cmd, stderr=subprocess.STDOUT)
Mulvya 和 szatmary 的评论回答了这个问题。发布这些作为结束问题的答案。
"The OP is streamcopying. To the OP, if you change -c copy to -c:a
copy, it will work." –Mulvya
"-c copy will not work because there are no keyframes in that time
range. Your must reencode." –szatmary
Mulvya 建议的解决方案是添加流说明符。我这样做了,得到了我想要的结果。这里有文档:https://ffmpeg.org/ffmpeg.html#Stream-specifiers-1
我正在尝试使用 ffmpeg 将剪辑分成短间隔(我正在从 csv 中读取)。我使用的命令如下所示:
ffmpeg -i filename.mp4 -ss 00:00:00.030000 -to 00:00:02.030000
-pix_fmt yuv420p -c copy new_filename.mp4
这成功地将父 mp4 拆分为许多较小的 mp4,但较小的文件丢失了部分或全部视频。他们中的大多数最终只是音频。有些有视频 - 但只有大约一半的剪辑(其余部分是黑色的)。音频始终存在。知道为什么会发生这种情况吗?
注意事项:我使用的是 ffmpeg 3.0.2。此外,我将此命令创建为 Python 列表,并通过以下调用 运行 创建它
subprocess.run(cmd, stderr=subprocess.STDOUT)
Mulvya 和 szatmary 的评论回答了这个问题。发布这些作为结束问题的答案。
"The OP is streamcopying. To the OP, if you change -c copy to -c:a copy, it will work." –Mulvya
"-c copy will not work because there are no keyframes in that time range. Your must reencode." –szatmary
Mulvya 建议的解决方案是添加流说明符。我这样做了,得到了我想要的结果。这里有文档:https://ffmpeg.org/ffmpeg.html#Stream-specifiers-1