首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用fluent-ffmpeg将包含空格的选项传递给ffmpeg

使用fluent-ffmpeg将包含空格的选项传递给ffmpeg
EN

Stack Overflow用户
提问于 2018-02-24 19:28:42
回答 2查看 1.2K关注 0票数 2

我正在编写一个Node脚本,它使用fluent-ffmpeg复制和重新标记我的一些fluent-ffmpeg文件。

它不适用于任何包含空格的元数据。执行复制/标记的代码如下所示:

代码语言:javascript
复制
const ffmpeg = require('fluent-ffmpeg');

const inputFilename = 'path/to/original.m4a';
const outputFilename = 'path/to/new.m4a';

const options = [
    '-metadata', 'artist=Someone',
    '-metadata', 'album=Some title',
    // ...etc
];

ffmpeg(inputFilename)
  .outputOptions(options)
  .saveToFile(outputFilename);

这将导致一个错误:

代码语言:javascript
复制
events.js:183
      throw er; // Unhandled 'error' event

An error occurred: ffmpeg exited with code 1: title: Invalid argument

我尝试过将Some title放在单引号、双引号和无引号中。我试过逃离里面的空间。我尝试将options数组作为单个选项而不是元组传递,例如:'-metadata album="Some title"' --但是无论我尝试什么,当有空格时,它仍然会抛出一个错误。

(值得注意的是,这是在Windows上进行的)

有人能提出办法让它发挥作用吗?

EN

回答 2

Stack Overflow用户

发布于 2018-03-07 08:05:33

我解决了!(或者至少,我找到了一个解决办法-我相信这个问题是由fluent-ffmpeg中的一个bug引起的)

只需在包含空格的选项末尾添加一个额外的空间即可。所以,这一行:

代码语言:javascript
复制
'-metadata', 'album=Some title',

变成这样:

代码语言:javascript
复制
'-metadata', 'album=Some title ',

当传递给ffmpeg时,终端空间似乎会被忽略,也就是说,它不会出现在生成的文件的元数据中。

票数 2
EN

Stack Overflow用户

发布于 2018-03-25 14:19:47

我注意到了一个类似的问题,但在Windows上没有,只有Linux。我通过Lazarus/FPC GUI发送命令行。我以这种方式引用titre.Text中的空格:

如果changemeta.Checked那么chmeta :=‘-元数据title=’+title=+ titre.Text +title=+ -metadata:s:v:0 language=+ VLang.Text + -metadata:s:a:0 language=+ ALang.Text +‘

变量‘引号’被定义为‘,在Windows上,整个标题被正确地插入到元数据中,但是在Linux上,它显示为带有引号的“一些标题”。更改单引号在单引号中给出’一些标题‘,插入空格在结束引号之前插入一个空格,删除引号会导致错误。

也许一个肮脏的解决办法是创建一个函数,用不可破坏的空间来代替空间,但这并不令人满意,而且可能会在一些玩家中错误地显示出来。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48966767

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档