Quellcode durchsuchen

Script to drop the DTS-core stream from MKV files with match HD/Core stream pairs

Zachary Kotlarek vor 14 Jahren
Ursprung
Commit
44be2abd97
2 geänderte Dateien mit 57 neuen und 6 gelöschten Zeilen
  1. 0 6
      isScanning
  2. 57 0
      reduce.sh

+ 0 - 6
isScanning

@@ -1,6 +0,0 @@
-#!/bin/bash
-
-if ps auwx | grep -v grep | grep -q 'Plex Media Scanner'; then
-	exit 1
-fi
-exit 0

+ 57 - 0
reduce.sh

@@ -0,0 +1,57 @@
+#!/bin/bash
+
+cd /mnt/media/Movies
+for i in *.mkv; do
+	INFO="`~/bin/video/HandbrakeCLI --title 0 --input "${i}" 2>&1`"
+	AUDIO_STREAMS="`echo "${INFO}" | grep 'Stream #0\.[0-9]*\(.*\): Audio: '`"
+	DTS_STREAMS="`echo "${AUDIO_STREAMS}" | grep 'Audio: dca (DTS'`"
+	NUM_DTS_STREAMS="`echo "${DTS_STREAMS}" | wc -l`"
+
+	if [ ${NUM_DTS_STREAMS} -eq 2 ]; then
+		CORE_STREAM=-1
+		HD_STREAM=-1
+
+		IFS=$'\n'
+		for j in ${DTS_STREAMS}; do
+			STREAM_ID="`echo "${j}" | sed 's%^.*Stream #0\.\([0-9]*\)(.*$%\1%'`"
+			if echo "${j}" | grep -q 'DTS-HD'; then
+				if [ $HD_STREAM -ge 0 ]; then
+					echo "Cannot reduce: ${i}: Multiple HD streams detected"
+					break
+				fi
+				HD_STREAM=$STREAM_ID
+			else
+				if [ $CORE_STREAM -ge 0 ]; then
+					echo "Cannot reduce: ${i}: Multiple core streams detected"
+					break
+				fi
+				CORE_STREAM=$STREAM_ID
+			fi
+		done
+
+		if [ $CORE_STREAM -lt 0 ] || [ $HD_STREAM -lt 0 ]; then
+			echo "Cannot reduce: ${i}: No HD/Core pair detected"
+			continue
+		fi
+
+		KEEP_STREAMS=""
+		for j in ${AUDIO_STREAMS}; do
+			STREAM_ID="`echo "${j}" | sed 's%^.*Stream #0\.\([0-9]*\)(.*$%\1%'`"
+			if [ ${STREAM_ID} -ne ${CORE_STREAM} ]; then
+				if [ -n "${KEEP_STREAMS}" ]; then
+					KEEP_STREAMS="${KEEP_STREAMS},"
+				fi
+				KEEP_STREAMS="${KEEP_STREAMS}${STREAM_ID}"
+			fi
+		done
+
+		echo "Reducing: ${i}"
+		echo -e "\n\n\n${i}\n\n" >> ~/.Trash/mkvmerge.out
+		echo mkvmerge --output "${i}.new" --audio-tracks "${KEEP_STREAMS}" "${i}" >> ~/.Trash/mkvmerge.out 2>&1
+		mkvmerge --output "${i}.new" --audio-tracks "${KEEP_STREAMS}" "${i}" >> ~/.Trash/mkvmerge.out 2>&1
+	elif [ ${NUM_DTS_STREAMS} -gt 2 ]; then
+		echo "Cannot reduce: ${i}: Too many DTS streams"
+	else
+		echo "No DTS streams in: ${i}"
+	fi
+done