【问题标题】:FFmpeg Command for Audio Files mix getting error用于音频文件混合的 FFmpeg 命令出现错误
【发布时间】:2019-05-13 20:06:38
【问题描述】:

任务: 在 Android 中使用 FFmpeg 混合音频文件。

错误:

 [NULL @ 0xf6468400] Unable to find a suitable output format for ' -i '
 -i : Invalid argument

我的命令:

  File m1 = new File(Environment.getExternalStorageDirectory() + "/MyFolder/m1.mp3"); 
  File m2 = new File(Environment.getExternalStorageDirectory() + "/MyFolder/m2.mp3");
 //m1,m2 are mp3 files
 //File outputDirectory2 = new File(Environment.getExternalStorageDirectory() + "/MyFolder/video1.mp3");

 String[] auidoMixCmd3={" -i ",""+m1.getPath()," -i ",""+m2.getPath()," -filter_complex [0:0][1:0] amix=inputs=2:duration=first:dropout_transition=0 -codec:a libmp3lame -q:a 0:-f mp3",outputDirectory2.getPath()};


 String[] auidoMixCmd2={" -i ",""+m1.getPath()," -i ",""+m2.getPath()," -i ",""+m1.getPath()," -filter_complex","\"[0:0][1:0] amix=inputs=2:duration=longest\" -c:a libmp3lame -f mp3",outputDirectory2.getPath()};

我用不同的命令尝试了 100 多次,但我没有得到任何解决方案。这么多命令在堆栈溢出但得到相同的错误。请任何人在这里帮助我。

【问题讨论】:

  • 您知道哪个命令产生了错误吗?为什么 Cmd2 中有两次 -i m1.getPath?
  • 感谢重播。所有尝试过的命令都给出相同的错误。在我的手机中只有 2 个文件,但输入需要 3 个文件,所以我给了 2 次。我认为这不是问题。是文件类型有任何问题或需要提供任何过滤器规范。
  • 我已经很久没有使用ffmpeg了,但我认为文件类型很好。您确定您正确指定了参数吗?它说“-i”无效,您将“-i”和文件路径分成单独的参数。我认为他们应该在一起,即 "-i " + m1.getPath(), "-i " + m2.getPath()...
  • @JeffR。无论如何感谢重播。我也尝试过这样但同样的错误
  • ""+m1.getPath() --> 两个双引号是干什么用的?

标签: android audio ffmpeg android-ffmpeg


【解决方案1】:

由于它是一个字符串数组,因此您不必添加+ 符号。此外,+ 符号之前不需要""

您的命令应如下所示:

String[] auidoMixCmd3 = { "-i ", m1.getPath(), "-i ", m2.getPath(), "-filter_complex [0:a][1:a] amix=inputs=2:duration=first:dropout_transition=0 -codec:a libmp3lame -q:a 0 -f mp3", outputDirectory2.getPath()};

【讨论】:

  • 如何混合多次第二个音频,延迟 5 秒,覆盖到第一个音频完成
  • 请接受我的回答并提出一个新问题,我很乐意提供帮助。
  • 你好,你能动态写3个或多个输入的命令吗
  • 您可以输入任意数量的输入。只需添加"-i ", pathToFile
  • 哦,不需要更改 filter_complex..?
猜你喜欢
  • 2013-09-29
  • 2020-08-26
  • 2013-05-22
  • 2021-05-24
  • 2012-05-24
  • 1970-01-01
  • 1970-01-01
  • 2019-10-07
  • 2019-10-24
相关资源
最近更新 更多