나는 sails.js에서 제공하는 서버에 오디오 파일을 보내는 응용 프로그램을 작성 중입니다.업로드 된 파일을 즉시 변환하여 돛 내에서 Amazon S3로 직접 스트리밍 할 수 있습니다
이 오디오 파일을 변환하고 노드 스트림을 사용하여 변환 된 데이터를 아마존 S3에 보내야합니다.
서버에 데이터를 저장하는 대신 변환 된 파일을 S3으로 직접 스트리밍하고 싶습니다.
그 방법을 알고 계십니까?
나는 강력 함을 시도했지만 제대로 작동하지 못했습니다. 누구든지 그런 일을 성공 시켰습니까?
감사
편집
jibsales가 발견으로 난 당신에게 내가 지금까지 시도했다 조각을 보여 주면, 아마 더 좋을 것이다. 그래서 기본적으로 전략은 강력하고 유창한 ffmpeg와 knox를 스트림과 함께 사용하는 것입니다.
나는 fluid-ffmpeg로 변환하기위한 엔트리 포인트가 될 첫 번째 스트림 (스트림 1)에 수신 가능한 데이터 덩어리를 작성하고 강력한 파일 스트림을 수신 할 계획입니다. 그런 다음 fluent-ffmpeg은 출력 스트림을 Knox의 진입 점 인 stream2에 씁니다.
내가 직면해야 할 첫 번째 문제는 강력한 것으로 작동하지 않는다는 사실입니다. 그러나 나는
는코드는 지금까지 다음과 같습니다 ... 내 전략은 잘 모르겠어요 :
upload : function(req,res){
//to streams to transfer file data
var stream1 = new stream.Stream(); //stream for the incoming file data
var stream2 = new stream.Stream(); //stream for the converted file data
var client = knox.createClient({
key: 'APIKEY'
, secret: 'SECRET'
, bucket: 'bucket'
});
//Using formidable to acces data chunks
var form = new formidable.IncomingForm();
form.parse(req, function(err, fields, files){ //form.parse is not called
if(err){
return res.json(err);
}else{
return res.send('ok');
}
});
//overriding form.onPart to get the file data chunk
form.onPart = function(part) {
sails.log('getting part...');
if (!part.filename) {
form.handlePart(part);
return;
}
//we put the data chunk in stream1 to convert it
part.on('data', function(chunk) {
stream1.write(chunk[1]);
});
}
form.on('error',function(err){
return sails.log(err);
});
form.on('progress', function(bytesReceived, bytesExpected) {
sails.log(bytesReceived);
});
//conversion process
var proc = new ffmpeg({ source : stream1})
.withAudioCodec('libfdk_aac')
.toFormat('mp3')
.writeToStream(stream2, {end:true}, function(retcode, error){
console.log('file has been converted succesfully');
});
client.putStream(stream2, '/file.mp3', headers, function(err, response){
return res.send(response);
});
},
Google에서 사용자에게 답변을 제안하는 대신 코드를 작성해야합니다. 코드 작성 서비스가 아닙니다. – srquinn
코드 작성을 요구하는 것이 아니라 그것을 수행하는 방법에 대한 단서를 묻는 중입니다 ... 미안 완벽하게 구현 된 대답을 기대한다고 생각하면 죄송합니다. 나는 당신에게 도움이 될 수 있다면 더 많은 통찰력을 줄 수있는 나의 시도로 나의 질문을 업데이트 할 것이다 ... – adc06