我想使用FFMPEG 对大文件进行转码,然后将结果直接存储在AWS S3上。这将在tmp空间有限的AWS Lambda内部完成,因此我无法在本地存储转码结果,然后在第二步将其上传到S3。我没有足够的tmp空间。因此,我想将FFMPEG输出直接存储在S3上。
因此,我创建了一个允许“ PUT”的S3预签名网址:
var outputPath = s3Client.GetPreSignedURL(new Amazon.S3.Model.GetPreSignedUrlRequest
{
BucketName = "my-bucket",
Expires = DateTime.UtcNow.AddMinutes(5),
Key = "output.mp3",
Verb = HttpVerb.PUT,
});
Run Code Online (Sandbox Code Playgroud)
然后,我使用生成的预签名URL调用ffmpeg:
ffmpeg -i C:\input.wav -y -vn -ar 44100 -ac 2 -ab 192k -f mp3 https://my-bucket.s3.amazonaws.com/output.mp3?AWSAccessKeyId=AKIAJDSGJWM63VQEXHIQ&Expires=1550427237&Signature=%2BE8Wc%2F%2FQYrvGxzc%2FgXnsvauKnac%3D
Run Code Online (Sandbox Code Playgroud)
FFMPEG返回退出代码1,并显示以下内容:
ffmpeg version N-93120-ga84af760b8 Copyright (c) 2000-2019 the FFmpeg developers
built with gcc 8.2.1 (GCC) 20190212
configuration: --enable-gpl --enable-version3 --enable-sdl2 --enable-fontconfig --enable-gnutls --enable-iconv --enable-libass --enable-libdav1d --enable-libbluray --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libtheora --enable-libtwolame --enable-libvpx …Run Code Online (Sandbox Code Playgroud)