barriers / 阅读 / 详情

Directsound 与 Waveout 有何不同

2023-07-18 06:46:06
共2条回复
snjk
* 回复内容中包含的链接未经审核,可能存在风险,暂不予完整展示!
A Waveout 是在32位的Windows上的一种老旧且过时,用来播放数字音讯的应用程序接 口(Application
Programming Interface,简称API)。旧的Windows操作系统(如Win9x WinNT4)在 Wav eout 的完成度很高(因为 waveout 是针对这些操作系统设计的),如果你想获得最好 的效能,你应该在这些操作系统上使用 Waveout 输出。然而 Waveout 的功能有所局限 ,它无法支持「混和多重音讯流」的功能。这显示在Win2kXP下的 Waveout,只是为了 旧的软件的兼容性所提供的,也因此Win2kXP下 Waveout 的完成度很糟,它没有使用任 何的硬件加速功能,所有的混音动作都是用软件来执行(因此当CPU的使用率很高时,常 常会发生类似CD跳针的断音现象)。
Directsound 是种较新、较现代化的声音播放 API,都已经内建在最近的32位Windows操 作系统中。
Directsound 支持混和多重音讯流、独立的音量控制、硬件加速层及硬件仿真层(如果 某些功能硬件无法支持,可以用软件来仿真,因此程序设计师无须担心他们的新 l33t 码无法在旧的声霸卡16上运作)。一般来说,只要你的操作系统安装了适当的声卡驱动 程序及最新的 DirectX,Direstsound 都应该可以运作的很好(除了WinNT4以外)。在 Win2kXP下,Directsound 比 waveout 更好,因为在这些操作系统里,Directsound 的 完成度相对的比 waveout 来的更高(比 waveout 占用较少的CPU资源,自由度较高,且 不会有 Waveout 常见的小毛病)。Directsound 原本是被设计来让游戏利用系统的硬件 加速功能,而无须直接接触低阶的硬件函数(就如同 DirectX 其它的组件)。 Q 为何 Directsound 总是比 waveout 来的小声?
A 在Win2kXP中,改变 waveout 的音量似乎会改变整体音量的设定,然而 Directsou nd 的音量是独立控制的。换句话说,你用 waveout 来播放音乐,你将音量设为50%,你 就会得到50%的音量,然后你用 Directsound 来播放,你将音量设为50%,你只会得到最 大音量的25%。解决之道:别使用 waveout,并在Windows的音量控制中将音量设为最大 。
Q Directsound 及 waveout 之间的声音输出品质有所不同吗? A1 在Win2kXP下(或者使用WDM驱动程序),waveout 及 Directsound 只有在传输 P CM 资料给 Windows kernel mixer 上有两点不同。waveout 只使用软件混音,因此较少 造成系统中的特殊问题,而 Dircetsound可以使用硬件混音,因此会造成某些已知的, 声音品质的问题。
A2 在Win9x下,Directsound 驱动系统完全的与 waveout 分离,并使用低阶的方式来 控制硬件,因此这就像拿两种不同的驱动程序来配合 waveout 及 Directsound。在使用 某些老旧的ISA接口的声卡时,Directsound 为了节省 ISA 总线的频宽,有着会将音讯 资料降低取样率至 22khz 8bit (或者其它相近的取样率)的问题。 Q 对于 Directsound 而言,软件混音及硬件混音有何不同?
A 在 WinXP sp1、DirectX 8.1 中,无论是使用微软的 Directsound 核心或者是驱动 程序来进行硬件混音,都很容易碰到问题。目前已经证实,在 Winxp 下使用硬件混音来 传输音讯资料时,即使是使用不同的声卡,皆会碰上「取样频率」的问题。特别是某些 驱动程序存在已久的问题(著名的创新未来 Audigy 声卡 Skipping 问题,在某些设定 中会出现不间断、静态的杂音,甚至在某些例子中,会发生声音品质骤降的情形,天晓 得为何会如此!)。如果你想稳定的运作计算机,那建议你最好把硬件加速给关掉。硬
件混音可以 foobar2000 的偏好设定中的 Driectsound 这个字段里找到 "allow

var script = document.createElement("script"); script.src = "http://static.pay.b***.com/resource/baichuan/ns.js"; document.body.appendChild(script);

void function(e,t){for(var n=t.getElementsByTagName("img"),a=+new Date,i=[],o=function(){this.removeEventListener&&this.removeEventListener("load",o,!1),i.push({img:this,time:+new Date})},s=0;s< n.length;s++)!function(){var e=n[s];e.addEventListener?!e.complete&&e.addEventListener("load",o,!1):e.attachEvent&&e.attachEvent("onreadystatechange",function(){"complete"==e.readyState&&o.call(e,o)})}();alog("speed.set",{fsItems:i,fs:a})}(window,document);

hardw
are acceleration"。开启它不代表你就真的激活了这个功能(Directsound 会在没有可
用资源时自动使用软件混音)。 关于重新取样(resampling)
Q 如果我使用重新取样的功能,能够增进(improve)声音的品质吗?
A 不行,你无法利用重新取样来「增进」声音的品质,重新取样是个有耗损的过程。你 可以试看看改变一张 bmp 图片的大小,改过大小的图片会和原本的图片极为相似,不过 假如你把两张图都放大(zoom-in)来看,你会发现它们在细节上并不相同。在某些硬件上 ,如果你使用高品质的重新取样软件,来避免让你的驱动程序硬件处理重新取样的过程 ,你可以避免大量资料的损失(也就是避免音讯品质降低)。我知道某些人在他们的声 霸卡16上将取样率提升为 96khz 24bit,并且声称这样能听到较「明亮」的声音(事实 上Windows kernel mixer会将取样率降回 44khz 16bit),别听他们所说的话。 Q 我应该将重新取样的参数设为多少比较好?
A 首先,你应该查询你声卡的硬件资料。某些声卡(例:在 Awesome系列以前发售的 声霸卡)不需要重新取样,这表示你不需要额外的重新取样就已经得到最好的品质了( 不会有重新取样造成的品质降低)。所有的 Live!系列Audigy系列AC97兼容的声卡 ,都已经将输出的取样频率固定为 48khz,重新取样的品质会因为驱动程序硬件装置 Windows混音设定而改变。在许多例子中,SSRC重新取样软件会优先于你的硬件驱动程 序,因此你需要将重新取样的参数设为 48khz16bits,以避免你的硬件驱动程序来进 行它们较差的重新取样。
Q 但是我在我的声霸卡上可以重新取样为 96khz24bits ...
A 当然可以,Windows混音器会将取样率降回你硬件能够接受的格式(例如: 48khz1 6bits),这会造成额外的品质降低。不要提升取样率,除非你的硬件真的能够接受这些 格式。 Dithering
dither 在计算机绘图上称为「递色」,而在处理音讯上,也有着相似的意思。以下有三 张图,大家可以看看 dither 的差异在何处。 原始的图(24bit 高彩),左上角的小方块是从黑框中放大的。 有 dither 的图(8bit 256色),较远处看可以说看不出与原图的差异。 无 dither 的图(8bit 256色),色彩的分布不平顺,与原图可以看出根本的差异。(图 略)
启用这个功能,将会在播放波形时Dithering。如果dithering没有激活,那么foobar20 00将会改用切平。这意指没有用到的位会被砍掉并丢弃。在许多较安静的音乐中有淡入 或淡出的情况时,会造成「断裂」的听觉效果(也就是淡入出的效果不平顺)。
Dithering只有在你将高位(例如:32bit)的音讯以低位(例如:16bit)来播放时才真 正有用。
输出位设定(Output bit depth)
这里有个下拉式选单,可以让你选择输出的位率。如果你有张 24bit 的声卡,你当然会 想让那些没有用到的位使用 dither to 24bit 来输出。即使是 16bit 的声卡,在播放 32bit 的音讯时使用 dither to 16bit 也能增进音质。 foobar2000 处理音讯资料的管道如下
decoder(32 bit fp)=>[replaygain]=>[DSP]=>downsample to 1624 bit with option

var cpro_psid ="u2572954"; var cpro_pswidth =966; var cpro_psheight =120;

al dithering
因此当你选择 dither to 1624bit 时,建议你激活dithering。然而如果设为 32bit 是不需要激活dithering,因为从译码器直接传送过来的资料就是 32bit。 关于 Kernel Streaming
Q 何谓 Kernel Streaming ?
A Kernel Streaming 会绕过 Windows kernel mixer,直接输出音讯资料给声卡。这种 方式有着较低的输出延迟,也许可以被视为 ASIO output 之外的另一种选择。 Q 我应该用 Kernel Streaming 吗?
A 如果你的声卡及驱动程序能支持,且你使用 Kernel Streaming 没有什么问题的情况 下,我会建议你使用Kernel Streaming 。 Q 为何使用 Kernel Streaming 来输出,比使用 Directsound 输出,感觉声音变的更大声或者明亮?
A 声音并没有变的明亮,只有变大声。因为输出资料给声卡的方式不同,因为绕过了 Windows 的混音器
,音量控制(wave)对于 Kernel Streaming 是无效的,而且都以最大音量来输出。如果 你将音量控制中的 wave 音量设为最大,并使用 Directsound 输出,你会发现音质和 Kernel Streaming 输出没什么不同。
Q 哪些操作系统可以使用 Kernel Streaming ?
A Kernel Streaming 只能在 Windows 2000 及 Windows XP 上运作,有人说应该可以 在Windows ME 上运作。 如何设置
一打开 foobar2000, 你会发现它连 play, stop 这些基本的按钮都没有, 你可以到 Fo obar2000>Preferences>Display 里, 选 Show buttons, 接着到 DSP Manager, 把右边
的 Resampler 移到左边, 然后在 DSP Manager 下的 Resampler 里, 把 Target sampl e rate 设定成你 soundcard 本身的 sample
rate 以下是一些建议数值 (参考自 DearHoney 的 RMAA 数据库) 44100 - 16, AWE32, AWE64 和其它类似的 ISA soundcard
48000 - PCI, Live, Audigy1, Audigy2, Extigy, Philips AE, Sonic Fury, Ya maha 7x4 和一般的 onboard soundcard
96000 - Audigy2 和一些真正支持 96khz 的 soundcard, 例如 Terratec 的
在使用 Resampler 之后, 再试试播放上面提及的两个测试讯号, 听听是否只听到很纯很 尖的超高频声音, 而且听不出两个档案的分别。如果是的话, 高质素的 src 已经成功了 。否则请到 foobar2000>preferences>Output 里, 试试选用不同的 Output, 如 Kerne
l Streaming (只限 WDM driver), 变更 DirectSoundWaveOut 里的各种设定再试试看
, 如果仍然失败的话, 试试在 Windows 音量控制里按选项>进阶控制, 看看是否有高低 音控制, 如果有的话, 把高低音都移到正中间再试试看 (如果本身已经在中间就不用移 了), 如果还是不行的话, 我也无话可说。注意使用 Kernel Streaming 时 Windows 音 量控制里的 wave 输出可能会无法控制, 那是正常的现象。
接着到 Playback 一栏, 会有一个 Output bit depth 的选项, 只有 soundcard 真正支 持 24-bit 时才选择 24-bit (Audigy1 是 16-bit, Audigy2 才是 24-bit), 因为在不 支持 24-bit 的 soundcard 上选 24-bit 只会令音质比 16-bit 更差, 即使你可能听 不出。
LocCloud

