【问题标题】:ENAMETOOLONG nodeJs ffmpeg-fluentENAMETOOLONG nodeJs ffmpeg-fluent
【发布时间】:2016-09-28 10:56:52
【问题描述】:

我目前正在使用 ffmpeg-fluent 来合并视频文件。 (https://github.com/fluent-ffmpeg/node-fluent-ffmpeg)

不幸的是,我将文件合并的循环在第千个文件处失败,但有以下异常:

/nodes_modules/fluent-ffmpeg 中的错误 ENAMETOOLONG。

我的问题是:

如何绕过此错误以编写具有无限字符数的命令?

【问题讨论】:

  • 该错误来自您的操作系统,而不是节点中的任何地方。您对此无能为力 - 文件名比您的操作系统或文件系统能够处理的要长。
  • 好的。所以...此错误附加在 Windows 上。哪个操作系统处理它?

标签: javascript node.js fluent-ffmpeg


【解决方案1】:

这是一个老问题,不幸的是,没有代码可以确定问题所在。但是在 Windows 上从 ffmpeg 获取 ENAMETOOLONG 通常意味着命令真的太长了。合并数千个文件使这看起来很自然。

现在 2020 年仍然会发生这种情况。但是可以解决这个问题。我们需要将源文件名(用于合并)放入一个文本文件中,并将该文本文件作为 ffmpeg 的输入提供。

原始的 ffmpeg 调用如下所示:

ffmpeg -f concat -safe 0 -i mylist.txt -c copy output.wav

mylist.txt 类似:

file '/path/to/file1.wav'
file '/path/to/file2.wav'
file '/path/to/file3.wav'

使用 fluent-ffmpeg 并不直观,但仍然可行:

const cmd = ffmpeg();
cmd.input('mylist.txt')
   .inputOption(['-f concat', '-safe 0'])
   .output('out.wav')
   .run();

注意: 注意 Windows 上列表文件和源文件的绝对路径。大多数 ffmpeg 版本会将列表的目录添加到源文件中,从而导致类似的损坏路径:

c:/ffmpeg/lists/c:/audiofiles/file1.wav

但如果你使用 url 格式的源文件,你仍然可以解决这个问题:

file 'file:c:/audiofiles/file1.wav'
file 'file:c:/audiofiles/file2.wav'
file 'file:c:/audiofiles/file3.wav'

我相信这对搜索此 ffmpeg 错误的人会有所帮助:-)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-04-26
    • 2023-03-14
    • 2020-10-20
    • 2013-11-14
    • 1970-01-01
    • 2019-06-02
    • 2016-06-08
    • 2021-03-06
    相关资源
    最近更新 更多