quick-scripts/submixer.sh

54 lines
1.4 KiB
Bash
Executable File

#!/bin/bash
HEADER="[Script Info]
ScriptType: v4.00+
Collisions: Normal
PlayDepth: 0
Timer: 100,0000
Video Aspect Ratio: 0
WrapStyle: 0
ScaledBorderAndShadow: no
[V4+ Styles]
Format: Name,Fontname,Fontsize,PrimaryColour,SecondaryColour,OutlineColour,BackColour,Bold,Italic,Underline,StrikeOut,ScaleX,ScaleY,Spacing,Angle,BorderStyle,Outline,Shadow,Alignment,MarginL,MarginR,MarginV,Encoding
Style: Default,Arial,16,&H00FFFFFF,&H00FFFFFF,&H00000000,&H00000000,-1,0,0,0,100,100,0,0,1,3,0,2,10,10,10,0
Style: Top,Arial,16,&H00F9FFFF,&H00FFFFFF,&H00000000,&H00000000,-1,0,0,0,100,100,0,0,1,3,0,8,10,10,10,0
Style: Mid,Arial,16,&H0000FFFF,&H00FFFFFF,&H00000000,&H00000000,-1,0,0,0,100,100,0,0,1,3,0,5,10,10,10,0
Style: Bot,Arial,16,&H00F9FFF9,&H00FFFFFF,&H00000000,&H00000000,-1,0,0,0,100,100,0,0,1,3,0,2,10,10,10,0"
OUTFILE="out.ass"
in1=$(mktemp --suffix ".ass")
in2=$(mktemp --suffix ".ass")
# Convert 1st srt to ass
ffmpeg -i "$1" "$in1"
# Convert 2nd srt to ass
ffmpeg -i "$2" "$in2"
# Write header
cat <<< "$HEADER" > $OUTFILE
# Get events from 1st input
# awk is easier
awk '
/\[Events\]/,EOF {
str = $0
sub(/,Default,/, ",Top,", str)
print str
}' "$in1" >> $OUTFILE
# Get events from 2nd input
# awk is easier
awk -v ORS="" '
/\[Events\]/,EOF {
str = $0
sub(/,Default,/, ",Bot,", str)
print str
}' "$in2" >> $OUTFILE
# cleanup
rm "$in1"
rm "$in2"