【问题标题】:Extract wav file from video file从视频文件中提取wav文件
【发布时间】:2009-06-18 05:41:06
【问题描述】:

我正在开发一个需要从视频中提取音频的应用程序。音频需要以 .wav 格式提取,但视频格式没有问题。任何格式都可以,只要我可以将音频提取到 wav 文件中。

目前我正在使用 Windows 窗体中的 Windows Media Player COM 控件来播放视频,但任何其他嵌入式播放器也可以。

关于如何做到这一点的任何建议? 谢谢

【问题讨论】:

    标签: c# winforms video audio


    【解决方案1】:

    如果您想使用 C# 执行此操作,请查看 NAudio library。它可以分析音频格式(如 FFMpeg)并提供音频流。这是one example。

    样本片段:

    using NAudio.Wave;
    using System.IO;
    
    ...
    
    // contentAsByteArray consists of video bytes
    MemoryStream contentAsMemoryStream = new MemoryStream(contentAsByteArray);
    
    using (WaveStream pcmStream =
        WaveFormatConversionStream.CreatePcmStream(
            new StreamMediaFoundationReader(contentAsMemoryStream)))
    {
        WaveStream blockAlignReductionStream = new BlockAlignReductionStream(pcmStream);
    
        // Do something with the wave stream
    }
    

    【讨论】:

    • 虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接答案可能会失效。 - From Review
    • @MarkRotteveel 你是绝对正确的。以后我会尽量按照你的建议去做。鉴于相当广泛的主题,这里的答案会很长,坦率地说,我不知道从哪里开始。 NAudio 库对我的解决方案至关重要。
    • 添加了一个 sn-p
    • 嘿,谢谢!我 9 年前问过这个问题,我使用了我认为接受的答案中提供的解决方案。您的解决方案似乎也很好,不幸的是我不能再测试它了。 :)
    • @NikosSteiakakis 我上周不得不解决这个问题,这就是我发现你的问题的方式。由于该主题仍然相关并且缺乏令人满意的答案(对于我的用例),我决定提供我的:)
    【解决方案2】:

    Here is a link 介绍如何使用 GraphEdit 提取音频,GraphEdit 是 DirectShow API 的前端 UI,因此您可以使用 API 完成所有功能。
    您可以使用 DirectShow.NET liberty,它为托管世界包装了 DirectShow API。

    【讨论】:

    • 在这种情况下,我是否应该在安装程序中也为用户提供 DirectX 库?
    • DirectShow 内置于 XP 及更高版本。
    【解决方案3】:

    可能最容易将 ffmpeg 用于这种事情......

    【讨论】:

    • 谢谢!我在想更多的 .dll 形式的东西,但如果我找不到更合适的东西,一个可执行文件就可以解决问题。
    • 向一个 exe 文件开炮并不丢人! ;) 是的,我知道你来自哪里。取决于您希望它有多专业。
    猜你喜欢
    • 2014-12-31
    • 1970-01-01
    • 1970-01-01
    • 2012-07-10
    • 2011-05-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多