为什么ffmpeg-python在这里抛出编解码器错误?



我是第一次尝试ffmpeg-python,我很早就遇到了一个看起来很复杂的错误。

这是我的完整代码:

from tkinter import filedialog
import ffmpeg
sourceFile = filedialog.askopenfile()
targetFile = filedialog.asksaveasfilename()
stream = ffmpeg.input(sourceFile, ss=0, format='mov')
stream = ffmpeg.output(stream, targetFile, format='mp4')
ffmpeg.run(stream)

在我的脑海中,这应该很简单。用户浏览到现有的MOV文件(一个标准的h264文件,"普通"FFmpeg.exe可以在Windows命令行上处理任何问题(,然后选择要保存的MP4的输出文件,然后调用FFmpeg并从MOV转换MP4文件。

但是,无论我选择哪个源文件,我总是遇到此错误:

File "C:Program Files (x86)Microsoft Visual StudioSharedPython37_64libsite-packagesffmpeg_ffmpeg.py", line 85, in output
File "C:Program Files (x86)Microsoft Visual StudioSharedPython37_64libsite-packagesffmpeg_run.py", line 285, in run_async
args, stdin=stdin_stream, stdout=stdout_stream, stderr=stderr_stream
File "C:Program Files (x86)Microsoft Visual StudioSharedPython37_64libsubprocess.py", line 775, in __init__
restore_signals, start_new_session)
File "C:Program Files (x86)Microsoft Visual StudioSharedPython37_64libsubprocess.py", line 1119, in _execute_child
args = list2cmdline(args)
File "C:Program Files (x86)Microsoft Visual StudioSharedPython37_64libsubprocess.py", line 530, in list2cmdline
needquote = (" " in arg) or ("t" in arg) or not arg
File "C:Program Files (x86)Microsoft Visual StudioSharedPython37_64libencodingscp1252.py", line 23, in decode
return codecs.charmap_decode(input,self.errors,decoding_table)[0]
UnicodeDecodeError: 'charmap' codec can't decode byte 0x90 in position 41: character maps to <undefined>

位置编号根据文件而变化,但错误始终是"charmap"编解码器无法解码位置 [x] 中的字节0x90:字符映射到<未定义的>

请有人指出我可能出错的地方吗?我觉得答案正盯着我的脸,但我没有看到。

为了将来找到这篇文章的任何人的利益 - 我找到了我的答案,它确实在盯着我的脸。

代码的第三行应该sourceFile = filedialog.askopenfile().name- 我错过了.name()部分,并试图向 FFmpeg 提供由 filedialog 返回的对象,而不是特定的文件名。一旦我意识到这一点,我就能够继续前进。

(我立即遇到了 FFmpeg 找不到自己的库文件之类的其他问题,但这是另一篇文章的故事。

最新更新