私はnode.jsでfluent-ffmpegライブラリを使用して、もともとフラッシュムービー形式のビデオを複数の解像度、1080pなどのmp3形式にトランスコードしています。トランスコードが完了したら、トランスコードされたビデオをs3バケットに移動したいと思います。FFmpeg出力をAmazon S3に直接アップロード
元の.flvファイルをソースs3バケットから取り出し、ストリームをffmpegコンストラクタ関数に渡します。問題は、トランスコードが完了した後、mp3データのストリームをs3に送信する方法を教えてください。上記のコードの場合
var params = {
Bucket: process.env.SOURCE_BUCKET,
Key: fileName
};
s3.getObject(params, function(err, data) {
if (err) console.log(err, err.stack); // an error occurred
var format = ffmpeg(data)
.size('854x480')
.videoCodec('libx264')
.format('flv')
.toFormat('mp4');
.on('end', function() {
//Ideally, I would like to do the uploading here
var params = {
Body: //{This is my confusion, how do I get the stream to add here?},
Bucket: process.env.TRANSCODED_BUCKET,
Key: fileName
};
s3.putObject(params, function (err, data) {
});
})
.on('error', function (err) {
console.log('an error happened: ' + err.message);
});
});
、私はトランスコードストリームのparamsオブジェクトの「ボディ」プロパティに追加して得ることができます?ここ
は、私がこれまで持っているコードですか。
アップデート:ここで
は私がやろうとしています何の改訂版である:
var outputStream: MemoryStream = new MemoryStream();
var proc = ffmpeg(currentStream)
.size('1920x1080')
.videoCodec('libx264')
.format('avi')
.toFormat('mp4')
.output(outputStream)
// setup event handlers
.on('end', function() {
uploadFile(outputStream, "").then(function(){
resolve();
})
})
.on('error', function (err) {
console.log('an error happened: ' + err.message);
});
私はむしろ、私はプロセスに好む、S3からローカルファイルシステムにファイルをコピー避けたいです終了時にメモリ内のファイルをアップロードしてs3に戻します。 fluent-ffmpegはこのシナリオを許しますか?
一時的にメモリバッファに書き込む方法はありますか?次に、ボディパラメータにバッファを送りますか? – user1790300
一時的にファイルシステムにファイルを書き込まなくてもいい方法はありますか? – user1790300