☰
QuidsUp - Scripts - Video Audio Merge
Video Audio Merge
Script to use FFMpeg to replace the audio stream within a video, for example when you have carried out editing of an Audio stream with Audacity and then want to merge it back with the original Video.
Usage:
Have inputfile.mkv and inputfile.ogg placed together in the same folder
Run vidmerge.sh to create a new file consisting of the video from inputfile.mkv and audio from inputfile.ogg
wget quidsup.net/sh/vidmerge.sh bash install-deluge.sh inputfile
Script:
#!/bin/bash # Video and Audio merging script written by QuidsUp # Depends on ffmpeg # Takes input video and audio file then copies them together with ffmpeg, # outputting video-processed.mkv or video-processed.mp4 # Usage: vidmerge.sh video # NOTE the lack of .extension input_file="" input_audio="" input_video="" output_file="" folder=$(pwd) echo "Vidmerge" if [[ ! $1 ]]; then #Check argument has been given echo "Error - No file specified" exit 2 fi input_file=$1 if [[ $input_file =~ \.$ ]]; then #Check if trailing . is present input_file=${input_file::-1} #Trim trailing . fi if [ -e "${input_file}.mkv" ]; then #Look for .mkv video input_video="$input_file.mkv" output_file="$folder/$input_file-processed.mkv" elif [ -e "${input_file}.mp4" ]; then #Look for .mp4 video input_video="$folder/$input_file.mp4" output_file="$folder/$input_file-processed.mp4" elif [ -e "${input_file}.mts" ]; then #Look for .mp4 video input_video="$folder/$input_file.mts" output_file="$folder/$input_file-processed.mkv" else #Video missing echo "Error - Missing Video file" exit 3 fi if [ -e "${input_file}.ogg" ]; then input_audio="$input_file.ogg" elif [ -e "${input_file}.flac" ]; then input_audio="$folder/$input_file.flac" elif [ -e "${input_file}.mp3" ]; then input_audio="$folder/$input_file.mp3" elif [ -e "${input_file}.wav" ]; then input_audio="$folder/$input_file.wav" else echo "Error - Missing Audio file" exit 4 fi echo "Input Video: $input_video" echo "Input Audio: $input_audio" echo "Output File: $output_file" echo ffmpeg -i "$input_audio" -i "$input_video" -c:v copy "$output_file" echo "Complete"