0

我正在构建一个 python 云视频管道,它将从存储桶中读取视频,执行一些计算机视觉分析并将帧返回到存储桶。据我所知,没有一种 Beam 读取方法可以将 GCS 路径传递给 opencv,类似于 TextIO.read()。我的选择似乎是在本地下载文件(它们很大),使用 GCS fuse 安装在本地工作人员上(可能吗?)或编写自定义源方法。任何人都有什么最有意义的经验?

我的主要困惑是这里的这个问题

google cloud dataflow (apache beam) 可以用ffmpeg处理视频或图片数据吗

ffmpeg 如何访问该路径?它不仅仅是上传二进制文件的问题吗?需要有一个 Beam 方法来传递项目,对吗?

4

1 回答 1

0

我认为您需要先下载文件,然后再通过它们。

但是,不是在本地保存文件,而是可以将字节传递给 opencv。它是否接受任何类型的 ByteStream 或输入流?

您可以拥有一个 ParDo,它使用 GCS API 下载文件,然后通过流、ByteChannel标准输入管道等将其传递给 opencv。

如果这不可用,您需要将文件保存到本地磁盘。然后将文件名传递给opencv。这可能很棘手,因为您最终可能会使用过多的磁盘空间。因此,请确保正确地垃圾收集文件并在 opencv 处理它们后从本地磁盘中删除文件。

我不确定,但您可能还需要选择特定的 VM 机器类型以确保您有足够的磁盘空间,具体取决于文件的大小。

于 2017-08-07T20:24:02.653 回答