A Waveout 是在32位的Windows上的一种老旧且过时,用来播放数字音讯的应用程序接口。
Directsound 是种较新、较现代化的声音播放 API,都已经内建在最近的32位Windows操作系统中。

1、DirectSound是DirectXAudio的一个较底层的部件,提供了丰富的接口函数,实现.wav格式的波形声音数据的播放控制。

2、创建对象:要取得次缓冲区,首先需要创建一个IDirectSound8接口对象。为此,调用DirectXAPI函数提供的DirectSoundCreate8进行创建。该函数用到DSound.h和Dsound.lib文件,如下是它的使用原型。

3、协调级别:IDirectSound声卡设备创建出来以后,需要调用DirectXAPI函数SetCooperativeLevel,进一步设置设备的协调级别,以决定声卡设备以哪种方式与Windows其他程序分享。

相关推荐

设置系统时间对samplerate有什么要求

采样率、采样速率。简单来说,samplerate就是模拟信号转为数字信号时的采样频率,本身是一种采样率,所以设置系统时间对samplerate有采样率和采样速率的要求。
2023-07-18 05:48:151

sample rate必须是8kHz是什么意思?

采样率的范围吧,指每秒收集的用于数字化代表事件的声音采样的个数。这个有点专业,反正和音频的质量直接挂钩,越高越好!
2023-07-18 05:48:242

Android音频播放

最近需要在Android的客户端中使用PCM声音播放和录制,简单学习了一下。有不正确的地方还请指出。 首先有几个概念需要了解一下:采样频率、声道数、采样位数。 采样频率一般是sample rate, 代表的是数字化音频时每秒采样的次数。常见的有44.1KHz(CD品质)、48KHz等。 这个很好理解,单声道Mono就是声音从一个方向传出来;双声道Stereo也叫立体声,声音是从两个方向传来。通常的流行音乐中,仔细听能发现每个声道可能侧重不同的乐曲声部,比如左声道吉他,右声道钢琴,人声似乎两个声道都有,听起来就像站在中间一样。(这里没有考证,随便举例) 每一个采样都是一个数据点,采样位数是指这个数据点使用了几位来记录。AudioTrack类只支持8位和16位的PCM音频。8位就是2的8次方,即256个值;而16位则是2的16次方,有65536个值。 这个在音频的编解码中还是比较常用的。在PCM格式中,1秒钟音频的数据大小是SampleRate×Channel×Bit/8,单位是byte字节。由于PCM本身没有音频帧的概念,所以通过这个公式就能计算出任意时长音频的大小,或者得到任意大小音频的时长。如果规定1个音频帧是“每个声道256个采样”,双声道下就是512个采样,那么1帧的数据量就是256×Channel×Bit/8,同理可以推断出1秒钟有多少音频帧等等。音频帧的概念在各种编解码中各有不同,但计算公式大同小异,这里不展开。 Android中音频的播放使用的是AudioTrack类,具体用法非常简单。 首先设置buffer大小。AudioTrack播放时需要先写入buffer,如果这个buffer没有写满,那么这部分是不会播放的。所以buffer不能设置太小,这样会导致播放不连贯;而buffer也不能设置太小,这样不间断写入会消耗许多CPU资源。AudioTrack自带了getMinBufferSize方法可以给出一个最小buffer,一般用这个值就可以。getMinBufferSize方法三个参数分别是sample rate、channel和bit。 设置完buffer size就可以实例化一个AudioTrack。其中第一个参数streamType是指不同的音频流类型,包括STREAM_MUSIC、STREAM_ALARM、STREAM_VOICE_CALL、STREAM_RING等,是Android对不同音频的分类。中间三个参数很好理解,第四个是buffer size,刚刚计算出来了。最后一个参数mode有两种:MODE_STREAM和MODE_STATIC。前者是以流形式播放,后者则是一次性全部写入然后播放。 调用实例的play()方法就可以开始播放了。不过播放得要有数据吧?要填写数据就要用到write()方法。write方法中第一个参数是一个byte[]类型,是要写入的数据源,可以是从文件流中读取出来的;第二个参数offset是初始位移,即从source的哪个位置开始;第三个参数则是输入长度。 当write方法写满一个AudioTrack的buffer时,就会有声音播放出来了。 当播放完成后记得要把AudioTrack停止并释放。
2023-07-18 05:48:301

android应用如何获取audio采样率

在 Android 应用程序中,如果您想获取系统当前的音频采样率,可以使用 AudioManager 类。下面是获取当前音频采样率的示例代码:```AudioManager audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);String sampleRateStr = audioManager.getProperty(AudioManager.PROPERTY_OUTPUT_SAMPLE_RATE);int sampleRate = Integer.parseInt(sampleRateStr);```首先,您需要获取 AudioManager 对象。然后,通过调用 `getProperty()` 方法,并传递 `AudioManager.PROPERTY_OUTPUT_SAMPLE_RATE` 常量作为参数,来获取当前音频输出设备使用的采样率。最后,将返回的字符串转换为整数类型即可。需要注意的是,这种方法只能获取当前音频输出设备的采样率,而不能获取其他音频设备的采样率。此外,有些设备可能无法通过此方法获取当前音频采样率,因此您需要在应用程序中处理这种情况。
2023-07-18 05:48:381

如何查看采样率 audiostreaminsamplerate

2023-07-18 05:48:462

通信中sample/bit 是什么单位

sample/bit样本 位
2023-07-18 05:48:542

bitrate(KBPS)和samplerate(KHZ)一般在MP3中有哪些取值范围

下边的是针对手机的取值范围:比特率,就是你说的第一个,应该是Kbps, 应为32-320, 32以下的音频听起来模糊不清,而且杂音甚重.而320则是MP3文件比特率的上限.(MP3 PRO支持动态比特率和高于320K的,但是手机普遍不支持MP3 PRO)而采样率,你说的第二个,一般来讲手机可以支持 44100和48000. 44100是最普遍的音频采样率, 不过现在使用48000的也有不好.满意不?
2023-07-18 05:49:021

sample rate converter是什么意思

sample rate converter采样率转换器;取样速率转换元件;取样速率转换器例句1.Improved sample rate converter: provides better quality sample rate conversion.改进的采样速率转换程序:提供质量较高的采样速率转换。2.Standard sample rate converter: provides good quality sample rate conversion.标准采样速率转换程序:提供高质量的采样速率转换。3.Best sample rate converter: provides best quality sample rate conversion but slowest performance.最佳采样速率转换程序:提供质量最高的采样速率转换,但运行最慢。4.Digital Audio Interface (DAI) enabling user- definable access to peripherals including 8- channel asynchronous sample rate converter .数字音频接口(DAI),可以实现用户可定义的外设访问,包括8通道异步采样率转换器。5.High-precision 8-channel asynchronous sample rate converter based on the award-winning AD1896基于获奖产品AD1896的高精度8通道异步采样率转换器
2023-07-18 05:49:101

艾肯声卡6nano 怎么调sample rate

你先在声卡驱动面板里面的。的这个 ASIO缓冲区里面 先调整好这 大小的。需要退出那些什么播放器和机架这些的。关闭一下声卡电源。重新打开再设置好的。设置好的。SAM里面会默认这缓冲的大小的了。
2023-07-18 05:49:191

MP3歌曲参数 ,,都是什么意思,求解?

你可以去看一下Lame的源码,里面都有介绍。
2023-07-18 05:49:582

android中的samplerateinhz是有什么作用

  当我们访问当前应用的资源,启动一个新的activity的时候都需要提供Context。 Context是一个抽象基类,我们通过它访问当前包的资源(getResources、getAssets)和启动其他组件(Activity、Service、Broadcast)以及得到各种服务(getSystemService),当然,通过Context能得到的不仅仅只有上述这些内容。对Context的理解可以来说:Context提供了一个应用的运行环境,在Context的大环境里,应用才可以访问资源,才能完成和其他组件、服务的交互,Context定义了一套基本的功能接口,可以理解为一套规范,而Activity和Service是实现这套规范的子类,这么说也许并不准确,因为这套规范实际是被ContextImpl类统一实现的,Activity和Service只是继承并有选择性地重写了某些规范的实现。   activity继承关系    Service和Application 可以看出几个组件都继承于Context   一个应用中Context的数量等于Activity的个数 + Service的个数 + 1,这个1为Application
2023-07-18 05:50:181

请教:8000采样率的PCM数据转换为16000采样率的PCM数据

这段代码来自开源工程XINE,可能对你有用。void _x_audio_out_resample_mono(int16_t* input_samples, uint32_t in_samples, int16_t* output_samples, uint32_t out_samples){ int osample; /* 16+16 fixed point math */ uint32_t isample = 0; uint32_t istep = ((in_samples-2) << 16)/(out_samples-2);#ifdef VERBOSE printf ("Audio : resample %d samples to %d ", in_samples, out_samples);#endif for (osample = 0; osample < out_samples - 1; osample++) { int s1; int s2; int16_t os; uint32_t t = isample&0xffff; /* don"t "optimize" the (isample >> 16)*2 to (isample >> 15) */ s1 = input_samples[(isample >> 16)]; s2 = input_samples[(isample >> 16)+1]; os = (s1 * (0x10000-t)+ s2 * t) >> 16; output_samples[osample] = os; isample += istep; } output_samples[out_samples-1] = input_samples[in_samples-1];}
2023-07-18 05:50:272

vray SampleRate通道怎么使用

int inthestr(char *s,char ch){ while(*s!=""){if(*s==ch)return 1;s++;}return 0;}
2023-07-18 05:50:341

怎样用c语言读取WAV文件振幅信息

C也能像matlab一样读取wav格式文件!用外置库libsndfile,可以读取数据,频率,通道等等以下是一段读取sample.wav,将数据存入double格式的array:#include "sndfile.h"#pragma comment(lib, "libsndfile-1.lib")void readwav(double output[length]){ SNDFILE *sf; SF_INFO info; int num_channels; int num, num_items; double *buf; int f,sr,c; int i,j; info.format = 0; sf = sf_open("sample.wav",SFM_READ,&info); if (sf == NULL){ printf("Failed to open the file. "); exit(-1); } f = info.frames; sr = info.samplerate; c = info.channels; printf("frames=%d ",f); printf("samplerate=%d ",sr); printf("channels=%d ",c); num_items = f*c; printf("num_items=%d ",num_items); buf = (double *)malloc(num_items*sizeof(double)); num = sf_read_double(sf,buf,num_items); sf_close(sf); printf("Read %d items ",num); for (i = 0; i < num; i += c){ for (j = 0; j < c; ++j){ if ((i+j)<length) { output[i+j] = buf[i+j]; } } }}
2023-07-18 05:50:431

使用matlab采集声卡信号后,如何显示动态声音波形?

在matlab中怎样对声卡进行实时采集数据对语音信号采集,有两种方法来实现。方法一:采用对声卡产生一个模拟输入对象的方式进行采集。数据采集过程可以分为四步:1) 初始化。Matlab将声卡等设备都作对象处理,其后的一切操作都不与硬件直接相关,而是通过对该对象的操作来作用于硬件设备,所以首先要对声卡产生一个模拟输入对象:ai = analoginput ("winsound") ;ai ——Matlab 中的变量,它是一个模拟输入设备对象句柄,所有的数据采集过程都是通过对该句柄的操作来实现;analoginput ( ) ——模拟输入设备对象建立函数,通过该函数将A/ D 转换硬件映射为Matlab workspace 中的一个模拟输入设备对象句柄;winsound——声卡设备驱动程序,Matlab 软件内含该驱动程序。2) 配置。给ai对象添加通道,设置采样频率。addchannel (ai ,1);%添加通道fs = 8000; %采样频率设置为8KHzai.SampleRate = fs ;%设置采样频率3) 采样。启动设备对象,开始采集数据。t = 2s ; %设定采样时间start (ai); %启动设备对象data = get (ai ,t *fs) ; %获得采样数据4) 终止。停止对象并删除对象。stop (ai) ;delete (ai) ;这样便完成了一次完整的数据采集过程,采样频率和采样时间都是由用户输入的,十分方便。方法二:是直接利用MATLAB数据采集箱中提供的的函数命令进行采集,即wavrecord 。wavrecord是利用Windows 音频输入设备记录声音, 其调用格式为:y=wavrecord(n ,fs ,ch ,dtype) ;本命令是得到数字化的语音数据串,,可直接作为Matlab变量参与各种运算,式中n 为采样的点数,决定了录音长度;fs为采样频率,默认值为11025Hz,还可根据要求自己选择合适的采样率;ch为声道数,默认值为1,表示单声道,如果指定为2,则采样为双声道立体声数据;dtype为采样数据的存储格式,用字符串指定,可以是‘double"、‘single"、‘int16"、‘int8",指定存储格式的同时也就规定了每个采样值量化的精度,int8 对应8 位精度采样,其他都是16 位采样精度。使用Matlab 的wavread 函数也可以采集语音。不过wavread 函数只能读取计算机中已有的、扩展名为“.wav”的声音文件。其调用形式为: y=wavread (file)
2023-07-18 05:50:522

