Created
February 16, 2019 03:16
-
-
Save manasmbellani/14e2653af1b02df32bd9ba9b48cf6366 to your computer and use it in GitHub Desktop.
ffmpeg_extract_audio_from_video.sh - Extracts audio from video files by running ffmpeg
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
DEFAULT_OUTPUT_FOLDER="out-audio-files" | |
if [ $# -lt 1 ]; then | |
echo "[-] $0 <folder/file-to-get-audio-from> [out-folder]" | |
echo | |
echo "Description: " | |
echo "This script converts a single file and outputs the file into an output folder" | |
echo "This script has been written for MacOS X only" | |
echo | |
echo "Arguments:" | |
echo "folder/file-to-get-audio-from: File/folder which is a video file to get audio from" | |
echo "out-folder: Output folder to write multiple files to. Only valid if folder was specified with files for conversion" | |
echo | |
exit | |
fi | |
in_file_folder="$1" | |
out_folder="$2" | |
[ -z "$out_folder" ] && out_folder="$DEFAULT_OUTPUT_FOLDER" | |
echo "[+] out_folder: $out_folder" | |
function install { | |
# Install ffmpeg dependency via brew | |
echo "[*] Installing ffmpeg" | |
brew install ffmpeg | |
} | |
function get_audio_filename_from_video_filename { | |
in_file="$1" | |
in_file_ext="${in_file##*.}" | |
in_file_name_without_ext="${in_file%.*}" | |
out_file="$in_file_name_without_ext.mp3" | |
echo "$out_file" | |
} | |
function convert_single_video_file_to_audio { | |
in_file="$1" | |
out_file="$2" | |
echo "[*] Converting input video file: $in_file to mp3 output file: $out_file using ffmpeg" | |
ffmpeg -i "$in_file" -q:a 0 -map a "$out_file" | |
} | |
if [ -f "$in_file_folder" ]; then | |
in_file="$in_file_folder" | |
out_file=$(get_audio_filename_from_video_filename "$in_file") | |
convert_single_video_file_to_audio "$in_file" "$out_file" | |
elif [ -d "$in_file_folder" ]; then | |
in_folder="$in_file_folder" | |
if [ ! -d "$out_folder" ]; then | |
echo "[*] Making output folder: $out_folder" | |
mkdir "$out_folder" | |
fi | |
in_files=`ls -1 "$in_folder"` | |
IFS=$'\n' | |
for in_file in `echo "$in_files"`; do | |
out_file=$(get_audio_filename_from_video_filename "$in_folder/$in_file") | |
convert_single_video_file_to_audio "$in_folder/$in_file" "$out_file" | |
mv "$out_file" "$out_folder" | |
done | |
else | |
echo "[-] Non-existant file/folder: $in_file_folder" | |
exit | |
fi | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment