将使用 FFmpeg 截取的屏幕截图保存到 Amazon S3 存储桶中

Save screenshots taken with FFmpeg into Amazon S3 bucket

在我的 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。我尝试做的是将图片直接上传到我的 public 亚马逊存储桶中。

您应该将输出保存为 stdout 并使用 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,您会找到适合您需要的格式。