Я пытаюсь использовать ffmpeg для объединения нескольких видеофайлов. Каждый файл имеет одинаковую кодировку, и их просто нужно сшить вместе. У меня проблема в том, что я хотел бы сделать это с использованием потоков, но ffmpeg поддерживает только один входной поток на команду.
Поскольку файлы имеют одинаковую кодировку, я подумал, что могу объединить их в один поток и передать их в качестве входных данных для ffmpeg.
const CombinedStream = require("combined-stream")
const ffmpeg = require("fluent-ffmpeg")
const AWS = require("aws-sdk")
const s3 = new AWS.S3()
const merge = ({ videos }) => {
const combinedStream = CombinedStream.create();
videos //I take my videos from S3 and merge them
.map((video => {
return s3
.getObject({
Bucket: "myAWSBucketName",
Key: video
})
.createReadStream()
}))
.forEach(stream => {
combinedStream.append(stream)
})
ffmpeg()
.input(combinedStream)
.save("/tmp/file.mp4")
}
merge({ videos: ["video1.mp4", "video2.mp4"]})
Я надеялся, что ffmpeg сможет прочитать файлы из одного потока и вывести их вместе, но вместо этого я получил эту ошибку:
Error: ffmpeg exited with code 1: pipe:0: Invalid data found when processing input
Cannot determine format of input stream 0:0 after EOF
Error marking filters as finished
Conversion failed!
Кто-нибудь может мне помочь?