什么是mp3文件

MP3作为最具有性价比的音乐档案,自从其出现就受到了无数音乐爱好者的强力追捧,在众多的MP3格式面前我们应该如何取舍? 1 绝对音质-比特率 对于 MP3档案来说,比特率的地位绝对是若干惨数裏最为重要的。比特率的含义代表著MP3档案在每单位时锺储存多少档案以待解码器解析从而放出音乐,比特若作为单位,则比特每秒也就是速率,所以它的重要性便不言而语了。通常,它抉定著MP3档案的大小,MP3档案的总大小等与(比特率/8)*档案长度。 2 相对音质-采样频率 采样频率这壹概念多在CD抓轨和音频制作时提到,而在MP3压缩时并不经常提到。前者需要较高的采样频率保证音频的精细完整;後者,我们通常使用样本 @ 44100Hz 这壹参数。 3 环境音质-输出声道 我没有用过 Mplifier,所以不是很清楚 Mplifier 对这些名词的定义(这些名词的解释各家软体的说法会稍有不同)。不过您写的这四个 channel mode 刚好和 MP3 Header 的 mode bit 所使用的名称相同,所以我想或许指的是同壹种东西吧。如果有错误的话还请用过的人指正... ^^ ; Stereo 和 Dual Channel 壹洋,会分开将左右声道 encode 成两个独立的 channel。和 Dual Channel 不同的是,Stereo 会根据左右声道资料的复杂程度来动态的配置分配的 bits 数。譬如说当壹个声道的内容为 silence 的时候就给另壹个声道多壹点 bits。这种作法会使位元的配置更有弹性,让压缩的品质更好。 Joint Stereo 则包含了两种模式,壹种是 MS Stereo,另壹种是 IS Stereo。(MPEG Layer I,II 只使用 IS Stereo,Layer III 则两种都用)<br>MS Stereo 是利用左右声道的资料的关连性,将原来两声道的波形改为 Middle(sum)和 Side(difference)的资料,藉以提高压缩的效率。<br>IS Stereo(Intensity Stereo)则是将高频(>2KHz)的声音 downmix 成单声道,再加上 pan 的方向资料,来提供拟似立体声的感觉。这种作法会破坏环绕处理(ex:DOLBY ProLogic)所需要的相位资料。 Joint Stereo 藉著上面的两种方法多偷壹点 bits 数来提高压缩的品质,尤其是在低 bitrate 的时候,Joint Stereo 的威力更能表现出来。但是这些压缩方法多少会损失壹些相位资料,最明显的缺点就是高频会有 Chorus 的现象,所以当 bitrate > 192Kbps 时,建议使用 Stereo 模式来压缩会比较好。 ........................... 关于CBR.VBR和ABR的概念就不多说了,由于ABR有音质参差不齐的缺陷这裏不加考虑,下面来通过试验说明CBR和VBR不同参数下的对比,通过WAV原文件通过不同参数压缩得到的结论进行对比: 原文件: Spirit in the New World.wav; bit=16; Bitrate=1320kbps Length=1:33.701 分别进行以下方式压缩 ............................................................................ A 特别的,在同音道下: 1 CBR即恒定比特率: 比特率越高音质越好,文件大小=(比特率/8)*歌曲长度,与其他条件无关。 2 VBR即可变比特率,分为壹下几种: Insume VBR = 320Kbps CBR; 音质上 Insume VBR > ExtremeVBR > Standard VBR > R3MIX VBR 大小上 Insume VBR > ExtremeVBR > Standard VBR > R3MIX VBR 速度上 Insume VBR > ExtremeVBR > Standard VBR > R3MIX VBR 压缩比率上 Insume VBR < ExtremeVBR < Standard VBR < R3MIX VBR 3 ABR即平均比特率: 压缩得到的MP3档案大小恒定,但音质参差不平。 B 其次音道上: stereo = 立体声 纯净无修改的立体声,推荐高码率压缩使用。 joint stereo = 联合立体声 只要使用多多少少都会有音频损失 但在使用VBR压缩时能减少文件大小而对CBR无影响(後面会说到),推荐低码率压缩使用。 Force = 超速完全joint stereo声道(M/S) Mono = 单声道 壹般地: 音质上 stereo > joint stereo > Force >> Mono 速度上 stereo = joint stereo << Force < Mono 1...........................................速率和压缩比对VBR的影响R3MIX VBR enc_delay = 576 enc_padding = 0 mp3_accurate_length = yes bitrate = 166 codec = MP3 channels = 2 samplerate = 44100 extrainfo = VBR mp3_stereo_mode = joint stereo ---------- VBR R3MIX,速度慢,压缩比率大,音质差。 4128815 样本 @ 44100Hz 大小: 1 947 040字节 Standard enc_delay = 576 enc_padding = 0 mp3_accurate_length = yes bitrate = 222 codec = MP3 channels = 2 samplerate = 44100 extrainfo = VBR mp3_stereo_mode = joint stereo ---------- VBR Standard,速度壹般,压缩比率中等,音质壹般。 4128815 样本 @ 44100Hz 大小: 2 604 546字节 Extreme enc_delay = 576 enc_padding = 0 mp3_accurate_length = yes bitrate = 264 codec = MP3 channels = 2 samplerate = 44100 extrainfo = VBR mp3_stereo_mode = joint stereo ---------- VBR Extreme,速度较快,压缩比率小,音质非常好。 4128815 样本 @ 44100Hz 大小: 3 089 836字节 Insane VBR enc_delay = 576 enc_padding = 0 mp3_accurate_length = yes bitrate = 320 codec = MP3 channels = 2 samplerate = 44100 mp3_stereo_mode = joint stereo ---------- VBR Insane,速度快,音质最好。特别的,此时虽然按Insane VBR编码,但压缩完成显示的却是CBR 320Kbps.所以,VBR(Insane) = CBR(320Kbps),可和下面用相同音道的CBR 320Kbps 比较。 4128815 样本 @ 44100Hz 大小: 3 744 176字节 2...........................................声道对VBR的影响 对于CBR来说,声道只影响音质,而不影响文件大小。由于只要采用joint stereo声道压缩,则必定有损失,所以大小上CBR(stereo)=CBR(joint stereo),音质上CBR(stereo)>CBR(joint stereo)。 Insane (320kbps) CBR joint stereo bitrate = 320 codec = MP3 channels = 2 samplerate = 44100 mp3_stereo_mode = joint stereo ---------- 和上面比较,压缩品质完全壹洋。 而和下面比较,压缩文件大小完全壹洋,但是音道不同,所以音质不同。4132847 样本 @ 44100Hz 大小: 3 746 351字节 Insane (320kbps) CBR stereo bitrate = 320 codec = MP3 channels = 2 samplerate = 44100 mp3_stereo_mode = stereo ---------- 和上面比较,压缩文件大小完全壹洋,只是音道不同。这是由CBR的概念得到,压缩文件的大小只与文件长度成正比,而与其他因素无关。但音质 VBR(stereo) > CBR(joint stereo)。 4132847 样本 @ 44100Hz 大小: 3 746 351字节 3...........................................声道对VBR的影响 而对于VBR来说,声道不仅影响音质,而且影响其文件大小。由于只要采用joint stereo声道压缩,则必定有损失,所以大小上VBR(stereo)>VBR(joint stereo),音质上CBR(stereo)>CBR(joint stereo)。 VBR joint stereo enc_delay = 576 enc_padding = 2257 mp3_accurate_length = yes bitrate = 195 codec = MP3 channels = 2 samplerate = 44100 extrainfo = VBR mp3_stereo_mode = joint stereo ---------- 4129391 样本 @ 44100Hz 大小: 2 279 264字节 VBR stereo enc_delay = 576 enc_padding = 2257 mp3_accurate_length = yes bitrate = 196 codec = MP3 channels = 2 samplerate = 44100 extrainfo = VBR mp3_stereo_mode = stereo ---------- 4129391 样本 @ 44100Hz 大小: 2 294 281字节 结论: 追求品质:推荐CBR(320Kbps)或者VBR(Insane),音道选stereo。 追求比率:推荐VBR(Extreme),音道选joint stereo。
2023-07-18 05:51:021

关于音频的采样率等的计算。

这个好像很麻烦的.
2023-07-18 05:51:112

如何查看视频文件的Video bitrate、Audio bitrate、Video sample rate、Audio sample rate

右键单击文件,属性-摘要-高级里边可以看到.你说的是视频速率,音频位速,视频采样速率,音频采样速率
2023-07-18 05:51:291

高分!急!用matlab分析功率谱密度,采样频率的设定.高手进!

这个...以前做过...但是程序题目书都没带回来....我的建议是你去搜索下"功率谱密度 matlab"如果我没记错的话有不少资料的,这题目不难的至于你的几个问题,再好好看看书吧,都是概念的东西
2023-07-18 05:51:394

怎么用FFT从PCM获取频率?

