如何使用FFMPEG将输出和日志文件传输到S3

时间:2019-06-11 19:34:26

标签: bash amazon-web-services amazon-s3 ffmpeg

我使用以下方法将FFMPEG输出直接从EC2直接保存到S3:

ffmpeg -i ${input} -f mp4 -movflags frag_keyframe+faststart -hide_banner -y pipe:1 | aws s3 cp - s3://my-bucket/video/output.mp4
-

效果很好,但是我想像这样添加我的ffmpeg.logprogress.log

ffmpeg -i ${input} -f mp4 -movflags frag_keyframe+faststart -hide_banner -y -progress progress.log pipe:1 | aws s3 cp - s3://my-bucket/video/output.mp4 &> ffmpeg.log
-

,但是添加日志会引发错误,并将日志保存在我的EC2中。我确定它甚至与我所需要的不符。我也尝试添加多个管道,但没有任何乐趣。

如何使用ffmpeg将日志文件与输出文件一起保存到S3?

1 个答案:

答案 0 :(得分:0)

您的日志将转到当前工作目录。您将需要分别上传它们。由于我们对日志感兴趣,因此我认为您可能还需要进行一些错误检查。如果没有,只需删除if [...]fi之间的内容。

#!/bin/bash
# This will report an error from ffmpeg to $? in the pipeline.
set -o pipefail

ffmpeg -i ${input} -f mp4 -movflags frag_keyframe+faststart -hide_banner -y pipe:1 2> progress.log | \
aws s3 cp - s3://my-bucket/video/output.mp4 2> ffmpeg.log
if [ $? -ne 0 ]; then
    echo "Failed to build /upload output.mp4"
    # Do anything else on error here...
fi

aws s3 cp progress.log s3://my-bucket/video/progress.log
if [ $? -ne 0 ]; then
    echo "Failed to upload progress.log"
fi

aws s3 cp ffmpeg.log s3://my-bucket/video/ffmpeg.log
if [ $? -ne 0 ]; then
    echo "Failed to upload ffmpeg.log"
fi

您还可以将日志与{...}合并为一个。像这样:

{
    ffmpeg -i ${input} -f mp4 -movflags frag_keyframe+faststart -hide_banner -y pipe:1 | \
    aws s3 cp - s3://my-bucket/video/output.mp4
} 2> ffmpeg.log