-
关于如何写入已知数据流形成双声道wave文件(c#和directx),其实和语言没太大关系10
1 我接收一个连续的数据流,其中左右声道的数据包持续交替出现,同时该数据包大小一致
2 最开始我是将每次数据包按照接收到的当前总包数的奇偶性分别存储到两个wave文件当中,这样两个wave均能播放正确成功,伪代码如下:
Int32 _packNum=0;
OnReceiveDataPack(Byte[] data)
{
_packNum++;
if(_packNum%2==1)
{
//WriteDataIntoFile(fileA);
}
else
{
//WriteDataIntoFile(fileB);
}
}
wave文件格式设置
WaveFormat format = new WaveFormat();
format.FormatTag = WaveFormatTag.Pcm;//设置音频类型
format.SamplesPerSecond = 8000;//采样率
format.BitsPerSample = 16;//采样位数
format.Channels = 1;//声道
format.BlockAlign = (short)(format.Channels * (format.BitsPerSample /);//单位采样点的字节数
format.AverageBytesPerSecond = format.BlockAlign * format.SamplesPerSecond;
3 接着我又分析了下双声道下wave文件格式,将当前总包数的奇偶性判断去掉了而是直接写入到一个文件(因为我确定接收到的数据包是左右声道交替出现),仅仅把wave文件格式改成了:
format.FormatTag = WaveFormatTag.Pcm;//设置音频类型
format.SamplesPerSecond = 8000;//采样率
format.BitsPerSample = 16;//采样位数
//format.Channels = 1;//声道
format.Channels = 2; //<-------------------------其实也就变了这里而已
format.BlockAlign = (short)(format.Channels * (format.BitsPerSample /);//单位采样点的字节数
format.AverageBytesPerSecond = format.BlockAlign * format.SamplesPerSecond;
可是这种写入显然是错误的,因为这种方法形成的文件播放出来的声音显然不对。
问题1:请问熟悉这方面的人来指点一下,到底我哪里理解错了?
问题2:难道还是得判断当前总包数的奇偶性,陆续将包里面的数据写入到文件里面去,每次写八个字节包数据到文件,每次写都是间隔8个字节,比如:第一次从数据包读8个字节写八个字节到位置0,第二次继续从数据包读八个字节写八个字节到位置0+8,第三次再继续从数据包读8个字节写八个字节到位置0+2*82011年5月28日 19:42
目前还没有答案
相关推荐
`main.cpp`很可能是实现这个转换逻辑的地方,它可能包含了读取原始WAV文件,调用`wav.cpp`中的解析和转换函数,最后将单声道数据写入新文件的代码。 通过这段程序,用户可以直接编译并运行,实现对wav文件的解析和...
WAV文件双声道转单声道 C语言实现,将双声道文件转换成为单声到文件 作业
WAVE文件由文件头(header)和数据体(data)两大部分组成。文件头定义了声音文件的格式和结构,通常包括文件类型标识、格式、声道数、采样率、采样值大小等信息。数据体部分则是实际的声音数据,存储的是数字化的...
至于“output.pcm”,这是压缩包内的文件名称,很可能是一个未经压缩的PCM数据文件。这样的文件可以直接被音频播放器读取并播放,以验证播放器对PCM格式的支持和性能。 总的来说,这个压缩包文件是一个用于音频...
1. 读取音频文件,解析出双声道的数据流。 2. 如果需要,对音频数据进行解码,例如,将压缩的MP3或AAC文件转换为未压缩的PCM格式。 3. 使用MCI接口启动音频设备,并指定双声道播放模式。 4. 通过WAV API或MCI将音频...
通常,电源线会设计得较粗,而地线则应形成大面积的接地平面。 2. **信号路径最短化**:减少信号在PCB上的传播距离,能降低信号延迟和失真。 3. **元件间距**:元件之间的距离应合理,以防止相互间的电磁干扰。 4...
在C#编程环境中,录音和播放音频是常见的多媒体处理任务,尤其在开发桌面应用或游戏时,这样的功能经常被需求。下面将详细讲解C#中如何实现这些功能,并结合提供的"Recorder"项目进行分析。 首先,C#录音功能通常...
本文将深入探讨基于C#语言实现的WAVE文件录音和播放器的相关知识点。 WAVE,全称Waveform Audio File Format,是由微软和IBM联合开发的一种音频文件格式,广泛用于Windows操作系统中。它是一种无损音频格式,保存了...
4. **写入新文件**:创建一个新的WAV文件,并按照原WAV文件的格式头信息写入,然后写入交换后的数据区。注意保持文件结构的完整性和一致性。 5. **错误处理与优化**:在处理过程中,要处理可能出现的异常,如文件...
在音频文件中,双声道通常代表立体声,即包含左声道和右声道,分别代表人耳听到声音的不同方向和深度,提供更丰富的听觉体验。 在MATLAB中,我们可以使用`audioread`函数来读取双声道的音频文件。例如: ```matlab...
标题提到的"C# 录音源代码"是一个专门针对C#语言的录音实现,旨在提供高清录音解决方案。由于C#的标准库.NET Framework并没有内置丰富的音频处理功能,开发者通常需要借助第三方库或者Windows API来实现这一功能。...
Wave,全称为Waveform Audio File Format,是Microsoft和IBM共同开发的一种音频文件格式,常用于存储未压缩的数字音频数据。本篇将深入探讨wave波形实时显示的原理、实现方法以及相关工具和技术。 1. 波形显示原理...
在IT行业中,音频处理是一个重要的领域,特别是在游戏开发...同时,利用相关的库如NAudio可以简化这个过程,提供便利的API来读取、写入和处理音频数据。通过深入学习和实践,开发者可以在音频处理方面建立坚实的基础。
本来是虚拟仪器设计与应用课的大作业来着,发上来供初学者做个参考吧。 一套语音信号录制系统,即将PC机上的声卡作为音频信号采集硬件,使用者使用话筒录音,将声音信号由声卡输进计算机,然后由该系统采集音频信号...
确保在适当的时候关闭`WaveFileWriter`,以确保文件被正确地写入和关闭。 6. **错误处理和资源释放**: 在录音过程中可能会遇到各种错误,比如设备不可用或磁盘空间不足等。因此,需要对可能出现的异常进行处理。...
本文所介绍的基于MATLAB的双声道语音信号分析及处理系统,是一个能够对双声道语音信号进行分析、加噪以及使用窗函数方法进行滤波的应用程序。系统是在MATLAB环境下构建的,通过图形用户界面(GUI)向用户提供操作的...
本项目通过C语言利用系统API进行语音采集,并使用wave函数将采集到的数据实时写入WAV文件,下面我们将详细探讨这一过程中的关键知识点。 首先,**语音采集**是通过麦克风等硬件设备捕捉声音信号的过程。在计算机中...
我的另一个却是不是很好,这个直接录得原声,只有十几秒,足够了
文件扩展名: PCM文件通常具有常见的文件扩展名,如.wav(Windows的Wave文件格式)或.raw(原始PCM数据文件)。这些扩展名有助于操作系统和应用程序识别文件格式。 广泛支持: 由于其简单的无损特性,PCM文件在各种...
5.WAV文件单声道转双声道(只支持PCM,PCMA和PCMU) 6.PCM单字节双声道数据转换单声道 7.PCM双字节双声道数据转换单声道 8.WAV文件双声道转单声道(只支持PCM, 待完成PCMA和PCMU) 9.PCM单字节双声道数据分离 10.PCM...