Files
sam2/notebooks/rvm_get_frames.sh

40 lines
1.4 KiB
Bash
Executable File

#!/bin/bash
# Check if the output folder is provided as an argument
if [ -z "$1" ]; then
echo "Usage: $0 <output_folder>"
exit 1
fi
# Set the output folder variable
output_folder="$1"
# Process each segment folder
for segment_dir in "$output_folder"/segment_*; do
if [ -d "$segment_dir" ]; then
# Find the output_N.mp4 file in the segment folder
segment_file=$(find "$segment_dir" -name "segment_*.mp4" -print -quit)
if [ -n "$segment_file" ]; then
# Create the frames directory
frames_dir="$segment_dir/frames"
frames_scaled_dir="$segment_dir/frames_scaled"
mkdir -p "$frames_dir"
mkdir -p "$frames_scaled_dir"
# Extract frames using ffmpeg with CUDA acceleration and save as JPEGs
ffmpeg -hwaccel cuda -i "$segment_file" -q:v 1 "$frames_dir/%04d.jpg"
#ffmpeg -hwaccel cuda -i "$segment_file" "$frames_dir/%04d.png"
#
## Extract scaled-down frames (50% of original size)
ffmpeg -hwaccel cuda -i "$segment_file" -q:v 1 -vf "scale=iw/2:ih/2" "$frames_scaled_dir/%04d.jpg"
echo "Frames extracted for $segment_file and stored in $frames_dir"
else
echo "No output_*.mp4 file found in $segment_dir"
fi
fi
done
echo "Frame extraction completed."