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

问题描述

当我尝试访问本地视频文件时,我收到“'utf-8'编解码器无法解码位置 1494 中的字节 0xb5:无效起始字节”。我将文件上传到谷歌驱动器并在 colab 中运行代码,它很好。当我使用 jupyter notebook 在本地驱动器上运行它时遇到了这个问题。

我的代码

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')

~\anaconda3\lib\site-packages\moviepy\video\io\VideoFileClip.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,~\anaconda3\lib\site-packages\moviepy\video\io\ffmpeg_reader.py in __init__(self,print_infos,bufsize,pix_fmt,check_duration,resize_algo,fps_source)
     33         self.filename = filename
     34         self.proc = None
---> 35         infos = ffmpeg_parse_infos(filename,36                                    fps_source)
     37         self.fps = infos['video_fps']

~\anaconda3\lib\site-packages\moviepy\video\io\ffmpeg_reader.py in ffmpeg_parse_infos(filename,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

解决方法

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

原始代码:

infos = error.decode('utf8')

新代码:

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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...