Python vudeo信息::AttributeError:';str';对象没有属性';获取';

Python vudeo信息::AttributeError:';str';对象没有属性';获取';,python,video,Python,Video,我想得到一些信息,比如帧数,fps,。。。从二进制视频文件,但我得到错误 def GetVideoInformation_binary(vid_binary): #input=binary of video num_frame = int(vid_binary.get(cv2.cv.CV_CAP_PROP_FRAME_COUNT)) fps = vid_binary.get(cv2.cv.CV_CAP_PROP_FPS) 错误是 AttributeError:“str

我想得到一些信息,比如帧数,fps,。。。从二进制视频文件,但我得到错误

def GetVideoInformation_binary(vid_binary): #input=binary of video 

    num_frame = int(vid_binary.get(cv2.cv.CV_CAP_PROP_FRAME_COUNT))
    fps    = vid_binary.get(cv2.cv.CV_CAP_PROP_FPS)
错误是

AttributeError:“str”对象没有属性“get”


如何将二进制视频文件转换为videocapture对象以跳过此错误?

您需要添加属性“get”以跳过此错误。就写在你面前

您需要添加一个属性“get”来跳过此错误。就写在你面前

您正在对字符串调用
get()
,这是错误的。它是
VideoCapture
的一个属性,因此需要从字符串数据创建VideoCapture对象

因此,我建议您制作一个包含
vid_binary
内容的文件。然后从该文件创建一个
VideoCapture
对象。如下图所示:

cap = cv2.VideoCapture("filename.ext")
然后调用你的方法

num_frame = int(cap.get(cv2.cv.CV_CAP_PROP_FRAME_COUNT))
fps = cap.get(cv2.cv.CV_CAP_PROP_FPS)
它现在应该可以正常工作了。

您正在对字符串调用
get()
,这是错误的。它是
VideoCapture
的一个属性,因此需要从字符串数据创建VideoCapture对象

因此,我建议您制作一个包含
vid_binary
内容的文件。然后从该文件创建一个
VideoCapture
对象。如下图所示:

cap = cv2.VideoCapture("filename.ext")
然后调用你的方法

num_frame = int(cap.get(cv2.cv.CV_CAP_PROP_FRAME_COUNT))
fps = cap.get(cv2.cv.CV_CAP_PROP_FPS)

现在应该可以正常工作了。

错误非常简单,
vid_binary
是一个字符串,字符串没有
get
方法。如果您不提供有关您正在使用的库的详细信息,则无法解决此问题。我使用的是cv2库。从何处获得此
vid_binary
?我以前没有使用过cv2,但从文档中可以直接从文件名中获取videocapture对象。vid_binary是从internet或其他获取的视频的二进制。错误非常简单,
vid_binary
是一个字符串,字符串没有
get
方法。如果您不提供有关您正在使用的库的详细信息,则无法解决此问题。我使用的是cv2库。从何处获得此
vid_binary
?我以前没有使用过cv2,但从文档中可以看出,你可以直接从文件名中获取videocapture对象。vid_binary是从internet或其他获取视频的二进制文件。如何?输入是二进制的,但是这个函数需要一个videocaptute对象作为inputhow?输入是二进制的,但此函数将VideoCapture对象设为inputwfile=open('binary.mp4',wb'),用于vid_binary:wfile.write(b)wfile.close()cap=cv2.VideoCapture('binary.mp4')中的b。我将二进制文件转换为.mp4并使用VideoCapture。。但是我在寻找一个没有写文件的解决方案。。。我要spead代码好的,你已经有文件了?正确的?然后你可以输入现有的文件,不需要新的文件。只要做
cap=cv2.VideoCapture('binary.mp4')
,它就可以工作了。不需要先读取文件,然后再写回vid_binary中b的file.wfile=open('binary.mp4','wb'):wfile.write(b)wfile.close()cap=cv2.VideoCapture('binary.mp4')我将二进制文件转换为.mp4并使用VideoCapture。。但是我在寻找一个没有写文件的解决方案。。。我要spead代码好的,你已经有文件了?正确的?然后你可以输入现有的文件,不需要新的文件。只要做
cap=cv2.VideoCapture('binary.mp4')
,它就可以工作了。不需要先读取然后再写回文件。