【问题标题】:Batch converting with ffmpeg使用 ffmpeg 进行批量转换
【发布时间】:2016-11-11 21:44:50
【问题描述】:

我正在使用 ffmpeg 制作一个 Windows 批处理脚本,可以将音频文件转换为多种格式。

我希望在这里将音频转换为两种格式。 32kbps 和 40kbps。

Setlocal EnableDelayedExpansion
for %%a in ("*.*") do ffmpeg -i "%%a" -b:a 32000 "%%~na - mp3@32kbps.mp3" 
for %%a in ("*.*") do ffmpeg -i "%%a" -b:a 40000 "%%~na - mp3@40kbps.mp3"
pause

但是,我似乎得到了三个输出。

声音 - mp3@32kbps.mp3

声音 - mp3@40kbps-mp3

声音 - mp3@32kbps - mp3@40kbps.mp3

我知道我在这里一定做错了,因为我只想要两个文件。为什么我在这里得到第三种格式(sound mp3@32kbps - mp3@40kbps.mp3),我该如何避免这种情况?


这是我正在使用的更新代码:

@echo off
for %%a in (*.*) do (   

    ffmpeg -i "%%a" -b:a 32000 -ar 44100 "%%~na - [16-bit 44,100kHz - 32kbps].mp3" 
)
pause

【问题讨论】:

  • 对不起,我不使用 ffmpeg,我猜问题与您的源文件和更改的选项有关,而不是批处理文件。
  • 感谢您的帮助,但错误提示为 converter.bat: Invalid data found when processing input,这意味着 ffmpeg 发现批处理文件有问题,而不是音频文件。

标签: batch-file audio ffmpeg


【解决方案1】:

第二个 for 循环还处理从第一个 for 新生成的 mp3。 最好只使用一个:

Setlocal EnableDelayedExpansion
for %%a in (*.*) do (   
  ffmpeg -i "%%a" -b:a 32000 "%%~na - mp3@32kbps.mp3" 
  ffmpeg -i "%%a" -b:a 40000 "%%~na - mp3@40kbps.mp3"
)
pause

【讨论】:

  • 出于某种原因,这给了我Invalid data found when processing inputi.imgur.com/GzQJ4Ax.png这是我正在使用的代码i.imgur.com/UAzw5ol.png
  • @Arete 在不知道您的确切代码或输入文件的情况下,很难说什么。我使用了您的*.*,这不是一个好主意,因为它需要所有可能的扩展。您应该将其更改为 mp3 或任何您的源代码。如果我的回答是正确的,我会很高兴你相应地检查那个大的绿色标记。干杯
  • 我已将我正在使用的代码添加到问题中。至于我尝试转换哪种文件格式,结果是一样的..可以是WAV、mp3或任何其他音频格式
  • @Arete 这是解决您遇到的原始问题的正确答案,因此应该接受此答案。现在您遇到了另一个单独的问题。如前所述,*.* 是贪婪的,并且使用脚本文件本身作为输入。
  • @LordNeckbeard 谢谢。 "*.*" 是做什么的?我尝试搜索但找不到任何东西:/
猜你喜欢
  • 2015-03-01
  • 2017-05-31
  • 2019-08-02
  • 2013-04-15
  • 2021-05-01
  • 2023-03-30
  • 2017-09-27
  • 1970-01-01
  • 2015-04-20
相关资源
最近更新 更多