从视频文件中提取wav文件

Posted

技术标签:

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

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

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

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

【问题讨论】:

【参考方案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 文件开炮并不丢人! ;) 是的,我知道你来自哪里。取决于您希望它有多专业。

以上是关于从视频文件中提取wav文件的主要内容,如果未能解决你的问题,请参考以下文章

在 django 中使用 FFMPEG 在网络上上传后从视频中提取 WAV 音频文件

从python中的视频中提取音频

视频去除杂音教程

来自另一个 wav 文件的 WAV 文件写入问题

如何使用 ffmpeg 提取 8khz 的音频

音视频处理概要 markdown