Tag: pcm

C#中的PCM数据间距变化

我有一个从Web服务器下载PCM数据的程序,它稍后用于通过标准PCM播放器播放。 我希望能够允许用户在播放时更改PCM数据的音高。 有谁知道如何做到这一点?

将PCM转换为MP3 / OGG

我需要将连续的PCM流或编码音频(ADPCM,uLaw,Opus)转换为MP3 / OGG格式,以便可以将其流式传输到浏览器(使用html的音频标签)。 我有“stream-mp​​3 / ogg-using-audio-tag”部分工作,现在我需要开发转换层。 我有两个问题: 如何使用NAudio和/或其他一些C#库/框架将PCM转换为MP3 / OGG? 我假设NAudio演示应用程序中有一个或两个代码片段可能正在执行此操作,但我无法找到它。 在将其转换为MP3 / OGG之前,我是否必须将编码数据(ADPCM,uLaw,OPUS)转换为PCM(我可以),或者MP3 / OGG’容器’是否可以接受编码数据? 注意:我理解MP3存在许可问题,因此我们愿意使用OGG。 谢谢。

Silverlight的音频输出

我正在寻找开发一个Silverlight应用程序,它将从Web服务器获取数据流(而不是音频流)。 然后操纵数据流以给出特定格式的音频(例如G.711a-Law),然后将其转换成PCM,以便可以应用附加效果(例如增大音量)。 到目前为止我还好。 我有我的数据,将G.711转换为PCM,但我的问题是能够将这个PCM音频输出到声卡。 我基于.Net应用程序的一些C#代码的解决方案,但在Silverlight中,尝试获取委托副本(函数指针)时出现问题,一旦我生成了一个简单的问题,这将成为单独问题的主题代码示例。 所以,问题是……如何将Silverlight中数据结构(当前是arrays)中保存的PCM音频输出给用户? (请不要说将字节值写入文本框) 如果它是一个MP3或WMA文件,我会使用MediaElement播放它,但我不想让它成为一个文件,因为这会给音频应用动态效果带来压力。 我已经看到一些人发帖说Silverlight中的低级音频支持很差/不存在,所以我对人们可能有的任何建议/想法持开放态度。

为内存中的流创建有效的wav文件头

我有raw-headerless wav音频数据作为MemoryStream s。 Stream rawAudioStream = Producer.GetRawAudioFileStream(…); 我知道那些流数据格式: // WaveFormat(int rate, int bits, int channels); WaveFormat waveformat = new WaveFormat(8000, 16, 1); 我想要的是以编程方式为这些内存流添加正确的头信息,而无需将它们写入物理文件。 我怎样才能做到这一点? PS:我检查了NAudio库,但只找到了一种通过将流写入真实物理文件来创建标题的方法,这不适合我的情况 。 var waveformat = new WaveFormat(8000,16,1); var reader = new RawSourceWaveStream(rawAudioMemStream, waveformat); using (var convertedStream = WaveFormatConversionStream.CreatePcmStream(reader)) { WaveFileWriter.CreateWaveFile(fileName, convertedStream); } rawAudioMemStream.Close();

我该如何重新采样wav文件

目前我正在录制具有以下规格的音频信号: 频道:1 SamplesPerSecond:8000 BitsPerSample:16 如何将此.wav文件转换为例如以下规格(首选纯c#): 频道:1 SamplesPerSecond:22050 BitsPerSample:16