从视频文件中提取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文件的主要内容,如果未能解决你的问题,请参考以下文章