我需要将一个连续的PCM流,或者编码的音频(ADPCM,uLaw,Opus)转换成MP3/OGG格式,这样它就可以被流到浏览器中(使用html的音频标记)。我有“流-mp3/ogg-使用-音频标签”部分工作,现在我需要开发转换层。
我有两个问题:
注意:我知道我的MP3有许可问题,所以我们可以使用OGG。
谢谢。
发布于 2013-12-10 21:03:43
要回答第一个问题,要创建MP3或OGG,您需要一个编码器。NAudio不包括MP3或OGG编码器。它所做的就是提供方法来访问已经安装在计算机上的编码器(例如ACM或转换)。但是,使用MP3和OGG,您会发现最简单的方法是找到一个非托管DLL或命令行实用程序,并从.NET访问它。
至于你的第二个问题,答案是肯定的。每当您转换代码,您首先解码到PCM,然后重新编码在目标编解码器.我认为理论上您可以将任何格式的音频编码到OGG容器中,但实际上,OGG容器中的音频通常是用Vorbis编码的。FLAC和OPUS可能是选项,但您需要再次找到一个可以为您编写OGG容器格式的应用程序或库,因为我不知道任何完全管理的OGG作者。
发布于 2014-04-09 20:45:43
1) PCM到OGG
string fileName = @"e:\Down\male.wav";
Sox.Convert(@"sox.exe", fileName, fileName + ".ogg");2) PCM到MP3
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();
}https://stackoverflow.com/questions/20500796
复制相似问题