반응형

1. 시험환경

    ˙ 라즈베리파이 4 (Raspberry Pi 4 Model B)

    ˙ raspberry camera module v3

 

2. 목적

    ˙ 라즈베리파이에 카메라 모듈을 연동한다.

    ˙ 10분씩 녹화하는 프로그램을 작성한다.

 

3. 적용

    ① Raspberry Camera Module v3을 사용하기 위해서 32bit 운영체제를 설치해야 함에 주의한다.

 

    ② 라즈베리파이 보드에 카메라 모듈을 설치한다.

 

     라즈베리파이 카메라 녹화 프로그램을 작성한다.

        - 카메라가 작동하여 10분씩 저장

        - 저장 파일명의 prefix로 "_날짜_시간" 추가

        - 녹화 시작 전 디스크 잔여 공간을 확인하고, 500MB 이하인 경우 생성날짜가 빠른 파일 삭제

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
import time
import picamera
from datetime import datetime
import os
import shutil
 
def capture_video(output_file, duration):
    with picamera.PiCamera() as camera:
        # 카메라 설정 (해상도, 프레임 속도 등)
        camera.resolution = (1280720)  # 적절한 해상도로 변경 가능
        camera.framerate = 30
 
        # 비디오 녹화 시작
        camera.start_recording(output_file)
        
        # 지정된 시간만큼 녹화
        camera.wait_recording(duration)
        
        # 비디오 녹화 종료
        camera.stop_recording()
 
def get_disk_usage():
    # 현재 디렉토리의 디스크 사용량 확인 (바이트 단위)
    return shutil.disk_usage("/").free
 
def delete_oldest_file(directory):
    # 디렉토리 내에서 생성일 기준으로 가장 오래된 파일 삭제
    files = [f for f in os.listdir(directory) if os.path.isfile(os.path.join(directory, f))]
    if files:
        oldest_file = min(files, key=lambda f: os.path.getctime(os.path.join(directory, f)))
        os.remove(os.path.join(directory, oldest_file))
        print(f"{oldest_file} 파일이 삭제되었습니다.")
 
if __name__ == "__main__":
    video_directory = "/path/to/video_directory"  # 비디오 파일 저장 디렉토리 경로
    duration = 600  # 녹화 시간 (초 단위)
    min_disk_space = 500 * 1024 * 1024  # 최소 디스크 용량 (500MB)
 
    while True:
        try:
            # 디스크 용량 확인
            disk_space = get_disk_usage()
 
            # 디스크 용량이 500MB 미만인 경우 가장 오래된 파일 삭제
            if disk_space < min_disk_space:
                delete_oldest_file(video_directory)
 
            # 현재 날짜 및 시간 가져오기
            current_time = datetime.now().strftime("%Y%m%d_%H%M%S")
            
            # 비디오 파일명 생성 (날짜_시간_video.h264 형식)
            output_file = os.path.join(video_directory, f"{current_time}_video.h264")
 
            # 비디오 녹화
            capture_video(output_file, duration)
            
            # 10분 대기
            time.sleep(duration)
        except KeyboardInterrupt:
            print("프로그램을 종료합니다.")
            break
cs

 

4. 결과

    ˙ 프로그램을 실행하여 영상 녹화 여부를 확인한다.

반응형

+ Recent posts