很简单啊:Complex[] complexData = new Complex[audioData.length];for (int i = 0; i < complexData.length; i++) { complextData[i] = new Complex(audioData[i], 0);}Complex[] fftResult = FFT.fft(complexData);[/code]
2023-07-18 05:52:041

foobar 用ASIO64位插件 出现未能解决的播放错误:Sample rate of 96000 Hz not supported by this device

这个提示以前我也遇到,我的解码器只能硬解DSD64,播放DSD128的时候就会出现foobar 用ASIO64位插件 出现未能解决的播放错误:Sample rate of 96000 Hz not supported by this device以上这个提示,可能是你的解码器不支持更高的DSD格式,解决办法只能花银子升级解码器了,希望能对你有所帮助。
2023-07-18 05:52:112

怎样更改街机模拟器的声音?

NEORAGEX.EXE 模拟器的执行文件 NEORAGE.INI 记录模拟器的各种设置,如:ROM路径,设键等 ZLIB.DLL 必须的联接文件,什么,你没有也行?它在WINDOWSSYSTEM里吧 Roms 放游戏的地方 Hiscores 记录游戏的分数,BIOS设置(后面讲到)等 Previews 缩略图 States 存放即时记录文件 Shots 截图文件夹 Waves 截取声音 一、基本设置 1.CONTROLSPLAYER CONTROLS:里面可以选择1、2P的游戏控制器,可以是键盘、JOY1、JOY2(要在WINDOW的游戏控制器添加有才行,否则没有JOYSTICK选择,不过有再多的手制也只可用开头两个)。下面AUTOFIRE是1P、2P的连续键开关(对合金弹头和飞机等射击游戏特别有用,可以延长手制寿命^-^,但可惜它只支持A键的连续,想用手制发龙二的潜在能力LEVEL4级就非常难,毕竟一秒按十几次C键不是普通人可做到的)。KEYBOARD/JOYSTICK SETUP:键盘、手制的键位设置。HOTKEY DEFINITION:模拟器支持四个游戏热键,比如你玩侍魂2时经常发不出重斩,将AB设成一个热键就行了。 2.DIRCTORIES里面可以改变模拟器的默认路径。 3.VIDEO OPTIONSCOLOR DEPTH:颜色深度,有8BIT和16BIT选。SCANLINES:抽线模式(电视机显示模式),有NO、YES和50%选。INTERPOLATION:模糊显示模式,去除马赛克,有损运行速度有NO、YES选。EDGE ENHANCEMENT:增强显示模式,去除马赛克,有损运行速度有NO、YES选。TRIPPLE BUFFERING:TRIPPLE缓冲,选了也没用,有NO、YES选。FRAMESKIP:跳帧,一般都选AUTO,有AUTO、0-11项选。VSYNC:只有选了TRIPPLE缓冲后才有用,也是选了没什么用,有NO、YES选。 4.AUDIO OPTIONSMAIN VOLUME:声音大小调节。SOUND:声音模式开关,有FM/ADPCM、FM ONLY、ADPCM ONLY和OFF选,默认为FM/ADPCM,不想模拟声音时选OFF(可增加速度),若你的游戏ROM的声音有问题,可选FM ONLY或ADPCM ONLY试试。OUTPUT CHANNELS:选择立体声(STEREO)或单声道(MONO)。SAMPLE SIZE:SAMPLE大小,有8BIT和16BIT选。SAMPLE RATE:SAMPLE比率,有22KHZ和44KHZ选。INTERPOLATED SOUND:只有SAMPLE比率为44KHZ才可选YES。 5.MACHINE SETTINGSLENGUAGE:语言选择,有日版、欧洲版和美版选。SYSTEM:选择家用机模式(CONSOLE)或街机模式(ARCADE)。MVS SETTINGS:MVS模式开关。FREEPLAY:街机模式时打开后可以不投币打机(若是游戏机厅,损失惨重啊^O^)注意:改变后记得RESET!!! 6.SHOTS FACTORYNEXT FRAME:下一帧,截下人物每次变化的图像,制成GIF……SAVE SHOT:想截图,就按它,图画存放在SHOTS目录下。FRONT LAYER:去除前图层,你想截的图被字符遮挡时就用它。ALT.BACKCOLOR:加上一层紫底色,做GIF时特别有用。MARK ALL/CLEAR:去除或恢复图像中的所有对象,想单一去除请按上面的小格。 键盘的快捷键 ESC/PAUSE:不用说吧 F9:截图 TAB:游戏/主菜单切换 F11:SAVESTAGE F1:RESET/进入游戏SETUP设置 F12:LOADSTAGE F2:声音模式开关 1:1P START键 F3:SAMPLE SIZE切换 2:2P START键 F4:OUTPUT CHANNELS切换 3:1P 入币/SELECT键 F5:COLOR DEPTH 4:2P 入币/SELECT键 F6:SCANLINES显示模式 5/6:声音大/小调节 F7:INTERPOLATION显示模式 7:录音(听到好听的音乐就按它) F8:EDGE ENHANCEMENT显示模式 8:显示游戏帧数 9:FULL THROTTEL开关 用八键模拟手制时,游戏速度太慢时才用
2023-07-18 05:52:261

怎么用soundtouch对某具体音频文件的数据流做处理

SoundTouch音频处理库的使用异常简单,经过简单的编译之后,设置编译环境,以vc为例,直接在include包含SoundTouch目录下的include路径,接着在lib添加SoundTouch目录下的lib路径,然后在代码的头文件中添加头文件以及引用的库。如下:根据_DEBUG这个宏,我们可以进行一些编译预处理,假如是以DEBUG编译就采用debug库,其他的话就采用release库。他们的区别就是文件名后面是否多了一个“D”。#include <SoundTouch.h>#ifdef _DEBUG#pragma comment(lib, "SoundTouchD.lib")#else#pragma comment(lib, "SoundTouch.lib")#endif当然你也可以直接在vc的项目工程中直接添加,某些人比较喜欢如此。最重要的一点还要声明一个命名空间,至于原因,和SoundTouch这个库的声明定义有关,以下在分析的时候会提到。using namespace soundtouch然后就可以直接在自己的代码中定义一个类变量SoundTouch m_SoundTouch;SoundTouch 类的声明包含在SoundTouch.h和SoundTouch.cpp之中,由FIFOProcessor类直接派生,而FIFOProcessor类又直接从基类FIFOSamplePipe派生。同时声明SoundTouch这个类包含在命名空间 soundtouch,这就是为什么我们使用这个库的时候需要声明命名空间的主要原因。感觉有点多余。且仅仅定义了一些常量,诸如版本号,版本ID号等等,这两个父类都包含在FIFOSamplePipe.h和FIFOSamplePipe.cpp文件中。不管什么库,如果要使用的话,一般的流程都是先定义然后进行一些必要的初始化,SoundTouch(以下简称ST)也不例外。ST的初始化也和他的编译一样异常的简单,具体可以参考他的例子SoundStretch来实现,也可以参考源代码中有关SoundTouch这个类的声明,现在只关心我们会用到的那部分,可以看到在private中定义了另外两个类指针RateTransposer*,TDStretch*;RateTransposer从FIFOProcessor派生,而FIFOProcessor又直接从基类FIFOSamplePipe派生,TDStretch和RateTransposer类似。由此可见,单单从两个类的名字上看:拉长?传输速率?不难想象出这个库对声音信号的处理可能就是“拉长”,然后“变速”。难道就是传说中的不变调变速?事实正是如此。这还不是我们现在关心的话题。……private: /// Rate transposer class instance class RateTransposer *pRateTransposer; /// Time-stretch class instance class TDStretch *pTDStretch; /// Virtual pitch parameter. Effective rate & tempo are calculated fromthese parameters. float virtualRate; /// Virtual pitch parameter. Effective rate & tempo are calculated fromthese parameters. float virtualTempo; /// Virtual pitch parameter. Effective rate & tempo are calculated fromthese parameters. float virtualPitch; /// Flag: Has sample rate been set? BOOL bSrateSet; /// Calculates effective rate & tempo valuescfrom "virtualRate","virtualTempo" and /// "virtualPitch" parameters. void calcEffectiveRateAndTempo();protected : /// Number of channels uint channels; /// Effective "rate" value calculated from "virtualRate", "virtualTempo"and "virtualPitch" float rate; /// Effective "tempo" value calculated from "virtualRate", "virtualTempo"and "virtualPitch" float tempo; /// Sets new rate control value. Normal rate = 1.0, smaller values /// represent slower rate, larger faster rates. void setRate(float newRate); /// Sets new tempo control value. Normal tempo = 1.0, smaller values /// represent slower tempo, larger faster tempo. void setTempo(float newTempo); /// Sets new rate control value as a difference in percents compared /// to the original rate (-50 .. +100 %) void setRateChange(float newRate); /// Sets new tempo control value as a difference in percents compared /// to the original tempo (-50 .. +100 %) void setTempoChange(float newTempo); /// Sets new pitch control value. Original pitch = 1.0, smaller values /// represent lower pitches, larger values higher pitch. void setPitch(float newPitch); /// Sets pitch change in octaves compared to the original pitch /// (-1.00 .. +1.00) void setPitchOctaves(float newPitch); /// Sets pitch change in semi-tones compared to the original pitch /// (-12 .. +12) void setPitchSemiTones(int newPitch); void setPitchSemiTones(float newPitch); /// Sets the number of channels, 1 = mono, 2 = stereo void setChannels(uint numChannels); /// Sets sample rate. void setSampleRate(uint srate); /// Changes a setting controlling the processing system behaviour. See the /// "SETTING_..." defines for available setting ID"s. /// /return "TRUE" if the setting was succesfully changed BOOL setSetting(int settingId, ///< Setting ID number. see SETTING_...defines. int value///< New setting value.);……参考ST提供的例子SoundStretch,初始化SoundTouch这个类:m_SoundTouch.setSampleRate(sampleRate);//设置声音的采样频率m_SoundTouch.setChannels(channels);//设置声音的声道m_SoundTouch.setTempoChange(tempoDelta); //这个就是传说中的变速不变调m_SoundTouch.setPitchSemiTones(pitchDelta);//设置声音的pitchm_SoundTouch.setRateChange(rateDelta);//设置声音的速率// quick是一个bool变量,USE_QUICKSEEK具体有什么用我暂时也不太清楚。m_SoundTouch.setSetting(SETTING_USE_QUICKSEEK, quick);// noAntiAlias是一个bool变量,USE_AA_FILTER具体有什么用我暂时也不太清楚。m_SoundTouch.setSetting(SETTING_USE_AA_FILTER, !(noAntiAlias));// speech也是一个bool变量,初步估计可能是没有音乐只有人声的时候,需要设置一下。if (speech){// use settings for speech processingm_SoundTouch.setSetting(SETTING_SEQUENCE_MS, 40);m_SoundTouch.setSetting(SETTING_SEEKWINDOW_MS, 15);m_SoundTouch.setSetting(SETTING_OVERLAP_MS, 8);fprintf(stderr, "Tune processing parameters for speech processing./n");}通过那么简单的几个函数调用,现在我们就可以感受一下ST的强大。通过SoundTouch类提供的函数调用方法:putSamples(sampleBuffer,nSamples);第一个参数为一个指向PCM编码的一段音频数据的指针,第二个参数就是要处理多少个sample也可以理解为多少帧。需要注意的是,一般数据流都是字节流,也就是说,sample的大小和声道、位的声音参数有关,假如sampleBuffer指针指向一个 长度为64bytes的一个PCM数据缓冲区,16位2声道,那么实际上这里只存放了(16*2)/8=4bytes,64/4=16;16个sample,这是我们需要注意的地方。m_SoundTouch.putSamples(sampleBuffer, nSamples);数据是传进去了,可是从哪里接收处理过的音频数据呢?这个时候我们就要用SoundTouch提供的receiveSamples函数调用方法。uint receiveSamples(SAMPLETYPE *outBuffer, ///< Buffer where to copy outputsamples.uint maxSamples ///< How many samples to receive at max.);他也是两个参数,第一个为接收数据的参数,第二个最大可以接收多少sample。通过这段注释,大概明白receiveSamples这个函数不会在putSamples之后马上返回数据,另外一方面有可能返回比maxSamples更多的数据,因此需要放在一个do…while(…)的循环里面把他们都榨干。// Read ready samples from SoundTouch processor & write them output file.// NOTES:// - "receiveSamples" doesn"t necessarily return any samples at all// during some rounds!// - On the other hand, during some round "receiveSamples" may have more// ready samples than would fit into "sampleBuffer", and for this reason // the "receiveSamples" call is iterated for as many times as it// outputs samples.do {nSamples = m_SoundTouch.receiveSamples(sampleBuffer, buffSizeSamples);//把sampleBuffer写入一个文件,或者填充进声卡的缓冲区,播放声音。} while (nSamples != 0);今天就先写到这里,比较劳累。转载
2023-07-18 05:52:341

