Skip to content

Instantly share code, notes, and snippets.

@yacn
Created May 22, 2018 02:03
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save yacn/35d8c1e9ddee806b664e6b95ad0cf5f0 to your computer and use it in GitHub Desktop.
Save yacn/35d8c1e9ddee806b664e6b95ad0cf5f0 to your computer and use it in GitHub Desktop.
extract a DTS track from an MKV, convert it to FLAC, remux into new MKV w/ additional FLAC track, and set FLAC as default audio track
#!/bin/bash
for ((i=1; i<=13; i++)) do
if [[ "$i" -ge 10 ]]; then
name=$(ls The\ Expanse\ -\ S02E$i*.mkv)
else
name=$(ls The\ Expanse\ -\ S02E0$i*.mkv)
fi
# extract out dts track (id: 1 all files)
dtsfile="s02e${i}.dts"
mkvextract "${name}" tracks 1:${dtsfile}
# convert dts track to FLAC
ffmpeg -acodec dts -i "$dtsfile" -vn -sn -acodec flac "s02e${i}.flac"
mv "$name" s02e${i}.mkv
# add FLAC track to original mkv
mkvmerge -o "$name" s02e${i}.mkv s02e${i}.flac
# set FLAC track (3rd audio track) language as english
mkvpropedit "$name" --edit track:a3 --set language=eng
# make FLAC track default audio track
mkvpropedit "$name" --edit track:a1 --set flag-default=0
mkvpropedit "$name" --edit track:a3 --set flag-default=1
# cleanup
for ext in dts flac mkv; do
rm s02e${i}.${ext}
done
# if [[ "$i" -eq 1 ]]; then
# echo "stopping after $i"
# exit
# fi
done
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment