电影问题:"utf-8"编解码器无法解码位置 1494 中的字节0xb5:无效的起始字节



我得到了"'utf-8’编解码器无法解码位置1494中的字节0xb5:无效的起始字节";当我尝试访问本地视频文件时。我把文件上传到谷歌硬盘,并在colab中运行代码,一切都很好。当我用jupyter笔记本在本地驱动器上运行它时,我遇到了这个问题。

我的代码:

import moviepy.editor as mp    
path='D:/Movie/Multimedia_Corpus/Test01/video_files/'
file='test01.rmvb'
fclip=mp.VideoFileClip(path+file)

错误:

---------------------------------------------------------------------------
UnicodeDecodeError                        Traceback (most recent call last)
<ipython-input-23-1ebadda110d3> in <module>
9 for f in AllFiles:
10   print(f)
---> 11   fclip=mp.VideoFileClip(path+f,'rb')
~anaconda3libsite-packagesmoviepyvideoioVideoFileClip.py in __init__(self, filename, has_mask, audio, audio_buffersize, target_resolution, resize_algorithm, audio_fps, audio_nbytes, verbose, fps_source)
86         # Make a reader
87         pix_fmt = "rgba" if has_mask else "rgb24"
---> 88         self.reader = FFMPEG_VideoReader(filename, pix_fmt=pix_fmt,
89                                          target_resolution=target_resolution,
90                                          resize_algo=resize_algorithm,
~anaconda3libsite-packagesmoviepyvideoioffmpeg_reader.py in __init__(self, filename, print_infos, bufsize, pix_fmt, check_duration, target_resolution, resize_algo, fps_source)
33         self.filename = filename
34         self.proc = None
---> 35         infos = ffmpeg_parse_infos(filename, print_infos, check_duration,
36                                    fps_source)
37         self.fps = infos['video_fps']
~anaconda3libsite-packagesmoviepyvideoioffmpeg_reader.py in ffmpeg_parse_infos(filename, print_infos, check_duration, fps_source)
257     proc = sp.Popen(cmd, **popen_params)
258     (output, error) = proc.communicate()
--> 259     infos = error.decode('utf8')
260 
261     del proc
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xb5 in position 1494: invalid start byte

试试这个:

infos = error.decode("utf-8", errors="ignore")

或者你可以安装moviepy==2.0.0.dev2,它就会工作。

注意:moviepy2.0.0.dev2版本尚未发布。

我发现这实际上是moviepy的一个bug。我打开ffmpeg_reader.py并更改了第259行,即问题中发布的第三行错误。

原始代码:

infos = error.decode('utf8')

新代码:

try:
infos = error.decode('utf8')
except:
infos = error.decode('ANSI')

最新更新