回答編集履歴

1

コード追加

2018/09/13 04:40

投稿

tiitoi
tiitoi

スコア21956

test CHANGED
@@ -27,3 +27,73 @@
27
27
 
28
28
 
29
29
  すべてのフレームをメモリに一度展開するのではなく、cv2.VideoCapture() でフレームを読み込みつつ、cv2.VideoWriter() で読み込んだフレームを書き込んでみてはどうでしょうか。
30
+
31
+
32
+
33
+ サンプルコードを記載
34
+
35
+ VideoWriter() に渡す fps、コーデック、出力サイズは適宜変更してください。
36
+
37
+
38
+
39
+ ```python
40
+
41
+ import cv2
42
+
43
+
44
+
45
+ in_paths = ['sample1.mp4', 'sample2.mp4']
46
+
47
+ out_path = 'output.mp4'
48
+
49
+
50
+
51
+ # Video Writer を作成する。
52
+
53
+ fps = 30.0
54
+
55
+ codecs = 'H264'
56
+
57
+ size = (1280, 720)
58
+
59
+ fourcc = cv2.VideoWriter_fourcc(*codecs)
60
+
61
+ writer = cv2.VideoWriter(out_path, fourcc, fps, size)
62
+
63
+
64
+
65
+ frames = 0
66
+
67
+ for in_path in in_paths:
68
+
69
+ print('processing...', in_path)
70
+
71
+
72
+
73
+ # Video Capture を作成する。
74
+
75
+ cap = cv2.VideoCapture(video_path)
76
+
77
+
78
+
79
+ while cap.isOpened():
80
+
81
+ ret, frame = cap.read()
82
+
83
+ if not ret:
84
+
85
+ break # ビデオが終了
86
+
87
+
88
+
89
+ writer.write(frame)
90
+
91
+ frames += 1
92
+
93
+ cap.release()
94
+
95
+
96
+
97
+ writer.release()
98
+
99
+ ```