just updates
This commit is contained in:
74
vp9_discord8MB.py
Normal file
74
vp9_discord8MB.py
Normal file
@@ -0,0 +1,74 @@
|
||||
import subprocess
|
||||
import sys
|
||||
from pathlib import Path
|
||||
import os
|
||||
import re
|
||||
import math
|
||||
ffmpeg_location = "D:/FFMPEG/bin/ffmpeg.exe"
|
||||
ffprobe_location = "D:/FFMPEG/bin/ffprobe.exe"
|
||||
output_folder_name ="/bulk_convert_out/"
|
||||
|
||||
#total filesize allowed in kilobits
|
||||
total_max_bits = 75000
|
||||
|
||||
|
||||
|
||||
droppedFile = sys.argv[1]
|
||||
droppedName = Path(droppedFile).name
|
||||
originalfiles = sys.orig_argv[2:]
|
||||
|
||||
#long path shenanigans
|
||||
joined = (' '.join(originalfiles))
|
||||
re.sub (' +', ' ', joined)
|
||||
listed = re.split(r'(.+?mkv)', joined)
|
||||
listed = list(filter(None, listed))
|
||||
listed = [i.lstrip() for i in listed]
|
||||
|
||||
print(droppedName)
|
||||
|
||||
#get path of script location and remove the tail
|
||||
head_tail = os.path.split(sys.argv[0])
|
||||
output_path = head_tail[0]
|
||||
|
||||
#get location of input file
|
||||
inpath = os.path.split(sys.argv[1])
|
||||
outpath = inpath[0]
|
||||
|
||||
|
||||
#skip first part of sys.argv since it points to script location
|
||||
arguments = sys.argv[1:]
|
||||
|
||||
|
||||
|
||||
for i, file in enumerate(arguments):
|
||||
|
||||
arg_list = '{ffprobe_location} -show_entries format=duration -i "{file}"'.format(ffprobe_location=ffprobe_location, file=file)
|
||||
print(arg_list)
|
||||
cmd = subprocess.Popen(arg_list, stdout=subprocess.PIPE, stderr=subprocess.PIPE, encoding='UTF-8')
|
||||
|
||||
subprocess_std = cmd.communicate()[0]
|
||||
|
||||
print("stdout printing: " , subprocess_std)
|
||||
video_duration = [int(s) for s in re.findall(r"[0-9]+", subprocess_std)][0]
|
||||
print("video_duration: ", video_duration, "s")
|
||||
|
||||
|
||||
avg_audiorate = video_duration * 68
|
||||
max_bitrate = (total_max_bits - avg_audiorate) / video_duration
|
||||
print(max_bitrate)
|
||||
avg_bitrate = 0.7*max_bitrate
|
||||
max_bitrate = math.floor(max_bitrate)
|
||||
avg_bitrate = math.floor(avg_bitrate)
|
||||
print(avg_audiorate)
|
||||
|
||||
print(max_bitrate)
|
||||
print(avg_bitrate)
|
||||
|
||||
basename = Path(file).stem
|
||||
ffmpeg_args = '{ffmpeg_location} -i "{file}" -c:v libvpx-vp9 -vf "fps=30,scale=1280:-2" -b:v {avg_bitrate}k -maxrate {max_bitrate}k -bufsize 2M -pass 1 -threads 16 -speed 4 -row-mt 1 -tile-rows 2 -tile-columns 6 -f null NUL'.format(ffmpeg_location=ffmpeg_location, file=file, avg_bitrate=avg_bitrate, max_bitrate=max_bitrate)
|
||||
cmd = subprocess.call(ffmpeg_args)
|
||||
|
||||
ffmpeg_args = '{ffmpeg_location} -i "{file}" -c:v libvpx-vp9 -vf "fps=30,scale=1280:-2" -b:v {avg_bitrate}k -maxrate {max_bitrate}k -bufsize 2M -c:a libopus -b:a 68k -pass 2 -threads 16 -speed 4 -row-mt 1 -tile-rows 2 -tile-columns 6 -f webm "{outpath}\{basename}.webm"'.format(ffmpeg_location=ffmpeg_location, file=file, avg_bitrate=avg_bitrate, max_bitrate=max_bitrate,outpath=outpath, basename=basename)
|
||||
cmd = subprocess.call(ffmpeg_args)
|
||||
|
||||
input()
|
||||
Reference in New Issue
Block a user