gpt4 book ai didi

node.js - AWS ffmpeg-lambda-layer 和 concat 协议(protocol) (Node.js)

转载 作者:行者123 更新时间:2023-12-04 23:21:03 26 4
gpt4 key购买 nike

我正在尝试使用 ffmpeg lambda-layer 连接两个 .mp3 文件。我有我认为正确的命令,但我很难用代码表示它,以便为 lambda 层正确格式化。这是一段我正在努力纠正的代码:

spawnSync(
'/opt/ffmpeg/ffmpeg',
[
'-i',
'"concat:/tmp/pt1.mp3|/tmp/pt2.mp3"',
'-acodec',
'copy',
`/tmp/${fileName}`
],
{ stdio: 'inherit' }
)
我得到的错误: "concat:/tmp/pt1.mp3|/tmp/pt2.mp3": No such file or directory .
我试图列出 /tmp/ 中的文件文件夹 - 输入中列出的两个文件都在那里,不确定为什么 lambda 层找不到它们。
类似问题: https://lists.ffmpeg.org/pipermail/ffmpeg-user/2019-December/046299.html . ffmpeg 连接协议(protocol)文档: https://trac.ffmpeg.org/wiki/Concatenate#protocol .
提前致谢!

最佳答案

更新:
能够通过使用 concat demuxer 而不是 concat 协议(protocol)来解决这个问题。文档:https://trac.ffmpeg.org/wiki/Concatenate#demuxer
它需要带有输入文件列表的 .txt 文件,所以我必须创建一个。这是我的解决方案:

// in the head of the file
const { writeFile } = require('fs')
const { promisify } = require('util')

const asyncWriteFile = promisify(writeFile)

// ...

await asyncWriteFile('/tmp/list.txt', 'file \'/tmp/pt1.mp3\'\r\nfile \'/tmp/pt2.mp3\'', (err) => {
if (err)
console.log(err)
})

// concat
spawnSync(
'/opt/ffmpeg/ffmpeg',
[
'-f',
'concat',
'-safe',
'0',
'-i',
'/tmp/list.txt',
'-c',
'copy',
`/tmp/${fileName}`
],
{ stdio: 'inherit' }
)

关于node.js - AWS ffmpeg-lambda-layer 和 concat 协议(protocol) (Node.js),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66356781/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com