RaspberryPiでの録画方法について
Q&A
Closed
解決したいこと
RaspberryPiでUSBカメラでの動画を延々と録画していくというプログラムを書きました。
可能な限り長時間撮影したかったため、USBメモリに移動させて保存していき、いっぱいになったところでUSBメモリを交換するという流れで2か月程度稼働しておりました。
しかしSDが壊れてしまい、バックアップも同時に壊れてしまったため組み直しておりますが、shutil.move後の動画ファイルが「ファイルを再生できません。このアイテムのファイル形式がサポートされていないか、ファイル拡張子が正しくないか、ファイルが破損している可能性があります。」となり、うまく保存できなくなってしまいました。
プログラミング初心者のため以前のコードもあまり覚えておらず、何が原因かもわからず困り果てております。
因みにshutil.copyで作成したデータは、ローカルだと再生でき、USBメモリだと再生不可です。
USBメモリ単体での使用(コピーしたり、消したり、差し直したり)も特に異常は見受けられません。
何かお分かりになる方いらっしゃいましたらお力添えください。
発生している問題・エラー
shutil.move後、USBメモリのMP4ファイルが「ファイルを再生できません。このアイテムのファイル形式がサポートされていないか、ファイル拡張子が正しくないか、ファイルが破損している可能性があります。」となる。
該当するソースコード
#!/usr/bin/python3
#coding: utf-8
import cv2
import datetime
import shutil
cap = cv2.VideoCapture(0)
if(cap==None):
print("Camera not found")
print("start")
ret, frame = cap.read()
def recording():
loop = int(fps * rec_time)
for i in range(loop):
ret, frame = cap.read()
frame = cv2.flip(frame,0)
video.write(frame)
while True:
rec_time = 10#sec
fps = int(cap.get(cv2.CAP_PROP_FPS))
fps = 25.0
w = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
h = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
fourcc = cv2.VideoWriter_fourcc('m', 'p', '4', 'v')
name = "video" + datetime.datetime.today().strftime('%Y%m%d_%H%M%S') + ".mp4"
video = cv2.VideoWriter(name, fourcc, fps, (w,h))
path = "/home/pi/"+ name
recording()
print("save")
shutil.move(path,"/media/pi/USBメモリの名称/")
video.release()
if(cap==None):
print("Camera not found")
break
if cv2.waitKey(1) & 0xFF == ord('q'):
break
print("stop")
print("fps =",fps)
print("size =",w,h)
video.release()
cap.release()
cv2.destroyAllWindows()
自分で試したこと
・shutil.copyで作成。→ローカルだと再生でき、USBメモリだと再生不可。
・USBメモリ単体での使用(コピーしたり、消したり、差し直したり)での異常はない。