我知道
tpad
过滤器具有 stop_duration
参数,可将帧添加到视频末尾。当输入长度未知(但小于 5 秒)时,如何确保生成的视频长度为 5 秒?
添加修剪过滤器以限制总持续时间,例如
ffmpeg -i in -vf tpad=stop=-1,trim=end=5 out
正确的方法是先制作一个相同规格的填充视频,然后将视频连接到您的视频,最后将视频剪切到所需的长度。请注意,所有步骤都可以在重新编码或不重新编码的情况下完成。
在这种情况下,即使没有重新编码,从右侧修剪也是精确的(直到您想要的任何帧)。所以最好的方法是在不重新编码的情况下进行连接和修剪。
修剪:
ffmpeg -i input_file -c copy -ss start_time -to end_time output_file
连接(Python):
import subprocess
video1 = 'path/to/your/video1.mp4'
video2 = 'path/to/your/video2.mp4'
output_file = 'output_concatenated.mp4'
with open('input.txt', 'w') as f:
f.write(f"file '{video1}'\n")
f.write(f"file '{video2}'\n")
subprocess.run(
['ffmpeg', '-f', 'concat', '-safe', '0', '-i', 'input.txt', '-vcodec', 'copy',
'-acodec', 'copy', "-strict", "experimental", output_file]
)
黑色视频:
ffmpeg -f lavfi -i color=c=black:s=1920x1080:r=30:d=10 -c:v libx264 -preset ultrafast -tune stillimage -crf 18 -vf "fps=30" output_blank.mp4
应该可以:)