是否可以使用
io.BytesIO
和 moviepy 绕过文件系统上的存储?我需要将 Docker 容器的所有内容存储在内存中。
是的,您可以使用 io.BytesIO 和 MoviePy 将视频文件直接写入内存而不是文件:
pip install moviepy
from moviepy.editor import VideoFileClip, TextClip, CompositeVideoClip
...
output = io.BytesIO()
process = subprocess.Popen(
['ffmpeg', '-y', '-f', 'rawvideo', '-s', '640x480', '-pix_fmt', 'rgb24', '-r', '30', '-i', '-', '-c:v', 'libx264', '-f', 'mp4', 'pipe:1'],
stdin=subprocess.PIPE, stdout=subprocess.PIPE
)
for frame in video.iter_frames(fps=30, dtype='uint8'):
process.stdin.write(frame.tobytes())
process.stdin.close()
output.write(process.stdout.read())
output.seek(0)
在此处查找 MoviePy 的详细信息:https://pypi.org/project/moviepy/