barriers / 阅读 / 详情

模拟音频数字化的过程

2023-07-18 06:44:23
共3条回复
wio

从字面上来说,数字化 (Digital) 就是以数字来表示,例如用数字去记录一张桌子的长宽尺寸,各木料间的角度,这就是一种数字化。跟数位常常一起被提到的字是模拟 (Analog/Analogue) ,模拟的意思就是用一种相似的东西去表达,例如将桌子用传统相机将三视图拍下来,就是一种模拟的记录方式。

两个概念:

1、分贝(dB):声波振幅的度量单位,非绝对、非线性、对数式度量方式。以人耳所能听到的最静的声音为1dB,那么会造成人耳听觉损伤的最大声音为100dB。人们正常语音交谈大约为20dB。10dB意味着音量放大10倍,而20dB却不是20倍,而是100倍(10的2次方)。

2、频率(Hz):人们能感知的声音音高。男性语音为180Hz,女性歌声为600Hz,钢琴上C调至A调间为440Hz,电视机发出人所能听到的声音是17kHz,人耳能够感知的最高声音频率为20kHz。

将音频数字化,其实就是将声音数字化。最常见的方式是透过脉冲编码调制PCM(Pulse Code Modulation) 。运作原理如下。首先我们考虑声音经过麦克风,转换成一连串电压变化的信号,如图一所示。这张图的横座标为秒,纵座标为电压大小。要将这样的信号转为 PCM 格式的方法,是先以等时距分割。我们假设用每 0.01 秒分割,则得到图二。

我们把分割线与信号图形交叉处的座标位置记录下来,可以得到如下资料,(0.01,11.65) 、(0.02,14.00) 、 (0.03,16.00) 、 (0.04,17.74) … ..(0.18,15.94) 、 (0.19,17.7) 、 (0.20,20) 。好了,我们现在已经把这个波形以数字记录下来了。由于我们已经知道时间间隔是固定的 0.01 秒,因此我们只要把纵座标记录下来就可以了,得到的结果就是 11.65 14.00 16.00 17.74 19.00 19.89 20.34 20.07 19.44 18.59 17.47 16.31 15.23 14.43 13.89 13.71 14.49 15.94 17.70 20.00 这一数列。这一串数字就是将以上信号数字化的结果。看吧,我们确实用数字记录了事物。在以上的范例中,我们的采样频率是 100Hz(1/0.01 秒 ) 。其实电脑中的 .WAV 档的内容就是类似这个样子,文件头中记录了采样频率和可容许最大记录振幅,后面就是一连串表示振幅大小的数字,有正有负。常见CD唱盘是以PCM格式记录,而它的采样频率 (Sample Rate) 是 44100Hz ,振幅采样精度/数位是 16Bits ,也就是说振幅最小可达 -32768(-2^16/2) ,最大可达 +32767(2^16/2-1) 。CD唱盘是以螺旋状由内到外储存资料,可以存储74分钟的音乐。CD唱盘的规格为什么是 44.1kHz、16Bits呢?关于 44.1kHz 这个数字的选取分为两个层面。首先人耳的聆听范围是 20Hz 到 20kHz ,根据 Nyquist Functions ,理论上只要用 40kHz 以上的采样频率就可以完整记录 20kHz 以下的信号。那么为什么要用 44.1kHz 这个数字呢?那是因为在 CD 发明前硬盘还很贵,所以主要将数字音频信号储存媒体是录像带,用黑白来记录 0 与 1 。而当时的录像带格式为每秒 30 张,而一张图又可以分为 490 条线,每一条线又可以储存三个取样信号,因此每秒有 30*490*3=44100 个取样点,而为了研发的方便, CD唱盘也继承了这个规格,这就是 44.1kHz 的由来。在这里我们可以发现无论使用多么高的采样精度/数位,记录的数字跟实际的信号大小总是有误差,因此数字化无法完全记录原始信号。我们称这个数字化造成失真称为量化失真。

--------------------------------------------------------------------------------

数字化的最大好处是资料传输与保存的不易失真。记录的资料只要数字大小不改变,记录的资料内容就不会改变。如果我们用传统类比的方式记录以上信号,例如使用录音带表面的磁场强度来表达振幅大小,我们在复制资料时,无论电路设计多么严谨,总是无法避免杂讯的介入。这些杂讯会变成复制后资料的一部份,造成失真,且复制越多次信噪比 ( 信号大小与噪音大小的比值 ) 会越来越低,资料的细节也越来越少。如果多次复制过录音带,对以上的经验应该不陌生。在数字化的世界里,这串数字转换为二进制,以电压的高低来判读1与0,还可以加上各种检查码,使得出错机率很低,因此在一般的情况下无论复制多少次,资料的内容都是相同,达到不失真的目的。