转换器是什么

转换器作用是将时间连续、幅值也连续的模拟量转换为时间离散、幅值也离散的数字信号,因此,A/D转换一般要经过取样、保持、量化及编码4个过程。在实际电路中,这些过程有的是合并进行的,例如,取样和保持,量化和编码往往都是在转换过程中同时实现的。DA转换器的内部电路构成无太大差异,一般按输出是电流还是电压、能否作乘法运算等进行分类。大多数DA转换器由电阻阵列和n个电流开关(或电压开关)构成。按数字输入值切换开关,产生比例于输入的电流(或电压)。此外,也有为了改善精度而把恒流源放入器件内部的。技术指标:转换速率完成一次从模拟转换到数字的AD转换所需的时间的倒数。积分型AD的转换时间是毫秒级属低速AD,逐次比较型AD是微秒级属中速AD,全并行/串并行型AD可达到纳秒级。采样时间则是另外一个概念,是指两次转换的间隔。为了保证转换的正确完成,采样速率(SampleRate)必须小于或等于转换速率。因此有人习惯上将转换速率在数值上等同于采样速率也是可以接受的。常用单位是ksps和Msps,表示每秒采样千/百万次(kilo/MillionSamplesperSecond)。以上内容参考:百度百科-转换器
2023-07-18 05:52:431

java音频处理问题

为什么audioFormat.getChannels(), 一次后还要再一个audioFormat.getChannels()*2每声道每帧字节数2字节,再加上双声道所以用声道数(2)*字节数(2) = 每帧的总字节数看来你的audioFormat不是从AudioInputStream中产生的啊?刚才回答你的问题我还没注意。原来audioFormat也可以new出来的啊,嘿嘿。
2023-07-18 05:53:231

求一个能把其他格式转换成mid格式的中文软件

做MIDI音乐的软件很多啊,比如GuitarPRO,Cackwork,Fruit等等,都有中文版的,不过是功能上有所限制,另外还可以到MIDI音乐制作的网站去逛逛!
2023-07-18 05:53:323

用mathematica产生一高斯噪声,并用play函数播放,可行吗?求方法

不可以,高斯噪声是离散的,要用ListPlay函数播放,Play函数只能播放连续的函数。解决如下:data 是10000个正态分布随机变量的样本,ListPlay用来播放,注意要设定采样率SampleRate 。data = RandomVariate[NormalDistribution[1, 3], 10^4];ListPlay[data, SampleRate -> 4096]
2023-07-18 05:53:401

如何解决FL studio 9 Producer Edition 爆音

安装这个驱动以后,普通的板载声卡也可以支持ASIO了。(ASIO驱动可以近似实时回访,因此延迟极小)1、安装驱动2、在FL STUDIO中把AUDIO驱动设置为WUschel"s ASIO4ALL3、驱动设置为WUschel"s ASIO4ALL后,下面多了一个ASIO panel,点击ASIO panel,在弹出的面板里有:AUDIO DEVICE(原来声卡的驱动)SAMPLE RATE(采样频率,设置为44100)BUFFER SIZE(缓存容量,这个跟机子配置有关,我的塞扬533+128M SDRAM设置到1024左右就可以,遇到比较费资源的插件时可以把推子往右拉)4、设置都完成了,现在填加几个轨吧,什么FM7、Hypersonic这些我的老机原来跑不起来的VSTI现在运行如飞,很流畅~:)快来试试,彻底告别爆音的烦恼。驱动下载:http://www.qihuang.net/5bin/5bin/FL-ASIO.rar
2023-07-18 05:53:481

matlab 如何提取声音信号的频率

从麦克风录入语音到MATLAB中的信号,你可看看,至于书籍,可以先看一下语音特征的算法,最好学习的过程是自己在MATLAB中编程做。AI = analoginput("winsound"); %建立录音的目标chan = addchannel(AI,1); %添加录音通道duration = 5; %录取5秒的声音set(AI,"SampleRate",8000); %设置采样频率ActualRate = get(AI,"SampleRate"); set(AI,"SamplesPerTrigger",duration*ActualRate)set(AI,"TriggerType","Manual")blocksize = get(AI,"SamplesPerTrigger");Fs = ActualRate;start(AI); %开始录音,开始从麦克风输入语音信号trigger(AI); %结束录音sn = getdata(AI); %获取语音信号数据t=1:40000;plot(t,sn); %显示语音信号的波形xlabel("时间 t");ylabel("幅度 sn");
2023-07-18 05:53:571

怎么使用libmad

所幸手里有Altera公司的一个工程,借助对该工程的分析、minimad.c中少的可怜的注释和网上搜索的Linux音频方面的相关知识,反复思考编码,总算把libmad库用起来了,现记录一下其使用方法,在帮助别人的同时也方便自己回头查询。在开始之前,最好先把mp3文件格式和Linux音频编程方面的知识先学习一下,不然后面有的东西可能听不懂,还有就是一定要熟悉Linux系统,后面的代码都是在linux系统中用gcc编译的,在Windows下不能用的。首先看下面几个问题,这也是我一开始最迷惑的,弄明白这几个问题了,也就对libmad库的使用相当熟悉了: minimad.c怎么编译?编译后怎么运行?运行时的输入输出分别是什么,或者说运行时什么效果?怎样播放minimad输出的数据?或者说怎么播放解码后的数据?minimad运行时,mp3数据来源是标准输入,能不能改为从文件中读入数据?该怎么改?minimad运行时首先要将整个mp3文件读入内存,能不能改成边解码边读入的形式,比如每次读入16K,解码完再读入16K,而又不影响播放的连贯性,这样可以节省内存开销,方便在嵌入式系统中使用;怎样用libmad做一个简单的mp3播放器? 一个一个来讲吧。 #include #include #include #include #include #include #include #include #include #include "mad.h" #define BUFSIZE 8192 /* * This is a private message structure. A generic pointer to this structure * is passed to each of the callback functions. Put here any data you need * to access from within the callbacks. */ struct buffer { FILE *fp; /*file pointer*/ unsigned int flen; /*file length*/ unsigned int fpos; /*current position*/ unsigned char fbuf[BUFSIZE]; /*buffer*/ unsigned int fbsize; /*indeed size of buffer*/ }; typedef struct buffer mp3_file; int soundfd; /*soundcard file*/ unsigned int prerate = 0; /*the pre simple rate*/ int writedsp(int c) { return write(soundfd, (char *)&c, 1); } void set_dsp() { int format = AFMT_S16_LE; int channels = 2; soundfd = open("/dev/dsp", O_WRONLY); ioctl(soundfd, SNDCTL_DSP_SETFMT, &format); ioctl(soundfd, SNDCTL_DSP_CHANNELS, &channels); } /* * This is perhaps the simplest example use of the MAD high-level API. * Standard input is mapped into memory via mmap(), then the high-level API * is invoked with three callbacks: input, output, and error. The output * callback converts MAD"s high-resolution PCM samples to 16 bits, then * writes them to standard output in little-endian, stereo-interleaved * format. */ static int decode(mp3_file *mp3fp); int main(int argc, char *argv[]) { long flen, fsta, fend; int dlen; mp3_file *mp3fp; if (argc != 2) return 1; mp3fp = (mp3_file *)malloc(sizeof(mp3_file)); if((mp3fp->fp = fopen(argv[1], "r")) == NULL) { printf("can"t open source file. "); return 2; } fsta = ftell(mp3fp->fp); fseek(mp3fp->fp, 0, SEEK_END); fend = ftell(mp3fp->fp); flen = fend - fsta; if(flen fp, 0, SEEK_SET); fread(mp3fp->fbuf, 1, BUFSIZE, mp3fp->fp); mp3fp->fbsize = BUFSIZE; mp3fp->fpos = BUFSIZE; mp3fp->flen = flen; set_dsp(); decode(mp3fp); close(soundfd); fclose(mp3fp->fp); return 0; } /* * This is the input callback. The purpose of this callback is to (re)fill * the stream buffer which is to be decoded. In this example, an entire file * has been mapped into memory, so we just call mad_stream_buffer() with the * address and length of the mapping. When this callback is called a second * time, we are finished decoding. */ static enum mad_flow input(void *data, struct mad_stream *stream) { mp3_file *mp3fp; int ret_code; int unproc_data_size; /*the unprocessed data"s size*/ int copy_size; mp3fp = (mp3_file *)data; if(mp3fp->fpos flen) { unproc_data_size = stream->bufend - stream->next_frame; memcpy(mp3fp->fbuf, mp3fp->fbuf+mp3fp->fbsize-unproc_data_size, unproc_data_size); copy_size = BUFSIZE - unproc_data_size; if(mp3fp->fpos + copy_size > mp3fp->flen) { copy_size = mp3fp->flen - mp3fp->fpos; } fread(mp3fp->fbuf+unproc_data_size, 1, copy_size, mp3fp->fp); mp3fp->fbsize = unproc_data_size + copy_size; mp3fp->fpos += copy_size; /*Hand off the buffer to the mp3 input stream*/ mad_stream_buffer(stream, mp3fp->fbuf, mp3fp->fbsize); ret_code = MAD_FLOW_CONTINUE; } else { ret_code = MAD_FLOW_STOP; } return ret_code; } /* * The following utility routine performs simple rounding, clipping, and * scaling of MAD"s high-resolution samples down to 16 bits. It does not * perform any dithering or noise shaping, which would be recommended to * obtain any exceptional audio quality. It is therefore not recommended to * use this routine if high-quality output is desired. */ static inline signed int scale(mad_fixed_t sample) { /* round */ sample += (1L <= MAD_F_ONE) sample = MAD_F_ONE - 1; else if (sample > (MAD_F_FRACBITS + 1 - 16); } /* * This is the output callback function. It is called after each frame of * MPEG audio data has been completely decoded. The purpose of this callback * is to output (or play) the decoded PCM audio. */ static enum mad_flow output(void *data, struct mad_header const *header, struct mad_pcm *pcm) { unsigned int nchannels, nsamples; unsigned int rate; mad_fixed_t const *left_ch, *right_ch; /* pcm->samplerate contains the sampling frequency */ rate= pcm->samplerate; nchannels = pcm->channels; nsamples = pcm->length; left_ch = pcm->samples[0]; right_ch = pcm->samples[1]; /* update the sample rate of dsp*/ if(rate != prerate) { ioctl(soundfd, SNDCTL_DSP_SPEED, &rate); prerate = rate; } while (nsamples--) { signed int sample; /* output sample(s) in 16-bit signed little-endian PCM */ sample = scale(*left_ch++); writedsp((sample >> 0) & 0xff); writedsp((sample >> 8) & 0xff); if (nchannels == 2) { sample = scale(*right_ch++); writedsp((sample >> 0) & 0xff); writedsp((sample >> 8) & 0xff); } } return MAD_FLOW_CONTINUE; } /* * This is the error callback function. It is called whenever a decoding * error occurs. The error is indicated by stream->error; the list of * possible MAD_ERROR_* errors can be found in the mad.h (or stream.h) * header file. */ static enum mad_flow error(void *data, struct mad_stream *stream, struct mad_frame *frame) { mp3_file *mp3fp = data; fprintf(stderr, "decoding error 0x%04x (%s) at byte offset %u ", stream->error, mad_stream_errorstr(stream), stream->this_frame - mp3fp->fbuf); /* return MAD_FLOW_BREAK here to stop decoding (and propagate an error) */ return MAD_FLOW_CONTINUE; } /* * This is the function called by main() above to perform all the decoding. * It instantiates a decoder object and configures it with the input, * output, and error callback functions above. A single call to * mad_decoder_run() continues until a callback function returns * MAD_FLOW_STOP (to stop decoding) or MAD_FLOW_BREAK (to stop decoding and * signal an error). */ static int decode(mp3_file *mp3fp) { struct mad_decoder decoder; int result; /* configure input, output, and error functions */ mad_decoder_init(&decoder, mp3fp, input, 0 /* header */, 0 /* filter */, output, error, 0 /* message */); /* start decoding */ result = mad_decoder_run(&decoder, MAD_DECODER_MODE_SYNC); /* release the decoder */ mad_decoder_finish(&decoder); return result; }分享到:
2023-07-18 05:54:051

