从字节读取视频
Posted
技术标签:
【中文标题】从字节读取视频【英文标题】:Read video from bytes 【发布时间】:2018-03-20 01:23:22 【问题描述】:我正在使用Flask
编写简单的REST API
,它读取上传的视频并返回一些JSON
。视频通过 POST 请求作为文件发送,内容类型为application/x-www-form-urlencoded
。
我想使用opencv
处理它,但我不知道如何从原始二进制字符串中读取它。
我想出的唯一解决方案是将视频保存到文件并使用 opencv VideoCapture
类读取它。但是我想避免 IO 操作,因为我认为它会减慢我的 API。
所以我的问题是:
如何将视频从原始字节表示形式转换为 opencv
表示形式(numpy 数组列表)?
【问题讨论】:
这个运气好吗? 不。我的应用只使用了视频中的几帧,因此我对其进行了修改以接受图像而不是整个视频。 【参考方案1】:如果您将视频作为文件上传到服务器,那么听起来您已经将其保存到文件中 - 在这种情况下,简单地从文件中读取它可能不会那么低效。
视频通常太大而无法放入内存,因此无论如何它可能会以某种方式进入磁盘并返回。
如果您的意思是您希望您的 openCV 程序直接接受流式视频,进行处理,然后做任何您想做的事情(例如保存到文件、显示、流式传输到其他地方),那么通常最容易流式传输如果可能,将视频发送到 OpenCV 程序并使用 OpenCV 直接读取流:
VideoCapture cap;
cap.open(yourStreamURL);
【讨论】:
在许多 ML 应用程序中,视频都很短(10 秒),因此它们可以很容易地存储在内存中。此外,机器学习机器通常具有 200GB 以上的大量 RAM。以上是关于从字节读取视频的主要内容,如果未能解决你的问题,请参考以下文章