C#从MP4文件中提取MP3文件

8

有没有简单的方法从mp4文件中提取mp3文件?

我已经尝试更改文件扩展名,但这样无法编辑mp3描述。

谢谢!


1
可能是从视频文件中提取wav文件的重复问题。 - John Wu
我认为你的问题应该是“如何在C#中以编程方式设置mp3的描述”。听起来你完全能够将mp4转换为mp3,只需要帮助设置描述。 - Max von Hippel
2个回答

11

使用Xabe.FFmpeg。它是免费的(非商业用途),在GitHub上有公共代码库,支持跨平台(使用.NET Standard编写)。

只需三行即可从mp4中提取mp3:

    string output = Path.ChangeExtension(Path.GetTempFileName(), FileExtensions.Mp3);
    IConversionResult result = await Conversion.ExtractAudio(Resources.Mp4WithAudio, output)
                                               .Start();

这需要像其他答案一样的FFmpeg可执行文件,但您可以通过下载来获取它

    FFmpeg.GetLatestVersion();

完整文档可在此处查看 - Xabe.FFmpeg 文档


9
使用FFMPEG,您可以像这样做:
using System;
using System.Diagnostics;

namespace ConvertMP4ToMP3
{
    internal class Program
    {
        static void Main(string[] args)
        {
            var inputFile = args[0] + ".mp4";
            var outputFile = args[1] + ".mp3";
            var mp3out = "";
            var ffmpegProcess = new Process();
            ffmpegProcess.StartInfo.UseShellExecute = false;
            ffmpegProcess.StartInfo.RedirectStandardInput = true;
            ffmpegProcess.StartInfo.RedirectStandardOutput = true;
            ffmpegProcess.StartInfo.RedirectStandardError = true;
            ffmpegProcess.StartInfo.CreateNoWindow = true;
            ffmpegProcess.StartInfo.FileName = "//path/to/ffmpeg";
            ffmpegProcess.StartInfo.Arguments = " -i " + inputFile + " -vn -f mp3 -ab 320k output " + outputFile;
            ffmpegProcess.Start();
            ffmpegProcess.StandardOutput.ReadToEnd();
            mp3out = ffmpegProcess.StandardError.ReadToEnd();
            ffmpegProcess.WaitForExit();
            if (!ffmpegProcess.HasExited)
            {
                ffmpegProcess.Kill();
            }
            Console.WriteLine(mp3out);
        }
    }
}

也许?在这里,你可以通过命令行调用.exe文件并输入路径以及去除扩展名的输入和输出文件名称,例如:
C:\>ConvertMP3ToMP4.exe C:\Videos\Aqua\BarbieGirl C:\Music\Aqua\BarbiGirl
当然,你需要提供FFMPEG可执行文件的完整路径(第19行)。这里有一个小细节,我只是简单地处理一下代码,可能会存在问题,代码未编译或测试,仅供参考。祝好运。

应该在进程参数中删除 output" -i " + inputFile + " -vn -f mp3 -ab 320k " + outputFile; - Mohammad Zamanian

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接