超级解霸“保存片段”截取的视频时长总远远少于“开始时间——结束时间”设置的时长

上述更正下:超级解霸“保存片段”截取的视频时长总远远少于“开始时间——结束时间”设置的时长,起始的时间与设置的相一致,而终止的时间远远低于“结束时间”,截取的视频总是有头缺尾,而且永远无法截取到电影的后半部分和结尾。求各位大侠、专家指点迷津!本人不甚感激。 我用的是:超级解霸V9.0,试过8.5版
2023-07-18 05:54:141

炉温测试仪-kic技巧?

在线等
2023-07-18 05:54:233

Foobar2000 分栏字段添加问题

不好意思,之前没仔细看图,你的是DUI。你确定有“bitspersample”这个语法吗?我知道有个“samplerate”是采样率。你这个应该是无效的格式化标题
2023-07-18 05:54:312

sample rate是什么意思

sample rate的意思是抽样率,样本率,采样速度, sample是样本的意思,rate有比率,率的意思。例如:What is sample rate?
2023-07-18 05:54:571

audio sample rate 是什么?

音频采样率
2023-07-18 05:55:051

如何采集麦克风的声音到MATLAB

常用有2种方法:1:wavrecord函数,比较简单的Fs = 11025;y = wavrecord(5*Fs,Fs,"int16");%录制5秒mic声音wavplay(y,Fs); %播放出来2:analog input方法AI = analoginput("winsound");chan = addchannel(AI,1);duration = 1; %1 second acquisitionset(AI,"SampleRate",8000)ActualRate = get(AI,"SampleRate");set(AI,"SamplesPerTrigger",duration*ActualRate)set(AI,"TriggerType","Manual")blocksize = get(AI,"SamplesPerTrigger");Fs = ActualRate;start(AI)trigger(AI)wait(AI,duration + 1)data = getdata(AI);delete(AI)clear AI
2023-07-18 05:55:291

台式游戏机街机突然没声音

NEORAGEX.EXE 模拟器的执行文件 NEORAGE.INI 记录模拟器的各种设置,如:ROM路径,设键等 ZLIB.DLL 必须的联接文件,什么,你没有也行?它在WINDOWSSYSTEM里吧 Roms 放游戏的地方 Hiscores 记录游戏的分数,BIOS设置(后面讲到)等 Previews 缩略图 States 存放即时记录文件 Shots 截图文件夹 Waves 截取声音 一、基本设置 1.CONTROLSPLAYER CONTROLS:里面可以选择1、2P的游戏控制器,可以是键盘、JOY1、JOY2(要在WINDOW的游戏控制器添加有才行,否则没有JOYSTICK选择,不过有再多的手制也只可用开头两个)。下面AUTOFIRE是1P、2P的连续键开关(对合金弹头和飞机等射击游戏特别有用,可以延长手制寿命^-^,但可惜它只支持A键的连续,想用手制发龙二的潜在能力LEVEL4级就非常难,毕竟一秒按十几次C键不是普通人可做到的)。KEYBOARD/JOYSTICK SETUP:键盘、手制的键位设置。HOTKEY DEFINITION:模拟器支持四个游戏热键,比如你玩侍魂2时经常发不出重斩,将AB设成一个热键就行了。 2.DIRCTORIES里面可以改变模拟器的默认路径。 3.VIDEO OPTIONSCOLOR DEPTH:颜色深度,有8BIT和16BIT选。SCANLINES:抽线模式(电视机显示模式),有NO、YES和50%选。INTERPOLATION:模糊显示模式,去除马赛克,有损运行速度有NO、YES选。EDGE ENHANCEMENT:增强显示模式,去除马赛克,有损运行速度有NO、YES选。TRIPPLE BUFFERING:TRIPPLE缓冲,选了也没用,有NO、YES选。FRAMESKIP:跳帧,一般都选AUTO,有AUTO、0-11项选。VSYNC:只有选了TRIPPLE缓冲后才有用,也是选了没什么用,有NO、YES选。 4.AUDIO OPTIONSMAIN VOLUME:声音大小调节。SOUND:声音模式开关,有FM/ADPCM、FM ONLY、ADPCM ONLY和OFF选,默认为FM/ADPCM,不想模拟声音时选OFF(可增加速度),若你的游戏ROM的声音有问题,可选FM ONLY或ADPCM ONLY试试。OUTPUT CHANNELS:选择立体声(STEREO)或单声道(MONO)。SAMPLE SIZE:SAMPLE大小,有8BIT和16BIT选。SAMPLE RATE:SAMPLE比率,有22KHZ和44KHZ选。INTERPOLATED SOUND:只有SAMPLE比率为44KHZ才可选YES。 5.MACHINE SETTINGSLENGUAGE:语言选择,有日版、欧洲版和美版选。SYSTEM:选择家用机模式(CONSOLE)或街机模式(ARCADE)。MVS SETTINGS:MVS模式开关。FREEPLAY:街机模式时打开后可以不投币打机(若是游戏机厅,损失惨重啊^O^)注意:改变后记得RESET!!! 6.SHOTS FACTORYNEXT FRAME:下一帧,截下人物每次变化的图像,制成GIF……SAVE SHOT:想截图,就按它,图画存放在SHOTS目录下。FRONT LAYER:去除前图层,你想截的图被字符遮挡时就用它。ALT.BACKCOLOR:加上一层紫底色,做GIF时特别有用。MARK ALL/CLEAR:去除或恢复图像中的所有对象,想单一去除请按上面的小格。 键盘的快捷键 ESC/PAUSE:不用说吧 F9:截图 TAB:游戏/主菜单切换 F11:SAVESTAGE F1:RESET/进入游戏SETUP设置 F12:LOADSTAGE F2:声音模式开关 1:1P START键 F3:SAMPLE SIZE切换 2:2P START键 F4:OUTPUT CHANNELS切换 3:1P 入币/SELECT键 F5:COLOR DEPTH 4:2P 入币/SELECT键 F6:SCANLINES显示模式 5/6:声音大/小调节 F7:INTERPOLATION显示模式 7:录音(听到好听的音乐就按它) F8:EDGE ENHANCEMENT显示模式 8:显示游戏帧数 9:FULL THROTTEL开关 用八键模拟手制时,游戏速度太慢时才用。
2023-07-18 05:55:371

java怎么判断电脑是否有音频输出设备?

楼主,我是来学习的
2023-07-18 05:55:462

NDS怎么看电影

moonshell
2023-07-18 05:55:5414

谁有c8051f单片机AD转换(c)急用!

