問題: json データの開始時間と終了時間に基づいてビデオ ファイルをトリミングしたいと考えています。複数の開始時間と終了時間があり、ビデオをトリミングしてから最終部分を追加する必要があります。
Unix タイムスタンプを var に割り当ててから、datetime を使用して MM:SS に変換することで、MoviePy を使用してみました。
スクリプトがすべての辞書を通過し、データに従ってビデオをトリミングするように、複数の値に対してこれを行うにはどうすればよいですか?
MoviePY はこの仕事に十分に適していますか、それとも他に効率的なライブラリ / 方法がありますか?
私が試したこと:
from moviepy.editor import *
import datetime
start_time = int(datetime.datetime.fromtimestamp(int("1456229360")).strftime('%S'))
end_time = int(datetime.datetime.fromtimestamp(int("1456229334")).strftime('%S'))
print start_time
print end_time
my_clip = VideoFileClip("sample.mp4")
#Trims the video as per the processed timestamps
clip1 = my_clip.subclip(start_time,end_time) #and select the subclip 00:00:00 - 00:00:00
#Append the trimmed parts.
#final_video = concatenate([clip1,clip2,clip3]) #How to do this ?
processed_vid = clip1.write_videofile("final_sample.mp4")
with open('output.json', 'r') as f:
timestamps = json.load(f)
サンプル JSON データ:
[
{
"accl": 1.5899999999999999,
"duration": 19,
"end_time": 1434367730,
"start_time": 1434367711
},
{
"accl": 0.7670000000000012,
"duration": 14,
"end_time": 1434368618,
"start_time": 1434368604
},
{
"accl": 0.7129999999999992,
"duration": 11,
"end_time": 1434368692,
"start_time": 1434368681
},
{
"accl": 0.5970000000000013,
"duration": 13,
"end_time": 1434367605,
"start_time": 1434367592
}
]
更新: 私は別のことを試みましたが、私はそこに着いていますが、moviepy は HH:MM:SS のみを受け入れ、unixtime を受け入れないため、これらのタイムスタンプの大量変換と、これに基づくサブクリップの作成に助けが必要です。
from moviepy.editor import *
import datetime
import json
clips_array = []
video= VideoFileClip('sample.mov')
with open('output.json', 'r') as f:
timestamps = json.load(f)
for timestamps in f:
clip = full_vid.subclip(start_time, end_time)
clips_array.append(clip)