Skip to content

Instantly share code, notes, and snippets.

@mustafaboleken
Created June 5, 2024 08:54
Show Gist options
  • Save mustafaboleken/47deb2ce4867f841713111882449156d to your computer and use it in GitHub Desktop.
Save mustafaboleken/47deb2ce4867f841713111882449156d to your computer and use it in GitHub Desktop.
#!/bin/bash
# Check if an argument is provided
if [ -z "$1" ]; then
echo "Usage: $0 fullPathOfMP4File"
exit 1
fi
# Get the full path of the provided MP4 file
fullPathOfMP4File="$1"
# Extract the directory and filename from the provided path
dirName=$(dirname "$fullPathOfMP4File")
fileName=$(basename "$fullPathOfMP4File")
# Extract the prefix (everything before the first dot)
prefix=${fileName%%.*}
# Find all MP4 files in the directory with the same prefix
mp4Files=()
for file in "$dirName"/"$prefix"*.mp4; do
mp4Files+=("$file")
done
# Check if there are files to merge
if [ ${#mp4Files[@]} -eq 0 ]; then
echo "No MP4 files found with prefix $prefix"
exit 1
fi
# Create a temporary file list for ffmpeg
fileList=$(mktemp)
for file in "${mp4Files[@]}"; do
echo "file '$file'" >> "$fileList"
done
# Define the output file name
outputFile="${dirName}/${prefix}_merged.mp4"
# Merge the videos using ffmpeg
ffmpeg -f concat -safe 0 -i "$fileList" -c copy "$outputFile"
# Remove the temporary file list
rm "$fileList"
echo "Merged file created at: $outputFile"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment