質問編集履歴

3

プログラムを一部修正しました。

2019/11/11 07:33

投稿

raspypy
raspypy

スコア247

title CHANGED
File without changes
body CHANGED
@@ -26,42 +26,19 @@
26
26
  ```python
27
27
  width = 640
28
28
  height = 480
29
-
30
- now = datetime.now()
31
- filename = '/home/pi/dev/data/' + now.strftime('%Y%m%d_%H%M%S') + '.mp4'
32
- print (filename)
33
- fmt = cv2.VideoWriter_fourcc('m', 'p', '4', 'v') # ファイル形式(ここではmp4)
34
29
  writer1 = cv2.VideoWriter(filename, fmt ,25, (width, height))
35
30
  writer2 = cv2.VideoWriter('/home/pi/dev/data/test.mp4', fmt ,25, (width, height))
36
31
 
37
- start_time = datetime.now()
38
- set_time = 5
39
-
40
32
  if "ある条件":
41
33
  GPIO.output(13, GPIO.HIGH)
42
34
  sleep(1.0)
43
35
  GPIO.output(13, GPIO.LOW)
44
36
  sleep(1.0)
45
- while True:
46
- ret, frame = cap.read()
47
- writer1.write(frame)
48
- end_time = datetime.now()
49
- diff = end_time - start_time
50
- print (diff)
51
- delta_t = diff.seconds
52
- if delta_t >= set_time:
53
37
  break
54
38
  else:
55
39
  while True:
56
40
  ret, frame = cap.read()
57
41
  writer2.write(frame)
58
- end_time = datetime.now()
59
- diff = end_time - start_time
60
- print (diff)
61
- delta_t = diff.seconds
62
- if delta_t >= set_time:
63
42
  break
64
43
  cap.release()
65
- writer1.release()
66
- writer2.release()
67
44
  ```

2

プログラムコードを更新しました。

2019/11/11 07:33

投稿

raspypy
raspypy

スコア247

title CHANGED
File without changes
body CHANGED
@@ -14,41 +14,54 @@
14
14
  今、ある条件を満たさない状態で、このプログラムを実行すると、
15
15
  期待する結果は、『test.mp4という動画が指定時間分保存される』という結果ですが、
16
16
 
17
+ 実際は、
18
+ ・test.mp4という動画が指定時間分保存(これは期待通り)
17
- 実際は、日付時刻.mp4の動画が保存され、しかもその動画サイズは200バイト程度と小さいファイルで、再生もできませんでした。
19
+ 日付時刻.mp4の動画が保存され、しかもその動画サイズは200バイト程度と小さいファイルで、再生もできませんでした。
20
+  ⇒なぜ、このファイルが保存されるのかが分かりません。
18
21
 
19
22
  プログラムに不備があると思うのですが、間違いなど指摘いただけると助かります。
20
23
 
21
24
 
22
25
  ##動画ファイル保存プログラム
23
26
  ```python
27
+ width = 640
28
+ height = 480
29
+
24
30
  now = datetime.now()
25
- filename = '/path/' + now.strftime('%Y%m%d_%H%M%S') + '.mp4'
31
+ filename = '/home/pi/dev/data/' + now.strftime('%Y%m%d_%H%M%S') + '.mp4'
26
32
  print (filename)
27
33
  fmt = cv2.VideoWriter_fourcc('m', 'p', '4', 'v') # ファイル形式(ここではmp4)
28
34
  writer1 = cv2.VideoWriter(filename, fmt ,25, (width, height))
29
- writer2 = cv2.VideoWriter('test.mp4', fmt ,25, (width, height))
35
+ writer2 = cv2.VideoWriter('/home/pi/dev/data/test.mp4', fmt ,25, (width, height))
30
36
 
31
37
  start_time = datetime.now()
32
38
  set_time = 5
33
39
 
40
+ if "ある条件":
41
+ GPIO.output(13, GPIO.HIGH)
42
+ sleep(1.0)
43
+ GPIO.output(13, GPIO.LOW)
44
+ sleep(1.0)
34
- while True:
45
+ while True:
35
- ret, frame = cap.read()
46
+ ret, frame = cap.read()
47
+ writer1.write(frame)
36
- end_time = datetime.now()
48
+ end_time = datetime.now()
37
- diff = end_time - start_time
49
+ diff = end_time - start_time
38
- print (diff)
50
+ print (diff)
39
- delta_t = diff.seconds
51
+ delta_t = diff.seconds
40
- if delta_t >= set_time:
52
+ if delta_t >= set_time:
53
+ break
54
+ else:
55
+ while True:
56
+ ret, frame = cap.read()
41
57
  writer2.write(frame)
58
+ end_time = datetime.now()
59
+ diff = end_time - start_time
60
+ print (diff)
61
+ delta_t = diff.seconds
62
+ if delta_t >= set_time:
42
- break
63
+ break
43
- if "ある条件":
44
- writer1.write(frame)
45
- GPIO.output(13, GPIO.HIGH)
46
- sleep(1.0)
47
- GPIO.output(13, GPIO.LOW)
48
- sleep(1.0)
49
- break
50
-
51
64
  cap.release()
52
- writer1.release() # ファイルを閉じる
65
+ writer1.release()
53
- writer2.release() # ファイルを閉じる
66
+ writer2.release()
54
67
  ```