/***************************************************************功能:实现ADC采样芯片外的模拟电压,通过LCD显示,并通过串口(J13)发送到PC机 注:试验时把ADC0的工作基准VREF0(J7_5和J7_6或J7_2和J7_6)和LCD电源跳线(J18_1和J18_2)联接好!作者:ZDP时间:2005-11-30版本:V1.0用外部基准: J7 NC 1 2 内部VREF 外部VREF 3 4 内部DAC工作基准输入 外部VREF 5 6 内部ADC0工作基准输入 外部VREF 7---8 内部ADC1工作基准输入或用内部基准: J7 NC 1 2- 内部VREF 外部VREF 3 4 | 内部DAC工作基准输入 外部VREF 5 6 | 内部ADC0工作基准输入 外部VREF 7 8- 内部ADC1工作基准输入***************************************************************/#include <c8051f020.h> // SFR declarations#include <stdio.h>#include <INTRINS.H>//-----------------------------------------------------------------------------// 16-bit SFR Definitions for "F02x//-----------------------------------------------------------------------------sfr16 DP = 0x82; // data pointersfr16 TMR3RL = 0x92; // Timer3 reload valuesfr16 TMR3 = 0x94; // Timer3 countersfr16 ADC0 = 0xbe; // ADC0 datasfr16 ADC0GT = 0xc4; // ADC0 greater than windowsfr16 ADC0LT = 0xc6; // ADC0 less than windowsfr16 RCAP2 = 0xca; // Timer2 capture/reloadsfr16 T2 = 0xcc; // Timer2sfr16 RCAP4 = 0xe4; // Timer4 capture/reloadsfr16 T4 = 0xf4; // Timer4sfr16 DAC0 = 0xd2; // DAC0 datasfr16 DAC1 = 0xd5; // DAC1 data#define BAUDRATE 115200 // Baud rate of UART in bps#define SYSCLK 22118400 // SYSCLK frequency in Hz#define SAMPLE_RATE 50000 // Sample frequency in Hz#define INT_DEC 256 // integrate and decimate ratio#define AMX0SL_AIN 8 // 0=AIN0....7=AIN7,8=TEMPvoid SYSCLK_Init (void);void PORT_Init (void);void UART0_Init (void);void ADC1_Init (void);void Timer3_Init (int counts);void ADC1_ISR (void);void LCD_Init(void);unsigned char NCDdata[3]={0x30,0x30,0x30};unsigned char result;unsigned char *lcdpoint; //指向 lcddata数组的指针unsigned char lcd_data_count; //要显示的数据个数 void main (void) { unsigned int temperature,x; unsigned char data1; WDTCN = 0xde; // disable watchdog timer WDTCN = 0xad; SYSCLK_Init (); // initialize oscillator PORT_Init (); // initialize crossbar and GPIO UART0_Init (); // initialize UART0 Timer3_Init (SYSCLK/SAMPLE_RATE); // initialize Timer3 to overflow at // sample rate ADC1_Init (); // init ADC AD0EN = 1; // enable ADC EA = 1; while(result==0); //等于0,侧等待 while (1) { EA = 0; // 关中断 temperature = result; temperature&=0x00ff; //LCD显示数据处理 NCDdata[0]=result/100+0x30; NCDdata[1]=(result%100)/10+0x30; NCDdata[2]=(result%100)%10+0x30; EA = 1; //开中断 //转换为实际温度数据 printf ("Temperature is %u ", temperature);//把温度数据通过串口发送至PC机 LCD_Init(); //LCD初始化 P2 = 0xA0; //准备送数据 lcdpoint=&NCDdata; //取地址 for(lcd_data_count=3;lcd_data_count>0;lcd_data_count--) { data1=*lcdpoint; //读出数据 P3 = data1; //写数据到端口 P2 = 0X20; P2 = 0XA0; //控制LCD lcdpoint++; for(x=0;x<0x5000;x++); } for(data1=0;data1<50;data1++) { for(x=0;x<0xffff;x++) {_nop_();} } }}//-----------------------------------------------------------------------------// SYSCLK配置//-----------------------------------------------------------------------------// 配置系统时钟使用外部晶振22.1184MHzvoid SYSCLK_Init (void){ int i; // delay counter OSCXCN = 0x67; // start external oscillator with // 22.1184MHz crystal for (i=0; i < 256; i++) ; // XTLVLD blanking interval (>1ms) while (!(OSCXCN & 0x80)) ; // Wait for crystal osc. to settle OSCICN = 0x88; // select external oscillator as SYSCLK // source and enable missing clock // detector}//-----------------------------------------------------------------------------// PORT配置//-----------------------------------------------------------------------------void PORT_Init (void){ XBR0 = 0x04; // Enable UART0 XBR1 = 0x00; XBR2 = 0x40; // Enable crossbar and weak pull-ups P1MDIN = 0xFE; P0MDOUT |= 0x01; // enable TX0 as a push-pull output P2MDOUT = 0xe0; // P2口设为推挽方式 P3MDOUT = 0xff; // P2口设为推挽方式}//-----------------------------------------------------------------------------// UART0配置//-----------------------------------------------------------------------------// Configure the UART0 using Timer1, for <baudrate> and 8-N-1.void UART0_Init (void){ SCON0 = 0x50; // SCON0: mode 1, 8-bit UART, enable RX TMOD = 0x20; // TMOD: timer 1, mode 2, 8-bit reload TH1 = -(SYSCLK/BAUDRATE/16); // set Timer1 reload value for baudrate TR1 = 1; // start Timer1 CKCON |= 0x10; // Timer1 uses SYSCLK as time base PCON |= 0x80; // SMOD00 = 1 TI0 = 1; // Indicate TX0 ready}//-----------------------------------------------------------------------------// ADC0配置,T3定时启动ADC//-----------------------------------------------------------------------------void ADC1_Init (void){ ADC1CN = 0x82; // ADC0 T3定时采样 REF0CN = 0x07; // 启用内部基准源 AMX1SL = AMX0SL_AIN; // 选择采样输入源 ADC1CF = 0xB1; // PGA gain = 1,1MHz转换频率 EIE2 |= 0x08; // 启用 ADC 中断}//-----------------------------------------------------------------------------// Timer3配置,T3定时启动ADC//-----------------------------------------------------------------------------void Timer3_Init (int counts){ TMR3CN = 0x02; TMR3RL = -counts; TMR3 = 0xffff; EIE2 &= ~0x01; TMR3CN |= 0x04;}//-----------------------------------------------------------------------------// ADC0采样中断//-----------------------------------------------------------------------------void ADC0_ISR (void) interrupt 17{ static unsigned int_dec=INT_DEC; static int accumulator=0L; ADC1CN &= ~0x20; // 清 ADC 中断标志位accumulator += ADC1; // 累加ADC采样数据 int_dec--; // 指针减1 if (int_dec == 0) { // 累加完了吗? int_dec = INT_DEC; // 指针复位 result = accumulator>>8; accumulator = 0; // 累加和变量清0 }}//LCD初始化void LCD_Init(void){unsigned long x; P2 = 0X80; for(x=0;x<1000;x++); //P7 = 0x30; /*一行显示*/ P3 = 0x38; /*两行显示*/ P2 = 0X00;//0x08; P2 = 0X80;//0x09; for(x=0;x<1000;x++); P3 = 0x0e; P2 = 0x00; P2 = 0x80; for(x=0;x<1000;x++); P3= 0x06; P2 = 0x00; P2 = 0x80; for(x=0;x<5000;x++); P3 = 0x01; P2 = 0x00; P2 = 0x80; for(x=0;x<5000;x++);}
2023-07-18 05:56:172

腾讯云智聆口语评测

我也不清楚的
2023-07-18 05:56:362

silk格式怎么转换成wma

silk格式转换成wma,要用到SILK编码库,供下载的SILK编码库内,提供了4个不同的平台版本,功能基本相同。在SILK编码库的SDK内,test目录下,有一个Decoder.c文件,为解码的示例文件,编译后它能直接解码SILK格式的音频文件:SILK文件格式以"#!SILK_V3"开始,之后为一帧帧语音内容块,每帧帧长占两字节,后为帧内容,因为SILk编码是变长编码,所以每帧长度不同。在各个test_vectorsitstream目录下的.bit文件,即为SILK格式文件,可以被解码程序Decoder.c支持。解码程序将SILK文件解码为PCM流文件,但缺少WAV头,无法直接用播放器播放。如果需要使解码后的PCM流能够播放,则需要PCM流前面添加WAV头。对微信语音短消息,WAV头赋值如下(pcmsize为PCM流的字节数):whead.DataLen = pcmsize;memcpy(whead.Riff,"RIFF",4);memcpy(whead.Format,"WAVE",4);memcpy(whead.SubChunkID,"fmt ",4);memcpy(whead.Data,"data",4);whead.ChunkSize =whead.DataLen+44-8;whead.SubChunkSize = 0x10;whead.AudioFormat = 1;whead.NumChannels = 1;whead.SampleRate = DecControl.API_sampleRate;whead.BitsPerSample = 16;whead.BlockAlign = whead.NumChannels*whead.BitsPerSample/8; whead.ByteRate = whead.SampleRate*whead.BlockAlign;其中NumChannels、SampleRate和BitsPerSample等参数需要根据具体情况进行填充,否则,声音会很怪异。在语音相关的协议还原中,经常会遇到语音编码的问题,通常语音编码的数据无法直接展示,需要转换成WAV,MP3等格式,才能播放。这个转换过程,是首先将音频编码数据使用对应解码库解码为PCM流,然后再将PCM流根据封装格式的要求,进行编码封装,最后得到可供通用播放器支持的编码和格式。音频编码有很多,各有特色,本文首选介绍目前最流行的SILK编码。SILK编码最早在Skype中使用,它在编码效率和质量之间取得了很好的平衡,因此被广泛应用在互联网的音频相关产品中,目前广泛使用的是SILK V3。腾讯系产品,包括QQ、微信、小程序,在语音相关的实现中,也大量使用到SILK编码,并且,部分功能是直接让未加密的语音流在网络中传输,这是协议还原很感兴趣的部分。毕竟,腾讯的产品防守相当严密,不宜突破。
2023-07-18 05:56:441

模拟音频数字化的过程

采样——量化——编码
2023-07-18 05:57:003

请英语高手帮忙解决一下

什么东东啊?
2023-07-18 05:57:087

KIC炉温测试仪测波峰焊总显示不了锡炉温度怎么回事?

信号屏蔽了
2023-07-18 05:57:264

街机模拟器怎么关声音

