如何将视频作为输入传递给 Android Studio 中的 python 代码

How to pass video as input to python code inside Android Studio

我想开发一个可以将视频作为输入然后将该视频传递给 python 代码的应用程序。我知道有一个名为 Chaquopy 的 python SDK,用于在 android studio 中使用 python 代码。但我不知道如何从 Android Studio 中的 res 文件夹中获取视频并将其传递给 python 代码。我的主要算法在 python 中,为此我需要将视频作为输入传递。 我是 android Studio 的新手。有人可以帮助我吗?

使用 Chaquopy 时,在 Python 代码中加载文件的最简单方法是将其放在 Python 源代码目录中,而不是 res 目录中。来自 FAQ:

If the data file is in the same directory as the Python file:

from os.path import dirname, join
filename = join(dirname(__file__), "filename.txt")
You can then pass the filename to open, or any other function which reads a file.

If the data file and the Python file are in different directories, then change the path accordingly. For example, if the Python file is alpha/hello.py, and the data file is bravo/filename.txt, then replace filename.txt above with ../bravo/filename.txt.

Chaquopy 目前不提供任何可以直接读取视频文件的 Python 包。但是,如果您将 mobile-ffmpeg 添加到您的项目,您可以从 Python 调用它以从视频中提取帧,然后您可以根据需要进行处理。

有关完整示例,请参见 here,相关行如下:

from com.arthenica.mobileffmpeg import FFmpeg
...
FFmpeg.execute("-i " + path + " -r " + frame_gap + " -f image2 " + initial_path + "/image-%2d.png")
image_read_counter = 1
while image_read_counter < int(vid_length_in_seconds * frame_gap):
    str_image_read_counter = '%02d' % image_read_counter
    image_path = initial_path + '/image-' + str_image_read_counter + '.png'
    img = cv2.imread(image_path)
    ...