some-usable-scripts/recording/sync.sh

43 lines
958 B
Bash

#!/bin/sh
# This is a list of simple shell functions to handle a few inconveniences
# regarding video and audio synchronization.
# When recording a mono source as a stereo, one of the speaker is muted.
# This removes the second (muted) track from the audio source.
stereo2mono(){
/usr/bin/ffmpeg -i "$1" -c:v copy -ac 1 "mono-$1"
}
# Side note: I record both audio and video with the same file names, besides the extension.
please_read(){
/usr/bin/mpv "$1.mkv" -audiofile "$1.opus"
}
# Synchronize the audio and video.
avsync(){
if [ $# -ne 4 ]; then
echo "usage: avsync video audio delay output"
return 1
fi
/usr/bin/ffmpeg -i "$1" \
-itsoffset "$3" \
-i "$2" \
-c:a copy -c:v copy -map 0:v:0 -map 1:a:0 \
"$4"
}
# Video and audio have the same name, except for the extension.
# Example: avs my-video 1.3
avs(){
if [ $# -ne 2 ]; then
echo "usage: avs prefix delay"
return 1
fi
avsync "$1".mkv "$1".opus "$2" "$1"-sync.mkv
}