我正在尝试使用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!
有人可以帮助我吗?