mirror of
https://github.com/clinton-hall/nzbToMedia.git
synced 2025-07-15 01:32:53 -07:00
add Audio Channels. #474
This commit is contained in:
parent
9cc807b62b
commit
1b25bc3773
5 changed files with 109 additions and 61 deletions
|
@ -280,12 +280,15 @@
|
||||||
outputVideoBitrate = 800000
|
outputVideoBitrate = 800000
|
||||||
outputAudioCodec = ac3
|
outputAudioCodec = ac3
|
||||||
AudioCodecAllow =
|
AudioCodecAllow =
|
||||||
outputAudioBitrate = 160000
|
outputAudioChannels = 6
|
||||||
|
outputAudioBitrate = 640k
|
||||||
outputAudioTrack2Codec = libfaac
|
outputAudioTrack2Codec = libfaac
|
||||||
AudioCodec2Allow =
|
AudioCodec2Allow =
|
||||||
|
outputAudioTrack2Channels = 2
|
||||||
outputAudioTrack2Bitrate = 128000
|
outputAudioTrack2Bitrate = 128000
|
||||||
outputAudioOtherCodec = libmp3lame
|
outputAudioOtherCodec = libmp3lame
|
||||||
AudioOtherCodecAllow =
|
AudioOtherCodecAllow =
|
||||||
|
outputAudioOtherChannels =
|
||||||
outputAudioOtherBitrate = 128000
|
outputAudioOtherBitrate = 128000
|
||||||
outputSubtitleCodec =
|
outputSubtitleCodec =
|
||||||
|
|
||||||
|
|
|
@ -386,15 +386,18 @@
|
||||||
#outputVideoPreset=medium
|
#outputVideoPreset=medium
|
||||||
#outputVideoFramerate=24
|
#outputVideoFramerate=24
|
||||||
#outputVideoBitrate=800k
|
#outputVideoBitrate=800k
|
||||||
#outputAudioCodec=libmp3lame
|
#outputAudioCodec=ac3
|
||||||
#AudioCodecAllow=
|
#AudioCodecAllow=
|
||||||
#outputAudioBitrate=128k
|
#outputAudioChannels=6
|
||||||
#outputQualityPercent = 0
|
#outputAudioBitrate=640k
|
||||||
|
#outputQualityPercent=
|
||||||
#outputAudioTrack2Codec=libfaac
|
#outputAudioTrack2Codec=libfaac
|
||||||
#AudioCodec2Allow=
|
#AudioCodec2Allow=
|
||||||
#outputAudioTrack2Bitrate = 128k
|
#outputAudioTrack2Channels=2
|
||||||
|
#outputAudioTrack2Bitrate=160k
|
||||||
#outputAudioOtherCodec=libmp3lame
|
#outputAudioOtherCodec=libmp3lame
|
||||||
#AudioOtherCodecAllow=
|
#AudioOtherCodecAllow=
|
||||||
|
#outputAudioOtherChannels=2
|
||||||
#outputAudioOtherBitrate=128k
|
#outputAudioOtherBitrate=128k
|
||||||
#outputSubtitleCodec=
|
#outputSubtitleCodec=
|
||||||
|
|
||||||
|
|
|
@ -146,12 +146,15 @@ VBITRATE = None
|
||||||
VRESOLUTION = None
|
VRESOLUTION = None
|
||||||
ACODEC = None
|
ACODEC = None
|
||||||
ACODEC_ALLOW = []
|
ACODEC_ALLOW = []
|
||||||
|
ACHANNELS = None
|
||||||
ABITRATE = None
|
ABITRATE = None
|
||||||
ACODEC2 = None
|
ACODEC2 = None
|
||||||
ACODEC2_ALLOW = []
|
ACODEC2_ALLOW = []
|
||||||
|
ACHANNELS2 = None
|
||||||
ABITRATE2 = None
|
ABITRATE2 = None
|
||||||
ACODEC3 = None
|
ACODEC3 = None
|
||||||
ACODEC3_ALLOW = []
|
ACODEC3_ALLOW = []
|
||||||
|
ACHANNELS3 = None
|
||||||
ABITRATE3 = None
|
ABITRATE3 = None
|
||||||
SCODEC = None
|
SCODEC = None
|
||||||
OUTPUTFASTSTART = None
|
OUTPUTFASTSTART = None
|
||||||
|
@ -191,7 +194,7 @@ def initialize(section=None):
|
||||||
NICENESS, LOG_DEBUG, FORCE_CLEAN, FFMPEG_PATH, FFMPEG, FFPROBE, AUDIOCONTAINER, EXTCONTAINER, TORRENT_CLASS, \
|
NICENESS, LOG_DEBUG, FORCE_CLEAN, FFMPEG_PATH, FFMPEG, FFPROBE, AUDIOCONTAINER, EXTCONTAINER, TORRENT_CLASS, \
|
||||||
DELETE_ORIGINAL, PASSWORDSFILE, USER_DELAY, USER_SCRIPT, USER_SCRIPT_CLEAN, USER_SCRIPT_MEDIAEXTENSIONS, \
|
DELETE_ORIGINAL, PASSWORDSFILE, USER_DELAY, USER_SCRIPT, USER_SCRIPT_CLEAN, USER_SCRIPT_MEDIAEXTENSIONS, \
|
||||||
USER_SCRIPT_PARAM, USER_SCRIPT_RUNONCE, USER_SCRIPT_SUCCESSCODES, DOWNLOADINFO, CHECK_MEDIA, SAFE_MODE, \
|
USER_SCRIPT_PARAM, USER_SCRIPT_RUNONCE, USER_SCRIPT_SUCCESSCODES, DOWNLOADINFO, CHECK_MEDIA, SAFE_MODE, \
|
||||||
TORRENT_DEFAULTDIR, NZB_DEFAULTDIR, REMOTEPATHS, LOG_ENV, PID_FILE, MYAPP
|
TORRENT_DEFAULTDIR, NZB_DEFAULTDIR, REMOTEPATHS, LOG_ENV, PID_FILE, MYAPP, ACHANNELS, ACHANNELS2, ACHANNELS3
|
||||||
|
|
||||||
if __INITIALIZED__:
|
if __INITIALIZED__:
|
||||||
return False
|
return False
|
||||||
|
@ -376,18 +379,27 @@ def initialize(section=None):
|
||||||
ACODEC = CFG["Transcoder"]["outputAudioCodec"].strip()
|
ACODEC = CFG["Transcoder"]["outputAudioCodec"].strip()
|
||||||
ACODEC_ALLOW = CFG["Transcoder"]["AudioCodecAllow"].strip()
|
ACODEC_ALLOW = CFG["Transcoder"]["AudioCodecAllow"].strip()
|
||||||
if isinstance(ACODEC_ALLOW, str): ACODEC_ALLOW = ACODEC_ALLOW.split(',')
|
if isinstance(ACODEC_ALLOW, str): ACODEC_ALLOW = ACODEC_ALLOW.split(',')
|
||||||
|
try:
|
||||||
|
ACHANNELS = int(CFG["Transcoder"]["outputAudioChannels"].strip())
|
||||||
|
except: pass
|
||||||
try:
|
try:
|
||||||
ABITRATE = int((CFG["Transcoder"]["outputAudioBitrate"].strip()).replace('k','000'))
|
ABITRATE = int((CFG["Transcoder"]["outputAudioBitrate"].strip()).replace('k','000'))
|
||||||
except: pass
|
except: pass
|
||||||
ACODEC2 = CFG["Transcoder"]["outputAudioTrack2Codec"].strip()
|
ACODEC2 = CFG["Transcoder"]["outputAudioTrack2Codec"].strip()
|
||||||
ACODEC2_ALLOW = CFG["Transcoder"]["AudioCodec2Allow"].strip()
|
ACODEC2_ALLOW = CFG["Transcoder"]["AudioCodec2Allow"].strip()
|
||||||
if isinstance(ACODEC2_ALLOW, str): ACODEC2_ALLOW = ACODEC2_ALLOW.split(',')
|
if isinstance(ACODEC2_ALLOW, str): ACODEC2_ALLOW = ACODEC2_ALLOW.split(',')
|
||||||
|
try:
|
||||||
|
ACHANNELS2 = int(CFG["Transcoder"]["outputAudioTrack2Channels"].strip())
|
||||||
|
except: pass
|
||||||
try:
|
try:
|
||||||
ABITRATE2 = int((CFG["Transcoder"]["outputAudioTrack2Bitrate"].strip()).replace('k','000'))
|
ABITRATE2 = int((CFG["Transcoder"]["outputAudioTrack2Bitrate"].strip()).replace('k','000'))
|
||||||
except: pass
|
except: pass
|
||||||
ACODEC3 = CFG["Transcoder"]["outputAudioOtherCodec"].strip()
|
ACODEC3 = CFG["Transcoder"]["outputAudioOtherCodec"].strip()
|
||||||
ACODEC3_ALLOW = CFG["Transcoder"]["AudioOtherCodecAllow"].strip()
|
ACODEC3_ALLOW = CFG["Transcoder"]["AudioOtherCodecAllow"].strip()
|
||||||
if isinstance(ACODEC3_ALLOW, str): ACODEC3_ALLOW = ACODEC3_ALLOW.split(',')
|
if isinstance(ACODEC3_ALLOW, str): ACODEC3_ALLOW = ACODEC3_ALLOW.split(',')
|
||||||
|
try:
|
||||||
|
ACHANNELS3 = int(CFG["Transcoder"]["outputAudioOtherChannels"].strip())
|
||||||
|
except: pass
|
||||||
try:
|
try:
|
||||||
ABITRATE3 = int((CFG["Transcoder"]["outputAudioOtherBitrate"].strip()).replace('k','000'))
|
ABITRATE3 = int((CFG["Transcoder"]["outputAudioOtherBitrate"].strip()).replace('k','000'))
|
||||||
except: pass
|
except: pass
|
||||||
|
@ -405,81 +417,81 @@ def initialize(section=None):
|
||||||
'iPad':{
|
'iPad':{
|
||||||
'VEXTENSION':'.mp4','VCODEC':'libx264','VPRESET':None,'VFRAMERATE':None,'VBITRATE':None,
|
'VEXTENSION':'.mp4','VCODEC':'libx264','VPRESET':None,'VFRAMERATE':None,'VBITRATE':None,
|
||||||
'VRESOLUTION':None,'VCODEC_ALLOW':['libx264', 'h264', 'h.264', 'AVC', 'avc', 'mpeg4', 'msmpeg4', 'MPEG-4'],
|
'VRESOLUTION':None,'VCODEC_ALLOW':['libx264', 'h264', 'h.264', 'AVC', 'avc', 'mpeg4', 'msmpeg4', 'MPEG-4'],
|
||||||
'ACODEC':'aac','ACODEC_ALLOW':['libfaac'],'ABITRATE':None,
|
'ACODEC':'aac','ACODEC_ALLOW':['libfaac'],'ABITRATE':None, 'ACHANNELS':2,
|
||||||
'ACODEC2':'ac3','ACODEC2_ALLOW':['ac3'],'ABITRATE2':None,
|
'ACODEC2':'ac3','ACODEC2_ALLOW':['ac3'],'ABITRATE2':None, 'ACHANNELS2':6,
|
||||||
'ACODEC3':None,'ACODEC3_ALLOW':[],'ABITRATE3':None,
|
'ACODEC3':None,'ACODEC3_ALLOW':[],'ABITRATE3':None, 'ACHANNELS':None,
|
||||||
'SCODEC':'mov_text'
|
'SCODEC':'mov_text'
|
||||||
},
|
},
|
||||||
'iPad-1080p':{
|
'iPad-1080p':{
|
||||||
'VEXTENSION':'.mp4','VCODEC':'libx264','VPRESET':None,'VFRAMERATE':None,'VBITRATE':None,
|
'VEXTENSION':'.mp4','VCODEC':'libx264','VPRESET':None,'VFRAMERATE':None,'VBITRATE':None,
|
||||||
'VRESOLUTION':'1920:1080','VCODEC_ALLOW':['libx264', 'h264', 'h.264', 'AVC', 'avc', 'mpeg4', 'msmpeg4', 'MPEG-4'],
|
'VRESOLUTION':'1920:1080','VCODEC_ALLOW':['libx264', 'h264', 'h.264', 'AVC', 'avc', 'mpeg4', 'msmpeg4', 'MPEG-4'],
|
||||||
'ACODEC':'aac','ACODEC_ALLOW':['libfaac'],'ABITRATE':None,
|
'ACODEC':'aac','ACODEC_ALLOW':['libfaac'],'ABITRATE':None, 'ACHANNELS':2,
|
||||||
'ACODEC2':'ac3','ACODEC2_ALLOW':['ac3'],'ABITRATE2':None,
|
'ACODEC2':'ac3','ACODEC2_ALLOW':['ac3'],'ABITRATE2':None, 'ACHANNELS2':6,
|
||||||
'ACODEC3':None,'ACODEC3_ALLOW':[],'ABITRATE3':None,
|
'ACODEC3':None,'ACODEC3_ALLOW':[],'ABITRATE3':None, 'ACHANNELS3':None,
|
||||||
'SCODEC':'mov_text'
|
'SCODEC':'mov_text'
|
||||||
},
|
},
|
||||||
'iPad-720p':{
|
'iPad-720p':{
|
||||||
'VEXTENSION':'.mp4','VCODEC':'libx264','VPRESET':None,'VFRAMERATE':None,'VBITRATE':None,
|
'VEXTENSION':'.mp4','VCODEC':'libx264','VPRESET':None,'VFRAMERATE':None,'VBITRATE':None,
|
||||||
'VRESOLUTION':'1280:720','VCODEC_ALLOW':['libx264', 'h264', 'h.264', 'AVC', 'avc', 'mpeg4', 'msmpeg4', 'MPEG-4'],
|
'VRESOLUTION':'1280:720','VCODEC_ALLOW':['libx264', 'h264', 'h.264', 'AVC', 'avc', 'mpeg4', 'msmpeg4', 'MPEG-4'],
|
||||||
'ACODEC':'aac','ACODEC_ALLOW':['libfaac'],'ABITRATE':None,
|
'ACODEC':'aac','ACODEC_ALLOW':['libfaac'],'ABITRATE':None, 'ACHANNELS':2,
|
||||||
'ACODEC2':'ac3','ACODEC2_ALLOW':['ac3'],'ABITRATE2':None,
|
'ACODEC2':'ac3','ACODEC2_ALLOW':['ac3'],'ABITRATE2':None, 'ACHANNELS2':6,
|
||||||
'ACODEC3':None,'ACODEC3_ALLOW':[],'ABITRATE3':None,
|
'ACODEC3':None,'ACODEC3_ALLOW':[],'ABITRATE3':None, 'ACHANNELS3':None,
|
||||||
'SCODEC':'mov_text'
|
'SCODEC':'mov_text'
|
||||||
},
|
},
|
||||||
'Apple-TV':{
|
'Apple-TV':{
|
||||||
'VEXTENSION':'.mp4','VCODEC':'libx264','VPRESET':None,'VFRAMERATE':None,'VBITRATE':None,
|
'VEXTENSION':'.mp4','VCODEC':'libx264','VPRESET':None,'VFRAMERATE':None,'VBITRATE':None,
|
||||||
'VRESOLUTION':'1280:720','VCODEC_ALLOW':['libx264', 'h264', 'h.264', 'AVC', 'avc', 'mpeg4', 'msmpeg4', 'MPEG-4'],
|
'VRESOLUTION':'1280:720','VCODEC_ALLOW':['libx264', 'h264', 'h.264', 'AVC', 'avc', 'mpeg4', 'msmpeg4', 'MPEG-4'],
|
||||||
'ACODEC':'ac3','ACODEC_ALLOW':['ac3'],'ABITRATE':None,
|
'ACODEC':'ac3','ACODEC_ALLOW':['ac3'],'ABITRATE':None, 'ACHANNELS':6,
|
||||||
'ACODEC2':'aac','ACODEC2_ALLOW':['libfaac'],'ABITRATE2':None,
|
'ACODEC2':'aac','ACODEC2_ALLOW':['libfaac'],'ABITRATE2':None, 'ACHANNELS2':2,
|
||||||
'ACODEC3':None,'ACODEC3_ALLOW':[],'ABITRATE3':None,
|
'ACODEC3':None,'ACODEC3_ALLOW':[],'ABITRATE3':None, 'ACHANNELS3':None,
|
||||||
'SCODEC':'mov_text'
|
'SCODEC':'mov_text'
|
||||||
},
|
},
|
||||||
'iPod':{
|
'iPod':{
|
||||||
'VEXTENSION':'.mp4','VCODEC':'libx264','VPRESET':None,'VFRAMERATE':None,'VBITRATE':None,
|
'VEXTENSION':'.mp4','VCODEC':'libx264','VPRESET':None,'VFRAMERATE':None,'VBITRATE':None,
|
||||||
'VRESOLUTION':'1280:720','VCODEC_ALLOW':['libx264', 'h264', 'h.264', 'AVC', 'avc', 'mpeg4', 'msmpeg4', 'MPEG-4'],
|
'VRESOLUTION':'1280:720','VCODEC_ALLOW':['libx264', 'h264', 'h.264', 'AVC', 'avc', 'mpeg4', 'msmpeg4', 'MPEG-4'],
|
||||||
'ACODEC':'aac','ACODEC_ALLOW':['libfaac'],'ABITRATE':128000,
|
'ACODEC':'aac','ACODEC_ALLOW':['libfaac'],'ABITRATE':128000, 'ACHANNELS':2,
|
||||||
'ACODEC2':None,'ACODEC2_ALLOW':[],'ABITRATE2':None,
|
'ACODEC2':None,'ACODEC2_ALLOW':[],'ABITRATE2':None, 'ACHANNELS2':None,
|
||||||
'ACODEC3':None,'ACODEC3_ALLOW':[],'ABITRATE3':None,
|
'ACODEC3':None,'ACODEC3_ALLOW':[],'ABITRATE3':None, 'ACHANNELS3':None,
|
||||||
'SCODEC':'mov_text'
|
'SCODEC':'mov_text'
|
||||||
},
|
},
|
||||||
'iPhone':{
|
'iPhone':{
|
||||||
'VEXTENSION':'.mp4','VCODEC':'libx264','VPRESET':None,'VFRAMERATE':None,'VBITRATE':None,
|
'VEXTENSION':'.mp4','VCODEC':'libx264','VPRESET':None,'VFRAMERATE':None,'VBITRATE':None,
|
||||||
'VRESOLUTION':'460:320','VCODEC_ALLOW':['libx264', 'h264', 'h.264', 'AVC', 'avc', 'mpeg4', 'msmpeg4', 'MPEG-4'],
|
'VRESOLUTION':'460:320','VCODEC_ALLOW':['libx264', 'h264', 'h.264', 'AVC', 'avc', 'mpeg4', 'msmpeg4', 'MPEG-4'],
|
||||||
'ACODEC':'aac','ACODEC_ALLOW':['libfaac'],'ABITRATE':128000,
|
'ACODEC':'aac','ACODEC_ALLOW':['libfaac'],'ABITRATE':128000, 'ACHANNELS':2,
|
||||||
'ACODEC2':None,'ACODEC2_ALLOW':[],'ABITRATE2':None,
|
'ACODEC2':None,'ACODEC2_ALLOW':[],'ABITRATE2':None, 'ACHANNELS2':None,
|
||||||
'ACODEC3':None,'ACODEC3_ALLOW':[],'ABITRATE3':None,
|
'ACODEC3':None,'ACODEC3_ALLOW':[],'ABITRATE3':None, 'ACHANNELS3':None,
|
||||||
'SCODEC':'mov_text'
|
'SCODEC':'mov_text'
|
||||||
},
|
},
|
||||||
'PS3':{
|
'PS3':{
|
||||||
'VEXTENSION':'.mp4','VCODEC':'libx264','VPRESET':None,'VFRAMERATE':None,'VBITRATE':None,
|
'VEXTENSION':'.mp4','VCODEC':'libx264','VPRESET':None,'VFRAMERATE':None,'VBITRATE':None,
|
||||||
'VRESOLUTION':None,'VCODEC_ALLOW':['libx264', 'h264', 'h.264', 'AVC', 'avc', 'mpeg4', 'msmpeg4', 'MPEG-4'],
|
'VRESOLUTION':None,'VCODEC_ALLOW':['libx264', 'h264', 'h.264', 'AVC', 'avc', 'mpeg4', 'msmpeg4', 'MPEG-4'],
|
||||||
'ACODEC':'ac3','ACODEC_ALLOW':['ac3'],'ABITRATE':None,
|
'ACODEC':'ac3','ACODEC_ALLOW':['ac3'],'ABITRATE':None, 'ACHANNELS':6,
|
||||||
'ACODEC2':'aac','ACODEC2_ALLOW':['libfaac'],'ABITRATE2':None,
|
'ACODEC2':'aac','ACODEC2_ALLOW':['libfaac'],'ABITRATE2':None, 'ACHANNELS2':2,
|
||||||
'ACODEC3':None,'ACODEC3_ALLOW':[],'ABITRATE3':None,
|
'ACODEC3':None,'ACODEC3_ALLOW':[],'ABITRATE3':None, 'ACHANNELS3':None,
|
||||||
'SCODEC':'mov_text'
|
'SCODEC':'mov_text'
|
||||||
},
|
},
|
||||||
'Roku-480p':{
|
'Roku-480p':{
|
||||||
'VEXTENSION':'.mp4','VCODEC':'libx264','VPRESET':None,'VFRAMERATE':None,'VBITRATE':None,
|
'VEXTENSION':'.mp4','VCODEC':'libx264','VPRESET':None,'VFRAMERATE':None,'VBITRATE':None,
|
||||||
'VRESOLUTION':None,'VCODEC_ALLOW':['libx264', 'h264', 'h.264', 'AVC', 'avc', 'mpeg4', 'msmpeg4', 'MPEG-4'],
|
'VRESOLUTION':None,'VCODEC_ALLOW':['libx264', 'h264', 'h.264', 'AVC', 'avc', 'mpeg4', 'msmpeg4', 'MPEG-4'],
|
||||||
'ACODEC':'aac','ACODEC_ALLOW':['libfaac'],'ABITRATE':128000,
|
'ACODEC':'aac','ACODEC_ALLOW':['libfaac'],'ABITRATE':128000, 'ACHANNELS':2,
|
||||||
'ACODEC2':'ac3','ACODEC2_ALLOW':['ac3'],'ABITRATE2':None,
|
'ACODEC2':'ac3','ACODEC2_ALLOW':['ac3'],'ABITRATE2':None, 'ACHANNELS2':6,
|
||||||
'ACODEC3':None,'ACODEC3_ALLOW':[],'ABITRATE3':None,
|
'ACODEC3':None,'ACODEC3_ALLOW':[],'ABITRATE3':None, 'ACHANNELS3':None,
|
||||||
'SCODEC':'mov_text'
|
'SCODEC':'mov_text'
|
||||||
},
|
},
|
||||||
'Roku-720p':{
|
'Roku-720p':{
|
||||||
'VEXTENSION':'.mp4','VCODEC':'libx264','VPRESET':None,'VFRAMERATE':None,'VBITRATE':None,
|
'VEXTENSION':'.mp4','VCODEC':'libx264','VPRESET':None,'VFRAMERATE':None,'VBITRATE':None,
|
||||||
'VRESOLUTION':None,'VCODEC_ALLOW':['libx264', 'h264', 'h.264', 'AVC', 'avc', 'mpeg4', 'msmpeg4', 'MPEG-4'],
|
'VRESOLUTION':None,'VCODEC_ALLOW':['libx264', 'h264', 'h.264', 'AVC', 'avc', 'mpeg4', 'msmpeg4', 'MPEG-4'],
|
||||||
'ACODEC':'aac','ACODEC_ALLOW':['libfaac'],'ABITRATE':128000,
|
'ACODEC':'aac','ACODEC_ALLOW':['libfaac'],'ABITRATE':128000, 'ACHANNELS':2,
|
||||||
'ACODEC2':'ac3','ACODEC2_ALLOW':['ac3'],'ABITRATE2':None,
|
'ACODEC2':'ac3','ACODEC2_ALLOW':['ac3'],'ABITRATE2':None, 'ACHANNELS2':6,
|
||||||
'ACODEC3':None,'ACODEC3_ALLOW':[],'ABITRATE3':None,
|
'ACODEC3':None,'ACODEC3_ALLOW':[],'ABITRATE3':None, 'ACHANNELS3':None,
|
||||||
'SCODEC':'mov_text'
|
'SCODEC':'mov_text'
|
||||||
},
|
},
|
||||||
'Roku-1080p':{
|
'Roku-1080p':{
|
||||||
'VEXTENSION':'.mp4','VCODEC':'libx264','VPRESET':None,'VFRAMERATE':None,'VBITRATE':None,
|
'VEXTENSION':'.mp4','VCODEC':'libx264','VPRESET':None,'VFRAMERATE':None,'VBITRATE':None,
|
||||||
'VRESOLUTION':None,'VCODEC_ALLOW':['libx264', 'h264', 'h.264', 'AVC', 'avc', 'mpeg4', 'msmpeg4', 'MPEG-4'],
|
'VRESOLUTION':None,'VCODEC_ALLOW':['libx264', 'h264', 'h.264', 'AVC', 'avc', 'mpeg4', 'msmpeg4', 'MPEG-4'],
|
||||||
'ACODEC':'aac','ACODEC_ALLOW':['libfaac'],'ABITRATE':160000,
|
'ACODEC':'aac','ACODEC_ALLOW':['libfaac'],'ABITRATE':160000, 'ACHANNELS':2,
|
||||||
'ACODEC2':'ac3','ACODEC2_ALLOW':['ac3'],'ABITRATE2':None,
|
'ACODEC2':'ac3','ACODEC2_ALLOW':['ac3'],'ABITRATE2':None, 'ACHANNELS2':6,
|
||||||
'ACODEC3':None,'ACODEC3_ALLOW':[],'ABITRATE3':None,
|
'ACODEC3':None,'ACODEC3_ALLOW':[],'ABITRATE3':None, 'ACHANNELS3':None,
|
||||||
'SCODEC':'mov_text'
|
'SCODEC':'mov_text'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -493,12 +505,15 @@ def initialize(section=None):
|
||||||
VCODEC_ALLOW = transcode_defaults[DEFAULTS]['VCODEC_ALLOW']
|
VCODEC_ALLOW = transcode_defaults[DEFAULTS]['VCODEC_ALLOW']
|
||||||
ACODEC = transcode_defaults[DEFAULTS]['ACODEC']
|
ACODEC = transcode_defaults[DEFAULTS]['ACODEC']
|
||||||
ACODEC_ALLOW = transcode_defaults[DEFAULTS]['ACODEC_ALLOW']
|
ACODEC_ALLOW = transcode_defaults[DEFAULTS]['ACODEC_ALLOW']
|
||||||
|
ACHANNELS = transcode_defaults[DEFAULTS]['ACHANNELS']
|
||||||
ABITRATE = transcode_defaults[DEFAULTS]['ABITRATE']
|
ABITRATE = transcode_defaults[DEFAULTS]['ABITRATE']
|
||||||
ACODEC2 = transcode_defaults[DEFAULTS]['ACODEC2']
|
ACODEC2 = transcode_defaults[DEFAULTS]['ACODEC2']
|
||||||
ACODEC2_ALLOW = transcode_defaults[DEFAULTS]['ACODEC2_ALLOW']
|
ACODEC2_ALLOW = transcode_defaults[DEFAULTS]['ACODEC2_ALLOW']
|
||||||
|
ACHANNELS2 = transcode_defaults[DEFAULTS]['ACHANNELS2']
|
||||||
ABITRATE2 = transcode_defaults[DEFAULTS]['ABITRATE2']
|
ABITRATE2 = transcode_defaults[DEFAULTS]['ABITRATE2']
|
||||||
ACODEC3 = transcode_defaults[DEFAULTS]['ACODEC3']
|
ACODEC3 = transcode_defaults[DEFAULTS]['ACODEC3']
|
||||||
ACODEC3_ALLOW = transcode_defaults[DEFAULTS]['ACODEC3_ALLOW']
|
ACODEC3_ALLOW = transcode_defaults[DEFAULTS]['ACODEC3_ALLOW']
|
||||||
|
ACHANNELS3 = transcode_defaults[DEFAULTS]['ACHANNELS3']
|
||||||
ABITRATE3 = transcode_defaults[DEFAULTS]['ABITRATE3']
|
ABITRATE3 = transcode_defaults[DEFAULTS]['ABITRATE3']
|
||||||
SCODEC = transcode_defaults[DEFAULTS]['SCODEC']
|
SCODEC = transcode_defaults[DEFAULTS]['SCODEC']
|
||||||
transcode_defaults = {} # clear memory
|
transcode_defaults = {} # clear memory
|
||||||
|
|
|
@ -373,11 +373,13 @@ class ConfigObj(configobj.ConfigObj, Section):
|
||||||
envKeys = ['TRANSCODE', 'DUPLICATE', 'NICENESS', 'IGNOREEXTENSIONS', 'OUTPUTFASTSTART', 'OUTPUTVIDEOPATH', 'PROCESSOUTPUT', 'AUDIOLANGUAGE', 'ALLAUDIOLANGUAGES', 'SUBLANGUAGES',
|
envKeys = ['TRANSCODE', 'DUPLICATE', 'NICENESS', 'IGNOREEXTENSIONS', 'OUTPUTFASTSTART', 'OUTPUTVIDEOPATH', 'PROCESSOUTPUT', 'AUDIOLANGUAGE', 'ALLAUDIOLANGUAGES', 'SUBLANGUAGES',
|
||||||
'ALLSUBLANGUAGES', 'EMBEDSUBS', 'BURNINSUBTITLE', 'EXTRACTSUBS', 'EXTERNALSUBDIR', 'OUTPUTDEFAULT', 'OUTPUTVIDEOEXTENSION', 'OUTPUTVIDEOCODEC', 'VIDEOCODECALLOW',
|
'ALLSUBLANGUAGES', 'EMBEDSUBS', 'BURNINSUBTITLE', 'EXTRACTSUBS', 'EXTERNALSUBDIR', 'OUTPUTDEFAULT', 'OUTPUTVIDEOEXTENSION', 'OUTPUTVIDEOCODEC', 'VIDEOCODECALLOW',
|
||||||
'OUTPUTVIDEOPRESET', 'OUTPUTVIDEOFRAMERATE', 'OUTPUTVIDEOBITRATE', 'OUTPUTAUDIOCODEC', 'AUDIOCODECALLOW', 'OUTPUTAUDIOBITRATE', 'OUTPUTQUALITYPERCENT', 'GETSUBS',
|
'OUTPUTVIDEOPRESET', 'OUTPUTVIDEOFRAMERATE', 'OUTPUTVIDEOBITRATE', 'OUTPUTAUDIOCODEC', 'AUDIOCODECALLOW', 'OUTPUTAUDIOBITRATE', 'OUTPUTQUALITYPERCENT', 'GETSUBS',
|
||||||
'OUTPUTAUDIOTRACK2CODEC', 'AUDIOCODEC2ALLOW', 'OUTPUTAUDIOTRACK2BITRATE', 'OUTPUTAUDIOOTHERCODEC', 'AUDIOOTHERCODECALLOW', 'OUTPUTAUDIOOTHERBITRATE', 'OUTPUTSUBTITLECODEC']
|
'OUTPUTAUDIOTRACK2CODEC', 'AUDIOCODEC2ALLOW', 'OUTPUTAUDIOTRACK2BITRATE', 'OUTPUTAUDIOOTHERCODEC', 'AUDIOOTHERCODECALLOW', 'OUTPUTAUDIOOTHERBITRATE',
|
||||||
|
'OUTPUTSUBTITLECODEC', 'OUTPUTAUDIOCHANNELS', 'OUTPUTAUDIOTRACK2CHANNELS', 'OUTPUTAUDIOOTHERCHANNELS']
|
||||||
cfgKeys = ['transcode', 'duplicate', 'niceness', 'ignoreExtensions', 'outputFastStart', 'outputVideoPath', 'processOutput', 'audioLanguage', 'allAudioLanguages', 'subLanguages',
|
cfgKeys = ['transcode', 'duplicate', 'niceness', 'ignoreExtensions', 'outputFastStart', 'outputVideoPath', 'processOutput', 'audioLanguage', 'allAudioLanguages', 'subLanguages',
|
||||||
'allSubLanguages', 'embedSubs', 'burnInSubtitle', 'extractSubs', 'externalSubDir', 'outputDefault', 'outputVideoExtension', 'outputVideoCodec', 'VideoCodecAllow',
|
'allSubLanguages', 'embedSubs', 'burnInSubtitle', 'extractSubs', 'externalSubDir', 'outputDefault', 'outputVideoExtension', 'outputVideoCodec', 'VideoCodecAllow',
|
||||||
'outputVideoPreset', 'outputVideoFramerate', 'outputVideoBitrate', 'outputAudioCodec', 'AudioCodecAllow', 'outputAudioBitrate', 'outputQualityPercent', 'getSubs',
|
'outputVideoPreset', 'outputVideoFramerate', 'outputVideoBitrate', 'outputAudioCodec', 'AudioCodecAllow', 'outputAudioBitrate', 'outputQualityPercent', 'getSubs',
|
||||||
'outputAudioTrack2Codec', 'AudioCodec2Allow', 'outputAudioTrack2Bitrate', 'outputAudioOtherCodec', 'AudioOtherCodecAllow', 'outputAudioOtherBitrate', 'outputSubtitleCodec']
|
'outputAudioTrack2Codec', 'AudioCodec2Allow', 'outputAudioTrack2Bitrate', 'outputAudioOtherCodec', 'AudioOtherCodecAllow', 'outputAudioOtherBitrate',
|
||||||
|
'outputSubtitleCodec', 'outputAudioChannels', 'outputAudioTrack2Channels', 'outputAudioOtherChannels']
|
||||||
for index in range(len(envKeys)):
|
for index in range(len(envKeys)):
|
||||||
key = 'NZBPO_' + envKeys[index]
|
key = 'NZBPO_' + envKeys[index]
|
||||||
if os.environ.has_key(key):
|
if os.environ.has_key(key):
|
||||||
|
|
|
@ -93,6 +93,8 @@ def buildCommands(file, newDir):
|
||||||
audio_cmd.extend(['-strict', '-2'])
|
audio_cmd.extend(['-strict', '-2'])
|
||||||
else:
|
else:
|
||||||
audio_cmd.extend(['-c:a', 'copy'])
|
audio_cmd.extend(['-c:a', 'copy'])
|
||||||
|
if nzbtomedia.ACHANNELS:
|
||||||
|
audio_cmd.extend(['-ac', str(nzbtomedia.ACHANNELS)])
|
||||||
if nzbtomedia.ABITRATE:
|
if nzbtomedia.ABITRATE:
|
||||||
audio_cmd.extend(['-b:a', str(nzbtomedia.ABITRATE)])
|
audio_cmd.extend(['-b:a', str(nzbtomedia.ABITRATE)])
|
||||||
if nzbtomedia.OUTPUTQUALITYPERCENT:
|
if nzbtomedia.OUTPUTQUALITYPERCENT:
|
||||||
|
@ -163,7 +165,10 @@ def buildCommands(file, newDir):
|
||||||
map_cmd.extend(['-map', '0:' + str(audio2[0]["index"])])
|
map_cmd.extend(['-map', '0:' + str(audio2[0]["index"])])
|
||||||
a_mapped.extend([audio2[0]["index"]])
|
a_mapped.extend([audio2[0]["index"]])
|
||||||
bitrate = int(audio2[0]["bit_rate"])/1000
|
bitrate = int(audio2[0]["bit_rate"])/1000
|
||||||
|
channels = int(audio2[0]["channels"])
|
||||||
audio_cmd.extend(['-c:a:' + str(used_audio), 'copy'])
|
audio_cmd.extend(['-c:a:' + str(used_audio), 'copy'])
|
||||||
|
if nzbtomedia.ACHANNELS and channels > nzbtomedia.ACHANNELS:
|
||||||
|
audio_cmd.extend(['-ac:' + str(used_audio), str(nzbtomedia.ACHANNELS)])
|
||||||
if nzbtomedia.ABITRATE and not (nzbtomedia.ABITRATE * 0.9 < bitrate < nzbtomedia.ABITRATE * 1.1):
|
if nzbtomedia.ABITRATE and not (nzbtomedia.ABITRATE * 0.9 < bitrate < nzbtomedia.ABITRATE * 1.1):
|
||||||
audio_cmd.extend(['-b:a:' + str(used_audio), str(nzbtomedia.ABITRATE)])
|
audio_cmd.extend(['-b:a:' + str(used_audio), str(nzbtomedia.ABITRATE)])
|
||||||
if nzbtomedia.OUTPUTQUALITYPERCENT:
|
if nzbtomedia.OUTPUTQUALITYPERCENT:
|
||||||
|
@ -171,12 +176,15 @@ def buildCommands(file, newDir):
|
||||||
elif audio1: # right language wrong codec.
|
elif audio1: # right language wrong codec.
|
||||||
map_cmd.extend(['-map', '0:' + str(audio1[0]["index"])])
|
map_cmd.extend(['-map', '0:' + str(audio1[0]["index"])])
|
||||||
a_mapped.extend([audio1[0]["index"]])
|
a_mapped.extend([audio1[0]["index"]])
|
||||||
|
channels = int(audio1[0]["channels"])
|
||||||
if nzbtomedia.ACODEC:
|
if nzbtomedia.ACODEC:
|
||||||
audio_cmd.extend(['-c:a:' + str(used_audio), nzbtomedia.ACODEC])
|
audio_cmd.extend(['-c:a:' + str(used_audio), nzbtomedia.ACODEC])
|
||||||
else:
|
else:
|
||||||
audio_cmd.extend(['-c:a:' + str(used_audio), 'copy'])
|
audio_cmd.extend(['-c:a:' + str(used_audio), 'copy'])
|
||||||
if nzbtomedia.ACODEC == 'aac':
|
if nzbtomedia.ACODEC == 'aac':
|
||||||
audio_cmd.extend(['-strict', '-2'])
|
audio_cmd.extend(['-strict', '-2'])
|
||||||
|
if nzbtomedia.ACHANNELS and channels > nzbtomedia.ACHANNELS:
|
||||||
|
audio_cmd.extend(['-ac:' + str(used_audio), str(nzbtomedia.ACHANNELS)])
|
||||||
if nzbtomedia.ABITRATE:
|
if nzbtomedia.ABITRATE:
|
||||||
audio_cmd.extend(['-b:a:' + str(used_audio), str(nzbtomedia.ABITRATE)])
|
audio_cmd.extend(['-b:a:' + str(used_audio), str(nzbtomedia.ABITRATE)])
|
||||||
if nzbtomedia.OUTPUTQUALITYPERCENT:
|
if nzbtomedia.OUTPUTQUALITYPERCENT:
|
||||||
|
@ -184,12 +192,15 @@ def buildCommands(file, newDir):
|
||||||
elif audio3: # just pick the default audio track
|
elif audio3: # just pick the default audio track
|
||||||
map_cmd.extend(['-map', '0:' + str(audio3[0]["index"])])
|
map_cmd.extend(['-map', '0:' + str(audio3[0]["index"])])
|
||||||
a_mapped.extend([audio3[0]["index"]])
|
a_mapped.extend([audio3[0]["index"]])
|
||||||
|
channels = int(audio3[0]["channels"])
|
||||||
if nzbtomedia.ACODEC:
|
if nzbtomedia.ACODEC:
|
||||||
audio_cmd.extend(['-c:a:' + str(used_audio), nzbtomedia.ACODEC])
|
audio_cmd.extend(['-c:a:' + str(used_audio), nzbtomedia.ACODEC])
|
||||||
else:
|
else:
|
||||||
audio_cmd.extend(['-c:a:' + str(used_audio), 'copy'])
|
audio_cmd.extend(['-c:a:' + str(used_audio), 'copy'])
|
||||||
if nzbtomedia.ACODEC == 'aac':
|
if nzbtomedia.ACODEC == 'aac':
|
||||||
audio_cmd.extend(['-strict', '-2'])
|
audio_cmd.extend(['-strict', '-2'])
|
||||||
|
if nzbtomedia.ACHANNELS and channels > nzbtomedia.ACHANNELS:
|
||||||
|
audio_cmd.extend(['-ac:' + str(used_audio), str(nzbtomedia.ACHANNELS)])
|
||||||
if nzbtomedia.ABITRATE:
|
if nzbtomedia.ABITRATE:
|
||||||
audio_cmd.extend(['-b:a:' + str(used_audio), str(nzbtomedia.ABITRATE)])
|
audio_cmd.extend(['-b:a:' + str(used_audio), str(nzbtomedia.ABITRATE)])
|
||||||
if nzbtomedia.OUTPUTQUALITYPERCENT:
|
if nzbtomedia.OUTPUTQUALITYPERCENT:
|
||||||
|
@ -202,7 +213,10 @@ def buildCommands(file, newDir):
|
||||||
map_cmd.extend(['-map', '0:' + str(audio4[0]["index"])])
|
map_cmd.extend(['-map', '0:' + str(audio4[0]["index"])])
|
||||||
a_mapped.extend([audio4[0]["index"]])
|
a_mapped.extend([audio4[0]["index"]])
|
||||||
bitrate = int(audio4[0]["bit_rate"])/1000
|
bitrate = int(audio4[0]["bit_rate"])/1000
|
||||||
|
channels = int(audio4[0]["channels"])
|
||||||
audio_cmd.extend(['-c:a:' + str(used_audio), 'copy'])
|
audio_cmd.extend(['-c:a:' + str(used_audio), 'copy'])
|
||||||
|
if nzbtomedia.ACHANNELS2 and channels > nzbtomedia.ACHANNELS2:
|
||||||
|
audio_cmd.extend(['-ac:' + str(used_audio), str(nzbtomedia.ACHANNELS2)])
|
||||||
if nzbtomedia.ABITRATE2 and not (nzbtomedia.ABITRATE2 * 0.9 < bitrate < nzbtomedia.ABITRATE2 * 1.1):
|
if nzbtomedia.ABITRATE2 and not (nzbtomedia.ABITRATE2 * 0.9 < bitrate < nzbtomedia.ABITRATE2 * 1.1):
|
||||||
audio_cmd.extend(['-b:a' + str(used_audio), str(nzbtomedia.ABITRATE2)])
|
audio_cmd.extend(['-b:a' + str(used_audio), str(nzbtomedia.ABITRATE2)])
|
||||||
if nzbtomedia.OUTPUTQUALITYPERCENT:
|
if nzbtomedia.OUTPUTQUALITYPERCENT:
|
||||||
|
@ -210,12 +224,15 @@ def buildCommands(file, newDir):
|
||||||
elif audio1: # right language wrong codec.
|
elif audio1: # right language wrong codec.
|
||||||
map_cmd.extend(['-map', '0:' + str(audio1[0]["index"])])
|
map_cmd.extend(['-map', '0:' + str(audio1[0]["index"])])
|
||||||
a_mapped.extend([audio1[0]["index"]])
|
a_mapped.extend([audio1[0]["index"]])
|
||||||
|
channels = int(audio1[0]["channels"])
|
||||||
if nzbtomedia.ACODEC2:
|
if nzbtomedia.ACODEC2:
|
||||||
audio_cmd.extend(['-c:a:' + str(used_audio), nzbtomedia.ACODEC2])
|
audio_cmd.extend(['-c:a:' + str(used_audio), nzbtomedia.ACODEC2])
|
||||||
else:
|
else:
|
||||||
audio_cmd.extend(['-c:a:' + str(used_audio), 'copy'])
|
audio_cmd.extend(['-c:a:' + str(used_audio), 'copy'])
|
||||||
if nzbtomedia.ACODEC2 == 'aac':
|
if nzbtomedia.ACODEC2 == 'aac':
|
||||||
audio_cmd.extend(['-strict', '-2'])
|
audio_cmd.extend(['-strict', '-2'])
|
||||||
|
if nzbtomedia.ACHANNELS2 and channels > nzbtomedia.ACHANNELS2:
|
||||||
|
audio_cmd.extend(['-ac:' + str(used_audio), str(nzbtomedia.ACHANNELS2)])
|
||||||
if nzbtomedia.ABITRATE2:
|
if nzbtomedia.ABITRATE2:
|
||||||
audio_cmd.extend(['-b:a:' + str(used_audio), str(nzbtomedia.ABITRATE2)])
|
audio_cmd.extend(['-b:a:' + str(used_audio), str(nzbtomedia.ABITRATE2)])
|
||||||
if nzbtomedia.OUTPUTQUALITYPERCENT:
|
if nzbtomedia.OUTPUTQUALITYPERCENT:
|
||||||
|
@ -223,12 +240,15 @@ def buildCommands(file, newDir):
|
||||||
elif audio3: # just pick the default audio track
|
elif audio3: # just pick the default audio track
|
||||||
map_cmd.extend(['-map', '0:' + str(audio3[0]["index"])])
|
map_cmd.extend(['-map', '0:' + str(audio3[0]["index"])])
|
||||||
a_mapped.extend([audio3[0]["index"]])
|
a_mapped.extend([audio3[0]["index"]])
|
||||||
|
channels = int(audio3[0]["channels"])
|
||||||
if nzbtomedia.ACODEC2:
|
if nzbtomedia.ACODEC2:
|
||||||
audio_cmd.extend(['-c:a:' + str(used_audio), nzbtomedia.ACODEC2])
|
audio_cmd.extend(['-c:a:' + str(used_audio), nzbtomedia.ACODEC2])
|
||||||
else:
|
else:
|
||||||
audio_cmd.extend(['-c:a:' + str(used_audio), 'copy'])
|
audio_cmd.extend(['-c:a:' + str(used_audio), 'copy'])
|
||||||
if nzbtomedia.ACODEC2 == 'aac':
|
if nzbtomedia.ACODEC2 == 'aac':
|
||||||
audio_cmd.extend(['-strict', '-2'])
|
audio_cmd.extend(['-strict', '-2'])
|
||||||
|
if nzbtomedia.ACHANNELS2 and channels > nzbtomedia.ACHANNELS2:
|
||||||
|
audio_cmd.extend(['-ac:' + str(used_audio), str(nzbtomedia.ACHANNELS2)])
|
||||||
if nzbtomedia.ABITRATE2:
|
if nzbtomedia.ABITRATE2:
|
||||||
audio_cmd.extend(['-b:a:' + str(used_audio), str(nzbtomedia.ABITRATE2)])
|
audio_cmd.extend(['-b:a:' + str(used_audio), str(nzbtomedia.ABITRATE2)])
|
||||||
if nzbtomedia.OUTPUTQUALITYPERCENT:
|
if nzbtomedia.OUTPUTQUALITYPERCENT:
|
||||||
|
@ -242,8 +262,11 @@ def buildCommands(file, newDir):
|
||||||
map_cmd.extend(['-map', '0:' + str(audio["index"])])
|
map_cmd.extend(['-map', '0:' + str(audio["index"])])
|
||||||
codec = audio["codec_name"]
|
codec = audio["codec_name"]
|
||||||
bitrate = int(audio3[0]["bit_rate"])/1000
|
bitrate = int(audio3[0]["bit_rate"])/1000
|
||||||
|
channels = int(audio3[0]["channels"])
|
||||||
if audio["codec_name"] in nzbtomedia.ACODEC3_ALLOW:
|
if audio["codec_name"] in nzbtomedia.ACODEC3_ALLOW:
|
||||||
audio_cmd.extend(['-c:a:' + str(used_audio), 'copy'])
|
audio_cmd.extend(['-c:a:' + str(used_audio), 'copy'])
|
||||||
|
if nzbtomedia.ACHANNELS3 and channels > nzbtomedia.ACHANNELS3:
|
||||||
|
audio_cmd.extend(['-ac:' + str(used_audio), str(nzbtomedia.ACHANNELS3)])
|
||||||
if nzbtomedia.ABITRATE3 and not (nzbtomedia.ABITRATE3 * 0.9 < bitrate < nzbtomedia.ABITRATE3 * 1.1):
|
if nzbtomedia.ABITRATE3 and not (nzbtomedia.ABITRATE3 * 0.9 < bitrate < nzbtomedia.ABITRATE3 * 1.1):
|
||||||
audio_cmd.extend(['-b:a:' + str(used_audio), str(nzbtomedia.ABITRATE3)])
|
audio_cmd.extend(['-b:a:' + str(used_audio), str(nzbtomedia.ABITRATE3)])
|
||||||
else:
|
else:
|
||||||
|
@ -253,6 +276,8 @@ def buildCommands(file, newDir):
|
||||||
audio_cmd.extend(['-c:a:' + str(used_audio), 'copy'])
|
audio_cmd.extend(['-c:a:' + str(used_audio), 'copy'])
|
||||||
if nzbtomedia.ACODEC3 == 'aac':
|
if nzbtomedia.ACODEC3 == 'aac':
|
||||||
audio_cmd.extend(['-strict', '-2'])
|
audio_cmd.extend(['-strict', '-2'])
|
||||||
|
if nzbtomedia.ACHANNELS3 and channels > nzbtomedia.ACHANNELS3:
|
||||||
|
audio_cmd.extend(['-ac:' + str(used_audio), str(nzbtomedia.ACHANNELS3)])
|
||||||
if nzbtomedia.ABITRATE3:
|
if nzbtomedia.ABITRATE3:
|
||||||
audio_cmd.extend(['-b:a:' + str(used_audio), str(nzbtomedia.ABITRATE3)])
|
audio_cmd.extend(['-b:a:' + str(used_audio), str(nzbtomedia.ABITRATE3)])
|
||||||
if nzbtomedia.OUTPUTQUALITYPERCENT > 0:
|
if nzbtomedia.OUTPUTQUALITYPERCENT > 0:
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue