gpt4 book ai didi

python - 如何使用文件名、开始和结束时间的数据框创建视频剪辑?

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

这个问题已经过编辑,以简化我在此处的用户帮助下开发的特定问题。 (谢谢)
我有一个包含文件路径、标识符以及开始和停止时间的数据框。我正在尝试遍历此数据帧的每一行并使用 ffmpeg 创建视频剪辑。
数据框是这样的:

Time    File_path   Behavior    Status  experiment_id   Start_time  Stop_time   Duration
130 314.287 H:/My Drive/Katz-Lab_Otter-Data/Projects/Forag... Scrunch POINT K8_feed_111120_05 312.787 315.787 3.0
145 784.158 H:/My Drive/Katz-Lab_Otter-Data/Projects/Forag... Scrunch POINT K8_feed_111120_05 782.658 785.658 3.0
140 708.906 H:/My Drive/Katz-Lab_Otter-Data/Projects/Forag... Scrunch POINT K8_feed_111120_05 707.406 710.406 3.0
33 507.600 H:/My Drive/Katz-Lab_Otter-Data/Projects/Forag... Scrunch POINT K8_feed_111120_02 506.100 509.100 3.0
75 112.690 H:/My Drive/Katz-Lab_Otter-Data/Projects/Forag... Scrunch POINT K8_feed_111120_03 111.190 114.190 3.0
133 344.057 H:/My Drive/Katz-Lab_Otter-Data/Projects/Forag... Scrunch POINT K8_feed_111120_05 342.557 345.557 3.0
26 366.215 H:/My Drive/Katz-Lab_Otter-Data/Projects/Forag... Scrunch POINT K8_feed_111120_02 364.715 367.715 3.0
70 84.448 H:/My Drive/Katz-Lab_Otter-Data/Projects/Forag... Scrunch POINT K8_feed_111120_03 82.948 85.948 3.0
113 738.897 H:/My Drive/Katz-Lab_Otter-Data/Projects/Forag... Scrunch POINT K8_feed_111120_03 737.397 740.397 3.0
128 200.548 H:/My Drive/Katz-Lab_Otter-Data/Projects/Forag... Scrunch POINT K8_feed_111120_05 199.048 202.048 3.0
目标是使用 File_path 指定的视频,使用指定的时间戳制作视频剪辑,并创建使用指定变量 ouput_path 的输出文件并附加 File_path 的最后 18 个左右的字符和 Behavior .
这是我尝试过的:
#loop through the lines of the data frame
for row in sampled_data.index:

#print(sampled_data["File_path"][row])

output_file = ("%(path)s\%(experiment_id)s_%(behavior)s_%(index)s.MP4"
% {"path" : output_path,
"experiment_id" : sampled_data["experiment_id"][row],
"behavior" : sampled_data["Behavior"][row],
"index" : row})

#print(output_file)

subprocess.check_call([
'ffmpeg',
'-ss', str(sampled_data["Start_time"][row]),
'-i', str(sampled_data["File_path"][row]),
'-t', str(sampled_data["Duration"][row]),
'-c', 'copy',
output_file])
编辑:我让它工作!

最佳答案

我将专注于您可能最麻烦的部分:视频处理。
使用 Python 的 subprocess 可能是最简单的。 ffmpeg 的模块和运行子进程为了这。

import subprocess

subprocess.check_call([
'ffmpeg',
'-ss', str(starttime),
'-i', inputfilepath,
'-t', str(duration),
'-c', 'copy', # alternatively -c:v mjpeg -q:v 2
outputfilepath])
你可以告诉 ffmpeg 到 start decoding the input at a specific time ( -ss {timecode} before/after -i {the input file} ),并从视频中读取特定的时间量 ( -t {duration})。剩下的只是编码器参数。
如果您的输入视频是仅帧内编码的,您甚至可以 -c copy没有质量损失的数据。只是提一下,以防它很重要。

关于python - 如何使用文件名、开始和结束时间的数据框创建视频剪辑?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70208126/

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