如何使用FFmpeg将带有黑帧的视频填充到给定长度?

问题描述 投票:0回答:2

我知道

tpad
过滤器具有
stop_duration
参数,可将帧添加到视频末尾。当输入长度未知(但小于 5 秒)时,如何确保生成的视频长度为 5 秒?

ffmpeg video-processing
2个回答
1
投票

添加修剪过滤器以限制总持续时间,例如

ffmpeg -i in -vf tpad=stop=-1,trim=end=5 out

0
投票

正确的方法是先制作一个相同规格的填充视频,然后将视频连接到您的视频,最后将视频剪切到所需的长度。请注意,所有步骤都可以在重新编码或不重新编码的情况下完成。

在这种情况下,即使没有重新编码,从右侧修剪也是精确的(直到您想要的任何帧)。所以最好的方法是在不重新编码的情况下进行连接和修剪。

修剪:

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

应该可以:)

© www.soinside.com 2019 - 2024. All rights reserved.