我正在使用这段代码(几年前的一个问题),但我认为这已经过时了。尝试运行该代码,我收到了上面的错误。我在Python方面还是个新手,所以我不能从类似的问题中得到很多解释。有人知道为什么会出现这种情况吗?
import subprocess
def getLength(filename):
result = subprocess.Popen(["ffprobe", filename],
stdout = subprocess.PIPE, stderr = subprocess.STDOUT)
return [x for x in result.stdout.readlines() if "Duration" in x]
print(getLength('bell.mp4'))
回溯(Traceback)
Traceback (most recent call last):
File "B:\Program Files\ffmpeg\bin\test3.py", line 7, in <module>
print(getLength('bell.mp4'))
File "B:\Program Files\ffmpeg\bin\test3.py", line 6, in getLength
return [x for x in result.stdout.readlines() if "Duration" in x]
File "B:\Program Files\ffmpeg\bin\test3.py", line 6, in <listcomp>
return [x for x in result.stdout.readlines() if "Duration" in x]
TypeError: a bytes-like object is required, not 'str'
universal_newlines=True
或text=True
,这会导致 Python 将输出解码为系统默认编码的文本并返回一个字符串。 - tripleeebytes("Duration", encoding='utf8')
)。 - adn05