First commit
This commit is contained in:
commit
1639849bc9
2 changed files with 88 additions and 0 deletions
88
DIZZY.py
Normal file
88
DIZZY.py
Normal file
|
@ -0,0 +1,88 @@
|
|||
import time
|
||||
import os
|
||||
from gpiozero import Button
|
||||
from picamera2 import Picamera2, encoders, outputs
|
||||
|
||||
# GPIO pin for the button
|
||||
BUTTON_PIN = 17 # Connect the button to GPIO17 (pin 11)
|
||||
|
||||
# Set up the camera
|
||||
camera = Picamera2()
|
||||
camera_config = camera.create_video_configuration()
|
||||
camera.configure(camera_config)
|
||||
|
||||
# USB storage path
|
||||
USB_PATH = "/media/sanderrochat/USBDISK"
|
||||
|
||||
# Button setup
|
||||
button = Button(BUTTON_PIN)
|
||||
|
||||
# Recording state
|
||||
recording = False
|
||||
start_time = None
|
||||
MAX_RECORDING_TIME = 10 # Stop after 1 minute
|
||||
|
||||
|
||||
def is_usb_mounted():
|
||||
"""Check if USB stick is mounted."""
|
||||
return os.path.ismount(USB_PATH)
|
||||
|
||||
|
||||
def toggle_video_recording():
|
||||
"""Start or stop video recording."""
|
||||
global recording, start_time
|
||||
if not is_usb_mounted():
|
||||
print("USB stick not found. Check if it's connected.")
|
||||
return
|
||||
|
||||
if recording:
|
||||
print("\nStopping video recording...")
|
||||
camera.stop_recording()
|
||||
recording = False
|
||||
else:
|
||||
timestamp = time.strftime("%Y%m%d_%H%M%S")
|
||||
filename = f"{USB_PATH}/video_{timestamp}.mp4"
|
||||
print(f"Starting video recording: {filename}")
|
||||
encoder = encoders.H264Encoder()
|
||||
output = outputs.FfmpegOutput(filename, audio=True)
|
||||
|
||||
# ✅ FIXED: Use encoders.H264Encoder() for MP4 format
|
||||
camera.start_recording(encoder, output)
|
||||
output.start()
|
||||
recording = True
|
||||
start_time = time.time()
|
||||
|
||||
|
||||
def main():
|
||||
global recording # Ensure we can modify the recording state
|
||||
print("Press the button to start/stop recording (max 1 minute).")
|
||||
print(f"Videos will be saved in: {USB_PATH}")
|
||||
|
||||
try:
|
||||
while True:
|
||||
if button.is_pressed:
|
||||
toggle_video_recording()
|
||||
time.sleep(10) # Debounce to avoid multiple presses
|
||||
|
||||
if recording:
|
||||
elapsed_time = time.time() - start_time
|
||||
print(f"Recording time: {int(elapsed_time)} seconds", end="\r")
|
||||
if elapsed_time >= MAX_RECORDING_TIME:
|
||||
print("\nMax recording time reached (1 minute).")
|
||||
toggle_video_recording()
|
||||
|
||||
time.sleep(0.1) # Reduce CPU usage
|
||||
except KeyboardInterrupt:
|
||||
print("\nProgram terminated by user.")
|
||||
finally:
|
||||
if recording: # Only stop if recording is active
|
||||
print("Stopping active recording before exit...")
|
||||
camera.stop_recording()
|
||||
recording = False
|
||||
|
||||
print("Exiting program.")
|
||||
|
||||
|
||||
# ✅ Corrected if __name__ == "__main__":
|
||||
if __name__ == "__main__":
|
||||
main()
|
0
README.md
Normal file
0
README.md
Normal file
Loading…
Reference in a new issue