node.js와 함께 fluent-ffmpeg 라이브러리를 사용하여 원래 플래시 무비 포맷의 비디오를 다중 해상도, 1080p 등의 mp3 포맷으로 코드 변환합니다. 트랜스 코딩이 완료되면, 트랜스 코딩 된 비디오를 s3 버켓으로 옮기고 싶습니다.FFmpeg 출력을 Amazon S3에 직접 업로드
원본 s3 버킷에서 원본 .flv 파일을 가져 와서 스트림을 ffmpeg 생성자 함수에 전달합니다. 문제는 트랜스 코딩이 완료된 후 어떻게 mp3 데이터 스트림을 s3으로 보내야하는지입니다. 내가 트랜스 코딩 된 스트림 params 객체의 "몸"속성에 추가 얻을 수있는, 위의 코드에 대한
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);
});
});
: 여기
내가 지금까지 가지고있는 코드는?는 업데이트 : 오히려 내가 처리하는 것을 선호
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가이 시나리오를 허용합니까?
일시적으로 메모리 버퍼에 쓰고 Body 매개 변수에 버퍼를 보내는 방법이 있습니까? – user1790300
일시적으로 파일을 파일 시스템에 쓰지 않아도되는 방법이 있습니까? – user1790300