【问题标题】:Converting every .flac files in a folder into 320kbps .mp3 without losing metadata将文件夹中的每个 .flac 文件转换为 320kbps .mp3 而不会丢失元数据
【发布时间】:2019-01-04 23:00:48
【问题描述】:

我正在尝试将文件夹中的每个 .flac 文件转换为 320kbps .mp3 而不会丢失元数据

我试过这个:

ffmpeg -i *.flac -ab 320k -map_metadata 0 -id3v2_version 3 *.mp3

但它返回:*.flac: Invalid argument

我想做的是将每个 flac 文件转换为 320kbps mp3 而不会丢失元数据

谢谢。

【问题讨论】:

  • "Invalid argument" 似乎是命令行的 ffmpeg 错误;我查看文档(ffmpeg.org/ffmpeg.html)的猜测是它不能为-i 使用通配符参数,而是需要-i file1.flac -i file2.flac 等,因为那里的任何示例中都没有显示通配符。

标签: powershell ffmpeg


【解决方案1】:

在 CMD 中试试这个:

for %A IN (*.flac) DO ffmpeg -i "%A" -ab 320k -map_metadata 0 -id3v2_version 3 %~nA.mp3

【讨论】:

  • 如果文件名中有空格,我会使用双引号:"%~nA.mp3"
【解决方案2】:

这似乎可以通过 Get-ChildItem 上的简单循环来实现,例如...

PS C:\Users> Get-ChildItem *.flac | % {
  $mp3filename = $_.basename + '.mp3'
  ffmpeg -i $_.filename -ab 320k -map_metadata 0 -id3v2_version 3 $mp3filename
}

这似乎也解决了cmets中提到的“无通配符”问题

【讨论】:

  • 你应该是结果并使用你刚刚创建的变量名;-)或只是ffmpeg -i $_.filename -ab 320k -map_metadata 0 -id3v2_version 3 ($_.basename + '.mp3')
  • 我不知道那里发生了什么!谢谢@LotPings
【解决方案3】:

在 bash 中这很容易做到:

for f in *.flac;do ffmpeg -i "${f}" -ab 320k -map_metadata 0 -id3v2_version 3 "${f%.*}".mp3;done;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-07-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-16
    • 2021-09-29
    相关资源
    最近更新 更多