From 512b4d789bec4badcd4045ddc5ad70b886bf2662 Mon Sep 17 00:00:00 2001 From: Michael Johnson Date: Mon, 1 Apr 2013 12:00:40 -0300 Subject: [PATCH 1/6] Always transcode ALL streams I just ran into an issue where only certain audio streams (which happened to be French) of a file got transcoded. -map 0 forces ffmpeg to always transcode all streams. --- autoProcess/Transcoder.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/autoProcess/Transcoder.py b/autoProcess/Transcoder.py index a4619624..0f8f36a3 100644 --- a/autoProcess/Transcoder.py +++ b/autoProcess/Transcoder.py @@ -61,7 +61,7 @@ def Transcode_directory(dirName): outputVideoExtension = '-transcoded' + outputVideoExtension # adds '-transcoded.ext' newfilePath = os.path.normpath(name + outputVideoExtension) - command = [ffmpeg, '-i', filePath] + command = [ffmpeg, '-i', filePath, '-map', '0'] if outputVideoCodec: command.append('-c:v') command.append(outputVideoCodec) From da13f3762990f56ff5b133703b4f8bde4ce8343c Mon Sep 17 00:00:00 2001 From: Michael Johnson Date: Mon, 1 Apr 2013 13:40:53 -0300 Subject: [PATCH 2/6] Added compiled Python bytecode to the ignore list --- .gitignore | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.gitignore b/.gitignore index 3e547277..375c8831 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,4 @@ autoProcessMedia.cfg + +*.pyc +*.pyo From 9b94a86c728a29694f97e79fdfeade416b9338cb Mon Sep 17 00:00:00 2001 From: Michael Johnson Date: Mon, 1 Apr 2013 13:42:23 -0300 Subject: [PATCH 3/6] Added the post processing log to the ignore list Added the post processing log from SABnzbd to the ignore list --- .gitignore | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.gitignore b/.gitignore index 375c8831..cde13c94 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,5 @@ autoProcessMedia.cfg *.pyc *.pyo + +postprocess.log From 792e8b7876cf7ec876fd0b2c44b20457ee756571 Mon Sep 17 00:00:00 2001 From: Michael Johnson Date: Mon, 1 Apr 2013 14:48:22 -0300 Subject: [PATCH 4/6] Missing codecs no longer result in an error --- autoProcess/Transcoder.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/autoProcess/Transcoder.py b/autoProcess/Transcoder.py index 0f8f36a3..1467b479 100644 --- a/autoProcess/Transcoder.py +++ b/autoProcess/Transcoder.py @@ -61,13 +61,16 @@ def Transcode_directory(dirName): outputVideoExtension = '-transcoded' + outputVideoExtension # adds '-transcoded.ext' newfilePath = os.path.normpath(name + outputVideoExtension) - command = [ffmpeg, '-i', filePath, '-map', '0'] + command = [ffmpeg, '-i', filePath, '-map', '0', '-c:s', 'copy'] if outputVideoCodec: command.append('-c:v') command.append(outputVideoCodec) if outputVideoCodec == 'libx264' and outputVideoPreset: command.append('-preset') command.append(outputVideoPreset) + else: + command.append('-c:v') + command.append('copy') if outputVideoFramerate: command.append('-r') command.append(outputVideoFramerate) @@ -77,6 +80,9 @@ def Transcode_directory(dirName): if outputAudioCodec: command.append('-c:a') command.append(outputAudioCodec) + else: + command.append('-c:a') + command.append('copy') if outputAudioBitrate: command.append('-b:a') command.append(outputAudioBitrate) From 9e00ef72a5597351568095576d0d3d30fea2e06e Mon Sep 17 00:00:00 2001 From: NightExcessive Date: Mon, 1 Apr 2013 15:32:19 -0400 Subject: [PATCH 5/6] Added the ability to choose a subtitle codec --- autoProcess/Transcoder.py | 8 +++++++- autoProcessMedia.cfg.sample | 1 + 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/autoProcess/Transcoder.py b/autoProcess/Transcoder.py index 1467b479..7fd0acf4 100644 --- a/autoProcess/Transcoder.py +++ b/autoProcess/Transcoder.py @@ -46,6 +46,7 @@ def Transcode_directory(dirName): outputVideoBitrate = config.get("Transcoder", "outputVideoBitrate") outputAudioCodec = config.get("Transcoder", "outputAudioCodec") outputAudioBitrate = config.get("Transcoder", "outputAudioBitrate") + outputSubtitleCodec = config.get("Transcoder", "outputSubtitleCodec") Logger.info("Checking for files to be transcoded") final_result = 0 # initialize as successful @@ -61,7 +62,7 @@ def Transcode_directory(dirName): outputVideoExtension = '-transcoded' + outputVideoExtension # adds '-transcoded.ext' newfilePath = os.path.normpath(name + outputVideoExtension) - command = [ffmpeg, '-i', filePath, '-map', '0', '-c:s', 'copy'] + command = [ffmpeg, '-i', filePath, '-map', '0'] if outputVideoCodec: command.append('-c:v') command.append(outputVideoCodec) @@ -86,6 +87,11 @@ def Transcode_directory(dirName): if outputAudioBitrate: command.append('-b:a') command.append(outputAudioBitrate) + if outputSubtitleCodec: + command.append('-c:s') + command.append(outputSubtitleCodec) + else: + command.append('-sn') # Don't copy the subtitles over command.append(newfilePath) Logger.debug("Transcoding video %s to %s", filePath, newfilePath) diff --git a/autoProcessMedia.cfg.sample b/autoProcessMedia.cfg.sample index 77c5467f..1a9d367c 100644 --- a/autoProcessMedia.cfg.sample +++ b/autoProcessMedia.cfg.sample @@ -110,6 +110,7 @@ outputVideoFramerate = 24 outputVideoBitrate = 800k outputAudioCodec = libmp3lame outputAudioBitrate = 128k +outputSubtitleCodec = # Logging configuration [loggers] From c72240bc2e186b8b5e20f10cb78e89a56f8b1de3 Mon Sep 17 00:00:00 2001 From: NightExcessive Date: Mon, 1 Apr 2013 17:46:01 -0400 Subject: [PATCH 6/6] Improved detection of empty configuration options --- autoProcess/Transcoder.py | 31 +++++++++++++++++-------------- 1 file changed, 17 insertions(+), 14 deletions(-) diff --git a/autoProcess/Transcoder.py b/autoProcess/Transcoder.py index 7fd0acf4..43e54cc3 100644 --- a/autoProcess/Transcoder.py +++ b/autoProcess/Transcoder.py @@ -39,14 +39,17 @@ def Transcode_directory(dirName): mediaContainer = (config.get("Extensions", "mediaExtensions")).split(',') duplicate = int(config.get("Transcoder", "duplicate")) ignoreExtensions = (config.get("Transcoder", "ignoreExtensions")).split(',') - outputVideoExtension = config.get("Transcoder", "outputVideoExtension") - outputVideoCodec = config.get("Transcoder", "outputVideoCodec") - outputVideoPreset = config.get("Transcoder", "outputVideoPreset") - outputVideoFramerate = config.get("Transcoder", "outputVideoFramerate") - outputVideoBitrate = config.get("Transcoder", "outputVideoBitrate") - outputAudioCodec = config.get("Transcoder", "outputAudioCodec") - outputAudioBitrate = config.get("Transcoder", "outputAudioBitrate") - outputSubtitleCodec = config.get("Transcoder", "outputSubtitleCodec") + outputVideoExtension = config.get("Transcoder", "outputVideoExtension").strip() + outputVideoCodec = config.get("Transcoder", "outputVideoCodec").strip() + outputVideoPreset = config.get("Transcoder", "outputVideoPreset").strip() + outputVideoFramerate = config.get("Transcoder", "outputVideoFramerate").strip() + outputVideoBitrate = config.get("Transcoder", "outputVideoBitrate").strip() + outputAudioCodec = config.get("Transcoder", "outputAudioCodec").strip() + outputAudioBitrate = config.get("Transcoder", "outputAudioBitrate").strip() + outputSubtitleCodec = config.get("Transcoder", "outputSubtitleCodec").strip() + + map(lambda ext: ext.strip(), mediaContainer) + map(lambda ext: ext.strip(), ignoreExtensions) Logger.info("Checking for files to be transcoded") final_result = 0 # initialize as successful @@ -63,7 +66,7 @@ def Transcode_directory(dirName): newfilePath = os.path.normpath(name + outputVideoExtension) command = [ffmpeg, '-i', filePath, '-map', '0'] - if outputVideoCodec: + if len(outputVideoCodec) > 0: command.append('-c:v') command.append(outputVideoCodec) if outputVideoCodec == 'libx264' and outputVideoPreset: @@ -72,22 +75,22 @@ def Transcode_directory(dirName): else: command.append('-c:v') command.append('copy') - if outputVideoFramerate: + if len(outputVideoFramerate) > 0: command.append('-r') command.append(outputVideoFramerate) - if outputVideoBitrate: + if len(outputVideoBitrate) > 0: command.append('-b:v') command.append(outputVideoBitrate) - if outputAudioCodec: + if len(outputAudioCodec) > 0: command.append('-c:a') command.append(outputAudioCodec) else: command.append('-c:a') command.append('copy') - if outputAudioBitrate: + if len(outputAudioBitrate) > 0: command.append('-b:a') command.append(outputAudioBitrate) - if outputSubtitleCodec: + if len(outputSubtitleCodec) > 0: command.append('-c:s') command.append(outputSubtitleCodec) else: