Files
ffmpeg_collection/sub-and-audio_drop.py
2022-09-09 19:46:34 +02:00

54 lines
1.5 KiB
Python

import re
import subprocess
import sys
from pathlib import Path
import os
regex_subtitle = re.compile("Stream #0:\d(\(\w*\))?: Subtitle:.*")
regex_audio = re.compile("Stream #0:\d(\(\w*\))?: Audio:.*")
droppedFile = sys.argv[1]
droppedName = Path(droppedFile).name
skipto = " -ss "
#droppedFile = "test.mkv"
del sys.argv[0]
for i, file in enumerate(sys.argv):
arg_list = 'ffprobe.exe -i "{file}"'.format(file=file)
cmd = subprocess.Popen(arg_list, stdout=subprocess.PIPE, stderr=subprocess.PIPE, encoding='UTF-8')
subprocess_err = cmd.communicate()[1]
print("file", i+1)
for r, match in enumerate(regex_audio.finditer(subprocess_err)):
print("Audio Track", r,": ", match.group(0))
for r, match in enumerate(regex_subtitle.finditer(subprocess_err)):
print("Subtitle Track", r,": ", match.group(0))
print('\n')
x = (int(x) for x in input ("Enter audio tracks to keep: ").split())
audio_track = "".join(" -map 0:a:{}".format(y) for y in x)
z = (int(z) for z in input ("Enter subtitle tracks to keep: ").split())
subtitle_track = "".join(" -map 0:s:{}".format(y) for y in z)
for file in sys.argv:
basename = os.path.basename(file)
arg_list = 'ffmpeg.exe -i "{file}" -map 0:v {audio_track} {subtitle_track} -c copy "E:/Projects/ffmpeg_tests/audio_tracks/out/{basename}"'.format(file=file, audio_track=audio_track, subtitle_track=subtitle_track, basename=basename)
print(arg_list)
subprocess.run(arg_list)
input("press enter to exit")