4

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

我已经尝试更改文件扩展名,但这不会让我编辑 mp3 描述。

谢谢你!

4

2 回答 2

8

使用Xabe.FFmpeg。它是免费的(非商业用途),在 GitHub 上有公共存储库,跨平台(用 .NET 标准编写)。

从 mp4 中提取 mp3 只需 3 行:

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

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

    FFmpeg.GetLatestVersion();

此处提供完整文档 - Xabe.FFmpeg 文档

于 2018-08-19T10:31:21.750 回答
7

使用 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

当然,您需要在第 19 行提供 FFMPEG 可执行文件的完整路径。这里有一个小警告,我只是把它封装起来,所以代码可能有问题,我没有编译或测试它,这只是一个起点。祝你好运。

于 2017-07-08T01:08:41.070 回答