diff --git a/pytranscoder/ffmpeg.py b/pytranscoder/ffmpeg.py index 2ec58d8..98715ae 100644 --- a/pytranscoder/ffmpeg.py +++ b/pytranscoder/ffmpeg.py @@ -35,7 +35,7 @@ def fetch_details(self, _path: str) -> MediaInfo: :return: Instance of MediaInfo """ with subprocess.Popen([self.path, '-i', _path], stderr=subprocess.PIPE) as proc: - output = proc.stderr.read().decode(encoding='utf8') + output = proc.stderr.read().decode(encoding='utf8', errors='replace') mi = MediaInfo.parse_ffmpeg_details(_path, output) if mi.valid: return mi @@ -53,7 +53,7 @@ def fetch_details_ffprobe(self, _path: str) -> MediaInfo: args = [ffprobe_path, '-v', '1', '-show_streams', '-print_format', 'json', '-i', _path] with subprocess.Popen(args, stdout=subprocess.PIPE) as proc: - output = proc.stdout.read().decode(encoding='utf8') + output = proc.stdout.read().decode(encoding='utf8', errors='replace') info = json.loads(output) return MediaInfo.parse_ffmpeg_details_json(_path, info) diff --git a/pytranscoder/handbrake.py b/pytranscoder/handbrake.py index db2e577..5144571 100644 --- a/pytranscoder/handbrake.py +++ b/pytranscoder/handbrake.py @@ -34,7 +34,7 @@ def fetch_details(self, _path: str) -> MediaInfo: :return: Instance of MediaInfo """ with subprocess.Popen([self.path, '--scan', '-i', _path], stderr=subprocess.PIPE) as proc: - output = proc.stderr.read().decode(encoding='utf8') + output = proc.stderr.read().decode(encoding='utf8', errors='replace') mi = MediaInfo.parse_handbrake_details(_path, output) if mi.valid: return mi diff --git a/pytranscoder/utils.py b/pytranscoder/utils.py index f0ef03e..2fd006c 100644 --- a/pytranscoder/utils.py +++ b/pytranscoder/utils.py @@ -60,7 +60,7 @@ def calculate_progress(info: MediaInfo, stats: Dict) -> (int, int): def run(cmd): p = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, shell=False) - output = p.communicate()[0].decode('utf-8') + output = p.communicate()[0].decode('utf-8', errors='replace') return p.returncode, output