|
import cv2 |
|
import os |
|
from moviepy.editor import VideoFileClip |
|
|
|
def extract_frames(video_path, output_folder, frame_rate=1): |
|
if not os.path.exists(output_folder): |
|
os.makedirs(output_folder) |
|
|
|
cap = cv2.VideoCapture(video_path) |
|
count = 0 |
|
success, image = cap.read() |
|
|
|
while success: |
|
if count % frame_rate == 0: |
|
frame_id = int(count / frame_rate) |
|
cv2.imwrite(os.path.join(output_folder, f"frame_{frame_id:05d}.jpg"), image) |
|
success, image = cap.read() |
|
count += 1 |
|
|
|
cap.release() |
|
print(f"Frames extracted to {output_folder}") |
|
|
|
def extract_audio(video_path, output_audio_path): |
|
video = VideoFileClip(video_path) |
|
audio = video.audio |
|
audio.write_audiofile(output_audio_path) |
|
print(f"Audio extracted to {output_audio_path}") |
|
|
|
def main(video_path, output_frames_folder, output_audio_path, frame_rate=1): |
|
extract_frames(video_path, output_frames_folder, frame_rate) |
|
extract_audio(video_path, output_audio_path) |
|
|
|
if __name__ == "__main__": |
|
video_path = "./AustinScott0.mp4" |
|
output_frames_folder = "output/frames" |
|
output_audio_path = "output/audio.mp3" |
|
frame_rate = 1 |
|
|
|
main(video_path, output_frames_folder, output_audio_path, frame_rate) |
|
|