那么,数字化的资料如何转换成原来的音频信号呢?在计算机的声卡中一块芯片叫做 DAC(Digital to Analog Converter) ,中文称数模转换器。DAC的功能如其名是把数字信号转换回模拟信号。我们可以把DAC想像成 16 个小电阻,各个电阻值是以二的倍数增大。当 DAC 接受到来自计算机中的二进制 PCM 信号,遇到 0 时相对应的电阻就开启,遇到 1 相对应的电阻不作用,如此每一批 16Bits 数字信号都可以转换回相对应的电压大小。我们可以想像这个电压大小看起来似乎会像阶梯一样一格一格,跟原来平滑的信号有些差异,因此再输出前还要通过一个低通滤波器,将高次谐波滤除,这样声音就会变得比较平滑了。

从前面的内容可以看出,音频数字化就是将模拟的(连续的)声音波形数字化(离散化),以便利用数字计算机进行处理的过程,主要包参数括采样频率(Sample Rate)和采样数位/采样精度(Quantizing,也称量化级)两个方面,这二者决定了数字化音频的质量。采样频率是对声音波形每秒钟进采样的次数。根据这种采样方法,采样频率是能够再现声音频率的一倍。人耳听觉的频率上限在2OkHz左右,为了保证声音不失真,采样频率应在4OkHz左右。经常使用的采样频率有11.025kHz、22.05kHz和44.lkHz等。采样频率越高,声音失真越小、音频数据量越大。采样数位是每个采样点的振幅动态响应数据范围,经常采用的有8位、12位和16位。例如,8位量化级表示每个采样点可以表示256个(0-255)不同量化值,而16位量化级则可表示65536个不同量化值。采样量化位数越高音质越好,数据量也越大。

反映音频数字化质量的另一个因素是通道(或声道)个数。记录声音时,如果每次生成一个声波数据,称为单声道;每次生成二个声波数据,称为立体声(双声道),立体声更能反映人的听觉感受。

除了上述因素外,数字化音频的质量还受其它一些因素(如扬声器质量,麦克风优劣,计算机声卡A/D与D/A(模/数、数/模)转换芯片品质,各个设备连接线屏蔽效果好坏等)的影响。

综上所述,声音数字化的采样频率和量化级越高,结果越接近原始声音,但记录数字声音所需存储空间也随之增加。可以用下面的公式估算声音数字化后每秒所需的存储量(假定不经压缩):

存储量=(采样频率*采样数位)/8(字节数)

若采用双声道录音,存储量再增加一倍。例如,数字激光唱盘(CD-DA,红皮书标准)的标准采样频率为44.lkHz,采样数位为16位,立体声,可以几乎无失真地播出频率高达22kHz的声音,这也是人类所能听到的最高频率声音。激光唱盘一分钟音乐需要的存储量为:

44.1*1000*l6*2*60/8=10,584,000(字节)=10.584MBytes

这个数值就是微软Windows系统中WAVE(.WAV)声音文件在硬盘中所占磁盘空间的存储量。由MICROSOFT公司开发的WAV声音文件格式,是如今计算机中最为常见的声音文件类型之一,它符合RIFF文件规范,用于保存WINDOWS平台的音频信息资源,被WINDOWS平台机器应用程序所广泛支持。另外,WAVE格式支持MSADPCM、CCIPTALAW、CCIPT-LAW和其他压缩算法,支持多种音频位数,采样频率和声道,但其缺点是文件体积较大,所以不适合长时间记录。因此,才会出现各种音频压缩编/解码技术的出现,例如,MP3,RM,WMA,VQF,ASF等等它们各自有自己的应用领域,并且不断在竞争中求得发展。

豆豆staR

希望对你有用---------------

由于音频信号是一种连续变化的模拟信号,而计算机只能处理和记录二进制的数字信号,因此,由自然音源而得的音频信号必须经过一定的变化和处理,变成二进制数据后才能送到计算机进行再编辑和存贮。

pcm(pulse

code

modulation)脉冲编码调制是一种模数转换的最基本编码方法。它把模拟信号转换成数字信号的过程称为模/数转换,它主要包括:

采样:在时间轴上对信号数字化;

量化:在幅度轴上对信号数字化;

编码:按一定格式记录采样和量化后的数字数据。

编码的过程首先用一组脉冲采样时钟信号与输入的模拟音频信号相乘,相乘的结果即输入信号在时间轴上的数字化。然后对采样以后的信号幅值进行量化。最简单的量化方法是均衡量化,这个量化的过程由量化器来完成。对经量化器a/d变换后的信号再进行编码,即把量化的信号电平转换成二进制码组,就得到了离散的二进制输出数据序列x

(

n

),n表示量化的时间序列,x

(

n

)的值就是n时刻量化后的幅值,以二进制的形式表示和记录。

ardim

采样——量化——编码

相关推荐

设置系统时间对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: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

android怎样录制系统内部声音

可以加个插头,找一下:安卓系统内录配件,就只录内部声音,没有外音了,在淘宝上找一下
2023-07-18 05:59:021