首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将PCM转换为MP3/OGG

将PCM转换为MP3/OGG
EN

Stack Overflow用户
提问于 2013-12-10 17:09:09
回答 2查看 7.8K关注 0票数 2

我需要将一个连续的PCM流,或者编码的音频(ADPCM,uLaw,Opus)转换成MP3/OGG格式,这样它就可以被流到浏览器中(使用html的音频标记)。我有“流-mp3/ogg-使用-音频标签”部分工作,现在我需要开发转换层。

我有两个问题:

  1. 如何使用NAudio和/或其他C#库/框架将PCM转换为MP3/OGG?我想在NAudio演示应用程序中可能有一两个代码片段,但是我还没有找到它。
  2. 在将编码数据转换为MP3/OGG之前,是否必须将编码数据(ADPCM、uLaw、OPUS)转换为PCM (我可以),还是MP3/OGG容器可以接受编码数据?

注意:我知道我的MP3有许可问题,所以我们可以使用OGG。

谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-12-10 21:03:43

要回答第一个问题,要创建MP3或OGG,您需要一个编码器。NAudio不包括MP3或OGG编码器。它所做的就是提供方法来访问已经安装在计算机上的编码器(例如ACM或转换)。但是,使用MP3和OGG,您会发现最简单的方法是找到一个非托管DLL或命令行实用程序,并从.NET访问它。

至于你的第二个问题,答案是肯定的。每当您转换代码,您首先解码到PCM,然后重新编码在目标编解码器.我认为理论上您可以将任何格式的音频编码到OGG容器中,但实际上,OGG容器中的音频通常是用Vorbis编码的。FLAC和OPUS可能是选项,但您需要再次找到一个可以为您编写OGG容器格式的应用程序或库,因为我不知道任何完全管理的OGG作者。

票数 1
EN

Stack Overflow用户

发布于 2014-04-09 20:45:43

1) PCM到OGG

代码语言:javascript
复制
string fileName = @"e:\Down\male.wav";
Sox.Convert(@"sox.exe", fileName, fileName + ".ogg");

2) PCM到MP3

代码语言:javascript
复制
    static void AnyToMp3(string fileName)
    {
        DsReader dr = new DsReader(fileName);
        IntPtr formatPcm = dr.ReadFormat();
        byte[] dataPcm = dr.ReadData();
        dr.Close();
        IntPtr formatMp3 = AudioCompressionManager.GetCompatibleFormat(formatPcm,
            AudioCompressionManager.MpegLayer3FormatTag);
        byte[] dataMp3 = AudioCompressionManager.Convert(formatPcm, formatMp3, dataPcm, false);
        Mp3Writer mw = new Mp3Writer(File.Create(fileName + ".mp3"));
        mw.WriteData(dataMp3);
        mw.Close();
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20500796

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档