【问题标题】:converting all the mp4 audio files in a folder to mp3 using ffmpeg [duplicate]使用ffmpeg将文件夹中的所有mp4音频文件转换为mp3 [重复]
【发布时间】:2016-11-21 19:12:07
【问题描述】:

如何使用 ffmpeg 将给定文件夹中的所有 mp4 文件转换为 mp3。 我在 google 上看到的几乎所有链接都是关于将 mp4 视频转换为 mp3 的。 我可以通过 VLC 播放器做到这一点,但我收集了大量 ~ 1000 个 mp4 音频文件,并希望通过一些脚本或命令通过命令行完成。 是否可以通过 gstreamer 做到这一点?

【问题讨论】:

  • 他们都在同一个目录吗?
  • 是的。我通过使用 C# 代码调用 ffmpeg.exe 并使用 Linq 并遍历每个文件来找到方法。

标签: ffmpeg mp3 gstreamer avaudioplayer mp4


【解决方案1】:

一种方法是 bash for 循环。

仅用于转换.mp4 文件:

mkdir outputs
for f in *.mp4; do ffmpeg -i "$f" -c:a libmp3lame "outputs/${f%.mp4}.mp3"; done

用于转换.m4a、.mov 和.flac:

mkdir outputs
for f in *.{m4a,mov,flac}; do ffmpeg -i "$f" -c:a libmp3lame "outputs/${f%.*}.mp3"; done

要转换任何内容,请使用“*”通配符:

mkdir outputs
for f in *; do ffmpeg -i "$f" -c:a libmp3lame "outputs/${f%.*}.mp3"; done

【讨论】:

  • 如果我必须为更多不同数量的文件(如 .m4a、.mov 等)扩展上述脚本怎么办:FileInfo[] Files = d.GetFiles(". mp4").Union(d.GetFiles(".")).ToArray(); .
【解决方案2】:
FileInfo[] Files = d.GetFiles("*.mp4").Union(d.GetFiles("*.<any other file extension>")).ToArray(); 

foreach (FileInfo file in Files)
            {
               // str = str + ", " + file.Name;
                  builder.Append(Path.GetFileNameWithoutExtension(file.Name));

ProcessStartInfo startInfo = new ProcessStartInfo();
       startInfo.CreateNoWindow = false;
       startInfo.UseShellExecute = false;
       startInfo.FileName = "ffmpeg.exe";
       startInfo.WindowStyle = ProcessWindowStyle.Hidden;
       startInfo.RedirectStandardOutput = !string.IsNullOrEmpty("test");
     startInfo.Arguments = "-i " + filename + ".mp4 -q:a 0 -map a " + filename + ".mp3";

}

【讨论】:

    猜你喜欢
    • 2011-03-16
    • 2020-05-11
    • 2022-01-06
    • 2020-02-18
    • 2011-07-24
    • 2022-09-27
    • 1970-01-01
    • 1970-01-01
    • 2015-03-17
    相关资源
    最近更新 更多