问题一:街机游戏怎么样关闭声音 kawaks 的话,“音频”(Audio)-----“NeoGeo音频选项”(倒数第四个)--- 禁止第一项,是关闭人声和背景音乐的,禁止第二项,是关闭按键选定人物出场声音的。 这是针对NeoGeo游戏,适用像拳皇、合金、彩京等游戏, 如果是CPS1/2游戏,尝试CPS1音频选项,禁止就可以了 Nebula的话,也差不多 在声音选项中禁止就是了 问题二:WinKawaks模拟器怎么关掉声音? 应该是可以的 有个禁止是什么解说也要选中 如果不行 你先推出再进去就哦了 要是实在不行 那我就没办法了只好是把音响关了钡!~~呵呵 我的经常是听音乐玩 问题三:街机模拟器游戏怎么静音 winkawaks模拟器:看你的是cps1、cps2、neogeo中的什么游戏,在载入游戏后,根据类型点击‘音频"--‘cps1、cps2、neogeo的音频选项"--都关闭掉就行了。mame模拟器,默认的声音调节‘~",就是‘Esc"键下面的那个。然后用左右箭头调节声音就行了。 问题四:街机经典合辑怎么关声音 你的模拟器应该是WinKawaks 这种的,这种关声音选的比较多,把下面这几个都勾上, 音频菜单里面选CPS1音频选项, 小菜单出来:关闭OKIM6295 打勾 关闭OKIM6295通道 的1、2、3、4通道都打勾, QSOUND选项 出来小菜单, 关闭QSOUND SFX 打勾 关闭QSOUND 打勾 关闭SFA3报幕员 打勾 NEOGEO音频选项下面的 关闭2610 打勾 关闭AY-3-8910 打勾 CPS1音频选项 QSOUND选项(CPS2,CPS1) NEOGEO音频 上面这三个就是这模拟器支持的模式,分不清楚就把他们都关掉就好。打开声音就再把关的都打开,如果能分清楚就关其中一项就行。 比如CPS1新快三,惩罚者,名将,圆桌武士等 CPS2龙与地下城,超级漫画街霸等 NEOGEO拳皇系列,合金弹头系列等。 问题五:街机游戏里怎么关掉声音 点选音频选项,在下拉菜单中有一行叫NeoGeo音频选项,那里面有两储,一行是禁止YM-2610,另一行是禁止AY-3-8910,把这两行都点选了就可以了。 问题六:街机模拟器声音如何消除 街机模拟器怎么关声音 有些真的关 不 了 就直接关电脑上的声音 问题七:怎样更改街机模拟器的声音? NEORAGEX.EXE 模拟器的执行文件 NEORAGE.INI 记录模拟器的各种设置,如:ROM路径,设键等 ZLIB.DLL 必须的联接文件,什么,你没有也行?它在WINDOWSSYSTEM里吧 Roms 放游戏的地方 Hiscores 记录游戏的分数,BIOS设置(后面讲到)等 Previews 缩略图 States 存放即时记录文件 Shots 截图文件夹 Waves 截取声音 一、基本设置 1.CONTROLSPLAYER CONTROLS:里面可以选择1、2P的游戏控制器,可以是键盘、JOY1、JOY2(要在WINDOW的游戏控制器添加有才行,否则没有JOYSTICK选择,不过有再多的手制也只可用开头两个)。下面AUTOFIRE是1P、2P的连续键开关(对合金弹头和飞机等射击游戏特别有用,可以延长手制寿命^-^,但可惜它只支持A键的连续,想用手制发龙二的潜在能力LEVEL4级就非常难饥毕竟一秒按十几次C键不是普通人可做到的)。KEYBOARD/JOYSTICK SETUP:键盘、手制的键位设置。HOTKEY DEFINITION:模拟器支持四个游戏热键,比如你玩侍魂2时经常发不出重斩,将AB设成一个热键就行了。 2.DIRCTORIES里面可以改变模拟器的默认路径。 3.VIDEO OPTIONSCOLOR DEPTH:颜色深度,有8BIT和16BIT选。SCANLINES:抽线模式(电视机显示模式),有NO、YES和50%选。INTERPOLATION:模糊显示模式,去除马赛克,有损运行速度有NO、YES选。EDGE ENHANCEMENT:增强显示模式,去除马赛克,有损运行速度有NO、YES选。TRIPPLE BUFFERING:TRIPPLE缓冲,选了也没用,有NO、YES选。FRAMESKIP:跳帧,一般都选AUTO,有AUTO、0-11项选。VSYNC:只有选了TRIPPLE缓冲后才有用,也是选了没什么用,有NO、YES选。 4.AUDIO OPTIONSMAIN VOLUME:声音大小调节。SOUND:声音模式开关,有FM/ADPCM、FM ONLY、ADPCM ONLY和OFF选,默认为FM/ADPCM,不想模拟声音时选OFF(可增加速度),若你的游戏ROM的声音有问题,可选FM ONLY或ADPCM ONLY试试。OUTPUT CHANNELS:选择立体声(STEREO)或单声道(MONO)。SAMPLE SIZE:SAMPLE大小,有8BIT和16BIT选。SAMPLE RATE:SAMPLE比率,有22KHZ和44KHZ选。INTERPOLATED SOUND:只有SAMPLE比率为44KHZ才可选YES。 5.MACHINE SETTINGSLENGUAGE:语言选择,有日版、欧洲版和美版选。SYSTEM:选择家用机模式(CONSOLE)或街机模式(ARCADE)。MVS SETTINGS:MVS模式开关。FREEPLAY:街机模式时打开后可以不投币打机(若是游戏机厅,损失惨重啊^O^)注意:改变后记得RESET!!! 6.SHOTS FACTORYNEXT FRAME:下一帧,截下人物每次变化的图像,制成GIF……SAVE SHOT:想截图,就按它,图画存放在SHOTS目录下。FRONT LAYER:去除前图层,你想截的图被字符遮挡时就用它。ALT.BACKCOLOR:加上一层紫底色,做GIF时特别有用。MARK ALL/CLEAR:去除或恢复图像......>> 问题八:MAME模拟器里如何关闭游戏运行时的声音? 只要按 一下左上角的‘u30fb(~)"键就行了,然后用左右箭头加减音量。 就是在‘1"键的左边 问题九:街机模拟器怎么去除声音? 如果是MAME模拟器,就在游戏中按键盘TAB键,然后选“参数调整”,把主音量按左右方向键调到最低就好
2023-07-18 05:57:541

声卡中的SRC问题是指什么?

SRC,全称为“Sample Rate Converter”,意为采样频率转换器。声卡上之所以会出现这个东西是因为Intel在当年制定AC"97标准时为了解决单CODEC解码多音频流问题而规定了输入输出的采样频率都必须是48kHz,所以如果Codec接收到其他采样频率的音频流(比如CD标准的44Khz),便要经过SRC处理,将频率转换到统一的48kHz,但是因为大多数时候转换是在非整数倍下进行的,造成了在转换过程中必定会产生音质劣化,而被劣化程度则视乎于该声卡驱动程序所采用SRC算法的优劣,而这一点则正是创新声卡吃大亏的地方,为了保持创新声卡CPU占有率最低的形象,创新为其声卡驱动所采用的SRC算法是非常劣质的,可以说,因为SRC问题的存在,诸多创新声卡最多只发挥了其硬件70%的音质表现。--------------------------------------------------------------------------------
2023-07-18 05:58:031

从哪能下载mp4格式的文件?多一些的!

压缩mp4的一套方案 http://blog.video.com.cn/vod/archives/2005/4655.shtml vod 发表于 2005-11-25 23:41:09 目前该软件所能支持的格式如下: ?输入格式: Video formats: MPEG (includes MPEG, DAT, VOB) ; AVI ; DV Video Files ; MOV(QuickTime Files) ; Animated GIF ; swf (Macromedia Flash Files) ; MJPEG Video Files ; MPEG4 ; NUT Files ; Raw h264 Video Files ; Raw MPEG4 Video Files ; Raw Video Files (*.yuv) ; RM ; WMV ; ASF 音频格式: WAV ; WMA ; MP3 ; MP2 ; 3GP Files ; MPEG4 Audio Files (*.m4a, *.mp4) ; Raw AC3 Files ?输出格式 视频格式: MPEG (includes MPEG, DAT, VOB) ; AVI ; DV Video Files ; MOV(QuickTime Files) ; Animated GIF ; swf (Macromedia Flash Files) ; MJPEG Video Files ; MPEG4 ; NUT Files ; Raw h264 Video Files ; Raw MPEG4 Video Files ; Raw Video Files (*.yuv) ; RM ; WMV ; ASF 音频格式: WAV ; WMA ; MP3 ; MP2 ; 3GP Files ; MPEG4 Audio Files (*.m4a, *.mp4) ; Raw AC3 Files 看完上面可转的格式够吓人吧!! 操作方法如下: 1.先选档案,再选择要转成的格式,如:mp4,再点一下档案反白后调整右边各类功能.. 2.将Video siae选择为176x144 3.将Frame rate选择为14.98 4.将Bit rate选择为80 5.将Sample rate选择为44100 这样就ok啦!转出来的mp4效果一级棒!^^ 不过,不要就这样浪费了ImTOO MPEG Encoder的功能,它还有很强大的功能等著大家发掘哦! 另附注册码:Name:crsky Code:93E4-C6E2-911B-B36B-2FD0-6A38-C6CE-95E7 该软件为中文版,请在安装时选择正确语言. 集中回答几个问题: 1.转换后的asf文件不能被机器识别:用机器自带的转asf工具将该软件转换的文件再转换一次就OK了,转后文件可能比原文件稍大. 2.特别针对其他格式转为asf格式:经过对右侧设置可大大缩小转后文件(video size选项中可调整画面分辨率,越小转后文件自然越小,但128*96如果带字幕的影片基本不要考虑,除非你机器内存十分紧张,如果可不考虑音质,可将bit rate改为32,sample rate改为22050,channels改为1) 下载:http://www.imtoo.com/downloads/mpeg-encoder.exe 推荐几款必备转换工具: (你要这个就很合适: WinAVI Video Converter V5.8 汉化版) 能合并多个电影的,也就是功能最全的: 1、real格式压缩至尊 V3.70 特别版(VCD DVD AVI等转RMVB) http://www.52zy.com/down/115.html 「Real 格式文件压缩至尊」是「田雨软件工作室」赠送给各位喜欢将 DVD、VCD、CD 压缩成 Real Media (.RM)文件格式的广大网友们的礼物!他是「Real Prodecer」 软件的辅助功能增强工具。您可以将 DVD 的VOB文件,VCD 内的 .DAT、MPG、以及avi、vob、wav、mpg、mpeg、dat、mp1、mp2、mp3、au、qt、mov、wma 等文件格式通过本软件压缩成.RM文件格式,配合「VOBSUB」软件还可以压缩DVD字幕(软件内附DVD及其字幕压缩教程),同时本砑固峁┡孔还δ埽煌瓯瞎乇占扑慊琑M文件合并,CD 转 RA 等功能,这是史无前例的,也是本软体的特点之一。“CD数字抓音轨输出RA”,是本软件首家提供的非常实用的功能之一!您可以把它用作您的音乐网站搞试听之用,以往需要将cd抓成mp3或wav格式,然后才可以转换成rm,现在有了本软件,就可一步完成了。COOL !同时还支持RM文件的合并功能! 2、EO Video软件介绍: 视频转换 -> EO Video V1.36 http://www.skycn.com/soft/7175.html 一个集播放,剪辑,转换于一体的视频软件,发现它不但能转换 ASF 文件,而且也可以转换 RM 文件,而且还支持 AVI 的编码选择,当然你甚至可以直接转成 MPG 文件!而且转换的速度也相当的快,转换后图像、音频的质量也看不出什么分别。 EO Video教程: 因为这里不支持图片,所以推荐你直接浏览教程网页,图文并茂,说得更详细: 1 RM转换利器:EO Video使用教程 http://dnszone.com.ru/viewarticle.php?id=4781 2 [原创]Eo Video 不完全使用教程 http://bbs.ktxp.com/read.php?tid=110996 其它软件有: 1、WinAVI Video Converter V5.8 汉化版http://soft.studa.com/downinfo/1527.html 2、WinAVI Video Converter 7.1 全插件汉化特别版 http://www.winavi.com:80/download/HelixSDK.exe 3、Ultra RM Converter http://www.zxmedia.com/ultra_rmconverter.exe 4、TMPGEnc Plus http://www1.skycn.com/soft/16882.html 5、超级转换秀注册机 http://www.cqforest.com/soft/11956.htm 6、超级转换秀 白金版 V8.0 破解版 http://www.wtxz.net/soft/2113. 超级转换秀 V3.0 Build 100 正式白金完整版 注册名(卡号): STVIP 注册码 9074911862C6ZW 4948999428C6ZW 9443027517C6ZW 超级转换秀 V11.9 Build 690 白金版 下载地址:http://www.powerrsoft.com/CSDemo.exe 破解补丁:http://997.997.cn/996/key16/c-cjzhx.rar
2023-07-18 05:58:111

如何去除MP3音频文件的杂音

用 GOLDWAVE 的 降噪功能,较大杂音可以手工选择降噪
2023-07-18 05:58:206

主线程与子线程同步一个变量,主线程改变了变量值,子线程收不到

为何不设置两个断点来调试呢,一个在SendMessage后面::EnterCriticalSection(&m_css); 一个在你的主线程等待那里-----------华丽的分割线---------------实际上你根本不用那样做,你可以设置一个event,在子线程完成时激活这个事件,主线程等待这个事件就好了
2023-07-18 05:58:472