使用ffmpeg将文件夹中的所有mp4音频文件转换为mp3 [重复]

Posted

技术标签:

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

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

【问题讨论】:

他们都在同一个目录吗? 是的。我通过使用 C# 代码调用 ffmpeg.exe 并使用 Linq 并遍历每个文件来找到方法。 【参考方案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";


【讨论】:

以上是关于使用ffmpeg将文件夹中的所有mp4音频文件转换为mp3 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

Windows下ffmpeg批处理遍历当前文件夹下所有特定格式文件(如MP4等)无损提取视频音频且生成文件存到原视频文件夹下同时跳过已经处理的文件

Android ffmpeg 无法将音频(.wav 文件)与视频(.mp4 文件)合并

Windows下ffmpeg批处理遍历当前文件夹下所有特定格式文件(如MP4等)无损提取视频音频且生成文件存到原视频文件夹下同时跳过已经处理的文件

Windows下ffmpeg批处理遍历当前文件夹下所有特定格式文件(如MP4等)无损提取视频音频且生成文件存到原视频文件夹下同时跳过已经处理的文件

2020-03-11 FFmpeg——mp4合并中的坑

ffmpeg 音频视频格式转换