【问题标题】:vudeo information ::AttributeError: 'str' object has no attribute 'get'视频信息 ::AttributeError: 'str' object has no attribute 'get'
【发布时间】:2017-04-12 07:25:53
【问题描述】:

我想从二进制视频文件中获取一些信息,例如帧数、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 对象以跳过此错误?

【问题讨论】:

  • 错误很直接,vid_binary 是一个字符串,而字符串没有get 方法。如果您不提供有关您正在使用的库的详细信息,则无法解决。
  • 我使用 cv2 库。
  • 你从哪里得到这个vid_binary?我以前没有使用过 cv2,但从文档中可以看出,您可以直接从文件名中获取 videocapture 对象。
  • vid_binary 是来自互联网或其他视频的二进制文件..

标签: python video


【解决方案1】:

您在字符串上调用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)

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

【讨论】:

  • wfile = open('binary.mp4', 'wb') for b in vid_binary: wfile.write(b) wfile.close() cap= cv2.VideoCapture('binary.mp4')我将二进制文件转换为 .mp4 并使用 VideoCapture .. 但我寻找没有写入文件的解决方案...我想要加速代码
  • 好的,你已经有文件了吗?正确的?然后你可以喂现有文件,不需要新文件。
  • 只需执行cap= cv2.VideoCapture('binary.mp4'),它应该可以工作。无需先读再写回文件。
【解决方案2】:

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

【讨论】:

  • 怎么样?输入是二进制的,但这个函数需要 videocaptute 对象作为输入
猜你喜欢
  • 1970-01-01
  • 2020-04-26
  • 2017-05-10
  • 1970-01-01
  • 2020-12-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-12-01
相关资源
最近更新 更多