1

質問内容を具体的に記載しました。

2019/11/11 07:11

投稿

raspypy
raspypy

スコア247

title CHANGED
File without changes
body CHANGED
@@ -1,35 +1,54 @@
1
1
  ##やりたいこと
2
2
 
3
- 動画ファイルを保存するときに、ムスタンプつけたい。
3
+ 動画ファイルを保存するときに、条件に応じてファル名変更したい。
4
- 今、プログラムの中で、
5
- ファイルパス /home/pi/
6
- ファイル名 test.mp4
7
- と指定して動画を保存しているのですが、
8
- test.mp4のファイル名を日付。2019-11-11-12-12.mp4というように、日付時刻をファイル名として保存したいのですが、
9
- 方法が分かりません。
10
4
 
5
+ ##プログラム
6
+ ↓のプログラムは、
7
+ ①時間を指定し、指定した時間が経過したら、動画撮影を終了し、動画を保存する
8
+ ②ある条件を満たした場合に、動画撮影を終了し、動画を保存する。
11
9
 
10
+ ①の時は、**writer2**を使用して、test.mp4 というファイル名で動画を保存
11
+ ②の時は、**writer1**を使用して、日付時刻.mp4というファイル名で動画を保存
12
+
13
+ ##困っていること
14
+ 今、ある条件を満たさない状態で、このプログラムを実行すると、
15
+ 期待する結果は、『test.mp4という動画が指定時間分保存される』という結果ですが、
16
+
17
+ 実際は、日付時刻.mp4の動画が保存され、しかもその動画サイズは200バイト程度と小さいファイルで、再生もできませんでした。
18
+
19
+ プログラムに不備があると思うのですが、間違いなど指摘いただけると助かります。
20
+
21
+
12
22
  ##動画ファイル保存プログラム
13
23
  ```python
14
- def movie():
15
- cap = cv2.VideoCapture(0)
24
+ now = datetime.now()
16
- width = 640
25
+ filename = '/path/' + now.strftime('%Y%m%d_%H%M%S') + '.mp4'
17
- height = 480
26
+ print (filename)
27
+ fmt = cv2.VideoWriter_fourcc('m', 'p', '4', 'v') # ファイル形式(ここではmp4)
28
+ writer1 = cv2.VideoWriter(filename, fmt ,25, (width, height))
29
+ writer2 = cv2.VideoWriter('test.mp4', fmt ,25, (width, height))
18
30
 
19
- fmt = cv2.VideoWriter_fourcc('m', 'p', '4', 'v')
20
- writer = cv2.VideoWriter('/home/pi/test.mp4', fmt ,25, (width, height))
21
-
22
31
  start_time = datetime.now()
23
32
  set_time = 5
33
+
24
34
  while True:
25
35
  ret, frame = cap.read()
26
- writer.write(frame)
27
36
  end_time = datetime.now()
28
37
  diff = end_time - start_time
29
38
  print (diff)
30
39
  delta_t = diff.seconds
31
- if delta_t >= set_time:
40
+ if delta_t >= set_time:
41
+ writer2.write(frame)
32
42
  break
43
+ if "ある条件":
44
+ writer1.write(frame)
45
+ GPIO.output(13, GPIO.HIGH)
46
+ sleep(1.0)
47
+ GPIO.output(13, GPIO.LOW)
48
+ sleep(1.0)
49
+ break
50
+
33
51
  cap.release()
34
- writer.release()
52
+ writer1.release() # ファイルを閉じる
53
+ writer2.release() # ファイルを閉じる
35
54
  ```