gpt4 book ai didi

python-3.x - ffmpeg 以每秒帧数分解视频

转载 作者:行者123 更新时间:2023-12-04 23:14:46 27 4
gpt4 key购买 nike

有一个命令可以提取每秒提供帧的视频图像

ffmpeg -i "vide.mp4" -vf fps=1 frames/frame_%04d.png -hide_banner

ffmpeg 中是否有命令剪切提供 fps 的视频并将其保存为视频(.mp4/avi)文件,如上面的命令?

我目前拥有的是我创建了一种方法来剪切具有开始和结束时间的视频,但我首先创建了一种获取视频长度的方法,以便我可以根据上述命令生成的帧数来剪切视频。
 def get_length(self):
"""
Gets the length of a video in seconds

Returns:
float : Length of the video
"""

print("Getting video length: " + self.video_string_path)
command = 'ffprobe -i "'+self.video_string_path+'" -show_entries format=duration -v quiet -of csv="p=0"'
self.command = command
length = str(cmd.execute(command)).strip()
print("lenght: "+length+" second(s)")
return float(length)

def cut(self, start_time, duration, output_file_name = 'output_file_name.mp4', save_to =''):
"""
Cut a video on a specific start time of the video and duration.
Check ffmpeg documentation https://ffmpeg.org/ffmpeg.html for more information about the parameters

Parameters:
start_time : string
is the value of ffmpeg -ss with the format: 00:00:00.000

duration : string | int | float
is the end point where the video will be cut. Can be the same with start_time format but it could also handle integer as in seconds

output_file_name : string
is the file name once the file is save in the hardisk

save_to : string | optional
is the directory where the file will be saved

Returns:
string: file location of the cutted video

"""

self.make_sure_save_dir_exits(save_to)
print('Cutting ' + self.video_string_path + ' from ' + start_time + ' to ' + str(duration))
print('Please wait...')
file = '"' + self.save_to + output_file_name + '"'
command = 'ffmpeg -i "' + self.video_string_path + '" -ss ' + str(start_time) + ' -t ' + str(duration) + ' -c copy -y ' + file
self.command = command
cmd.execute(command)

file_loc = self.get_save_to_dir() + output_file_name
print('Done: Output file was saved to "' + file_loc + '"')

return file_loc + output_file_name

最佳答案

利用

ffmpeg -ss {start_time} -t {duration} -i "vide.mp4" -vf fps=X -c:a copy out.mp4

其中 X 是您的输出帧速率。

要分割整个文件,
ffmpeg -i "vide.mp4" -vf fps=X
-f segment -segment_time {duration} -force_key_frames expr:gte(t,n_forced*{duration})
-reset_timestamps 1 -segment_time_delta 1.0 -c:a copy out%d.mp4

关于python-3.x - ffmpeg 以每秒帧数分解视频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49227740/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com