【问题标题】:c# extract mp3 file from mp4 filec#从mp4文件中提取mp3文件
【发布时间】:2018-08-19 18:31:21
【问题描述】:

有什么简单的方法可以从 mp4 文件中提取 mp3 文件吗?

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

谢谢!

【问题讨论】:

  • 我认为您的问题应该是“如何以编程方式在 c# 中设置mp3 的描述”。听起来你完全有能力mp4 -> mp3,你只需要帮助设置描述。

标签: c# audio mp3 media format-conversion


【解决方案1】:

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

仅用 3 行从 mp4 中提取 mp3:

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

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

    FFmpeg.GetLatestVersion();

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

【讨论】:

    【解决方案2】:

    使用 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,并使用输入和输出文件的路径减去扩展名,a la:

    C:\>ConvertMP3ToMP4.exe C:\Videos\Aqua\BarbieGirl C:\Music\Aqua\BarbiGirl

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

    【讨论】:

    • 应该去掉process参数中的output" -i " + inputFile + " -vn -f mp3 -ab 320k " + outputFile;
    猜你喜欢
    • 1970-01-01
    • 2013-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-20
    • 2018-08-01
    • 2018-01-12
    • 1970-01-01
    相关资源
    最近更新 更多