从字节读取视频

问题描述:

我正在使用Flask编写简单的REST API,它读取上传的视频并返回一些JSON。视频通过POST请求作为文件发送,内容类型为application/x-www-form-urlencoded从字节读取视频

我想使用opencv来处理它,但我不知道如何从原始二进制字符串中读取它。 我想出的唯一解决方案是将视频保存到文件并使用opencv VideoCapture类读取它。不过,我想避免IO操作,因为我认为它会减慢我的API。

所以我的问题是:

我怎样才能变换从原始字节表示视频opencv表示(numpy的数组列表)?

如果您将视频作为文件上传到服务器,那么听起来您已将它保存到文件中 - 在这种情况下,从文件中简单地读取它可能并不那么低效。

视频通常太大以至于无法放入内存,所以无论如何,这种方式很可能会进入磁盘并返回。

如果您的意思是您希望openCV程序直接接受流式视频,请执行处理,然后做任何您想要的事情(例如保存到文件,显示,流到其他位置),然后通常最容易流视频到OpenCV程序如果可能并使用OpenCV直接读取流:

VideoCapture cap; 
cap.open(yourStreamURL);