首页 > 解决方案 > 将使用 FFmpeg 截取的屏幕截图保存到 Amazon S3 存储桶中

问题描述

在我的 python 应用程序中,我截取了视频的屏幕截图。我将它们保存在本地,它工作得很好,但现在我想将它们保存在 Amazon S3 存储桶中。

subprocess.run(["ffmpeg", "-ss", "00:00:30", "-i", src, "-map", "0:v", "-vframes", "1", "pipe:pic.jpeg | aws s3 cp - s3://mypublicbucket"])

Unable to find a suitable output format运行此命令时我得到一个。我尝试做的是将图片直接上传到我的公共亚马逊存储桶中。

标签: pythonamazon-s3ffmpeg

解决方案


您应该将输出保存为 astdout并使用 boto3 将其发送到 Amazon S3。

像这样的东西:

video = subprocess.run(["ffmpeg", "-ss", "00:00:50", "-i", src, "-f", "image2", "-vframes", "1", "-"], stdout=subprocess.PIPE)

client = boto3.client('s3',
                        aws_access_key_id="YOUR_KEY_ID",
                        aws_secret_access_key= "YOUR_ACCESS_KEY")

response = client.put_object(Body=video.stdout, Bucket="your-bucket", Key="pic.jpeg")

请注意"-"FFmpeg 命令中的 ,这意味着您希望输出为stdout. "-f", "image2"用于您的输出格式,一张图片,如果您需要不同的输出格式,只需运行ffmpeg -muxers,您会找到适合您需要的。


推荐阅读