8KHZ的音频采样率去进行AAC编码存在的问题

AAC格式音频对采样频率有要求吗,我目前采用8KHZ的采样率去进行AAC编码,但编码出来的音频感觉动作放慢一样,且不连续,我查过好像一帧标准AAC数据会有1024个采样点,这是因为样本数太少的原因吗
后来改成16KHZ的但播放出来的音质感觉糊了一样

3个回答

问题已经解决,是使用的编码库默认接收的是G711/G726数据,而我直接传入的是PCM格式的原始数据,导致编码异常,经修改后 8K/16K下都能正常编码出AAC格式数据,关于采样点数不够,是会影响音频质量。

查查奈奎斯特采样理论,想声音不失真,采样频率应该在40kHz左右,
音频帧的播放时间=一个AAC帧对应的采样样本的个数/采样频率(s)
希望对你有帮助

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
单片机STM32F429的程控代码要怎么写
# 设计并制作一个可控增益放大器和有源滤波器组合,其组成框图如图1所示。放大器的增益可设置;分别设计低通滤波器和高通滤波器,采用模拟电子开关接入电路。 1.基本要求 (1)放大器输入正弦信号电压幅度为20mVpp,电压增益为40dB,通频带为100Hz~100kHz,放大器输出电压无明显失真。 (2)滤波器可设置为低通滤波器,其-3dB截止频率fc为10kHz,2fc处放大器与滤波器的总电压增益不大于30dB,RL=1k。 (3)滤波器可设置为高通滤波器,其-3dB截止频率fc为10kHz,0.5fc处放大器与滤波器的总电压增益不大于30dB, RL=1k。 (4)截止频率的误差不大于10%。 2、发挥部分 (1)放大器电压增益为40dB,输入正弦信号电压幅度为50mVpp,增益10dB步进可调,通频带为100Hz~100kHz。 (2)提高低通滤波器的带外衰减,2fc处放大器与滤波器的总电压增益不大于20dB,RL=1k。 (3)提高高通滤波器的带外衰减,0.5fc处放大器与滤波器的总电压增益不大于20dB, RL=1k。 (4)有设置参数显示功能,包括增益和滤波器选择。 (5)其他加分。 三、说明 1. 正弦输入信号由信号源提供。 2. 放大器输出端应留测试端子。
采样率与CAN总线波特率什么关系,如何判断CAN总线波特率是否够用?
例如:使用设备采集ECU的电流信号,设备采样频率为2KHZ,标准帧8字节数据帧CAN数据传输,传输的波特率为500Kps。如何计算此波特率是否足够?
为什么用libfaac编码的aac音频文件用播放器播放时速度却比正常速度快?
我采集原始的PCM帧数据(16KHZ采样)用libfaac库编码成AAC帧(ADTS格式) 然后写成.aac文件,当我用播放器播放时发现声音比正常速度要快,移植找不到原因,望大神指导,万分感谢! 一些基本参数如下: PCM : 16000HZ 160采样为1帧 ``` //使用 faac 库 aac_config.EncHandle = faacEncOpen(aac_config.SampleRate, \ aac_config.Channels, \ &aac_config.InputSamples, \ &aac_config.MaxOutputBytes); if(aac_config.EncHandle == NULL) { DEBUG_LOG("failed to call faacEncOpen()\n"); return NULL; } aac_config.PCMBuffer_size = aac_config.InputSamples * (aac_config.PCMBitSize / 8);//PCM_BUF_SIZE; aac_config.PCMBuffer = (unsigned char*)malloc(aac_config.PCMBuffer_size * sizeof(unsigned char)); aac_config.AACBuffer = (unsigned char*)malloc(aac_config.MaxOutputBytes * sizeof(unsigned char)); memset(aac_config.PCMBuffer, 0, aac_config.PCMBuffer_size); memset(aac_config.AACBuffer, 0, aac_config.MaxOutputBytes); //获取当前配置参数 faacEncConfigurationPtr pConfiguration = faacEncGetCurrentConfiguration(aac_config.EncHandle); //调整配置参数 #if 1 pConfiguration->inputFormat = FAAC_INPUT_16BIT; pConfiguration->outputFormat = 1; /*0 - raw; 1 - ADTS*/ pConfiguration->bitRate = PCM_SAMPLE_RATE; //库内部默认为64000 pConfiguration->useTns = 0; pConfiguration->allowMidside = 1; pConfiguration->shortctl = SHORTCTL_NORMAL; pConfiguration->aacObjectType = LOW; pConfiguration->mpegVersion = MPEG4;//MPEG2 //pConfiguration->useLfe = 1; #endif //重新设置回去 ret = faacEncSetConfiguration(aac_config.EncHandle,pConfiguration); if(ret != 1) { ERROR_LOG("failed to call faacEncSetConfiguration()\n"); return NULL; } ```
利用matlab进行微型电动汽车直流电动机驱动系统建模与控制仿真时,simulink仿真模型出现错误。
1、按照书上给出的步骤执行,但是simulink仿真出现问题,可能是传递函数转 化成模型时出错,不能正确执行。 2、代码如下: clear a11 clc % % % % % % % % % %电动机功率估算 m=1850; f=0.005;cd=0.49;A=3.8; vmax=60;i=0.1;vi=15; pv=(m*9.8*f/3600*vmax+cd*A/76140*vmax^3)/0.92; po=(m*9.8*f/3600*vi+cd*A/76140*vi^3+m*9.8*sin(atan(i))*vi/3600)/0.92; if pv>po p=pv; else p=po; end % % % % % % % % % %电动机驱动系统参数设计计算 R=0.025; %电枢电阻 L=0.018; %电枢电感 u=120; %额定电压 I=85; %额定电流 n=1500; %额定转速 ce=(u-R*I)/n; %电动机电动势系数0.04343 GD2=3.53; %飞轮转矩 cm=30/pi*ce; tm=GD2*R/375/cm/ce; %电动机时间常数 t1=L/R; %电枢回路电磁时间常数 ks=7.9; %触发整流装置放大系数 ts=0.0000667; %触发整流装置延迟系数,开关频率15KHZ alpha=10/1500; %转速反馈系数 beta=0.0908; %电流反馈系数 toi=0.002; %电流环滤波时间常数 t1=0.72; taoi=t1;%0.05; TI=ts+toi; KI=1/(2*TI); %电流开环增量 ki=KI*taoi*R/beta/ks; %电流调节器比例系数5.21 ton=0.2; Tn=2*TI+ton; taon=0.1207; h=5; KN=(h+1)/(2*h^2*Tn^2); %转速开环增益 kn=(h+1)*beta*ce*tm/(2*h*alpha*R*Tn); %转速调节器比例系数?? taodn=Tn*((4*h+2)/(h+1)); %?? [a,b,c,d]=linmod('diandong_che_double_loop'); sy=ss(a,b,c,d); %将系统的simulink结构图转换为状态空间模型 g=tf(sy); step(g,1); den=g.den{1}; %从传递函数中提取分母 num=g.num{1}; %从传递函数中提取分子 finals=polyval(num,0)/polyval(den,0); %求系统的稳态值 [y,t]=step(g); [ym,jmax]=max(y); Mp=100*(ym-finals)/finals; %求系统响应最大超调量 fprintf('电动车辆需求功率为= %3.2f KW\n',p) fprintf('系统最大超调量Mp= %3.3f% % \n',Mp) tp=t(jmax); fprintf('系统峰值时间tp=%3.3f s\n',tp) lt=length(t); while(y(lt)>0.98*finals)&&(y(lt)<1.02*finals) lt=lt-1; end tr=t(lt); fprintf('系统调整时间(2% % )tr=%3.3f s\n',tr )
基于VHDL语言 quartus2 9仿真时赋值了,但没有波形结果出来
![图片说明](https://img-ask.csdn.net/upload/202001/04/1578119543_34448.png)![图片说明](https://img-ask.csdn.net/upload/202001/04/1578119565_104409.png) 实现周期、占空比均可调的脉冲发生器。 (1)采用 1khz 的工作时钟; (2)脉冲周期 0.5s~6s,占空比 10%~90%; (3)可初始化:周期 2.5s,占空比 50% 但我改了 Time Period,Time offset,Duty cycle, period 1 ms;Offset 0; Duty cycle 50 也把end time改为了50ms 也试过把setting 里改了functional 还是没有结果
推送AAC音频流到FMS服务器,但客户端访问该音频流没有声音
小弟正在做一个使用RMTP协议将AAC音频流推送给FMS服务器的功能,但遇到了一些困难,望各路大神不吝赐教。 大概的情况是这样:我从纯AAC音频文件中将数据读取出来,通过librtmp的接口将音频数据推送给FMS,再用客户端浏览器访问音频。现在通过抓包可以看出,客户端是可以收到RTMP的音频包的,但不知为何无法播放出声音。 我分别在推送端--->FMS服务器 及 FMS服务器--->客户端进行了抓包,抓包文件链接如下 推送端--->FMS服务器抓包文件:http://download.csdn.net/detail/ceoofufo/6036377 FMS服务器--->客户端抓包文件:(已经上传,但迟迟看不到下载链接,可能是CSDN没有及时更新,文件名:问答附件--客户端收到FMS的数据抓包.pcap) AAC音频文件的相关参数:48KHz 2声道 AAC(Version 4)(LC) 万分感谢!
在STM32F103ZET6的处理器上,设置ADC1的采样频率为1KHz,采样精度为12位
使用IAR或者Keil软件写一段程序实现以下功能: 在STM32F103ZET6的处理器上,设置ADC1的采样频率为1KHz,采样精度为12位,对电压进行数据采集。
音频某一频段能量缺失
看音频语谱图的时候发现在4KHz的位置,有明显的一条黑线,请教一下这种情况是何原因导致的呢? ![图片说明](https://img-ask.csdn.net/upload/201910/09/1570585860_621731.png)
5G NR在已知band频率范围和带宽的情况下如何计算低中高三信道?
在4G LTE当中 已知band的频率范围和带宽计算低中高信道很简单,低和高信道都是用band的边沿加1/2带宽(高信道是高边沿减1/2带宽),中信道则是中间频点。 请教一下 5G当中是如何计算的?以N78(3300~3800MHz) 100带宽,SCS 30KHz为例,协议中给出的低中高分别是 Frequency ARFCN Low 3350.01 623334 Mid 3549.99 636666 High 3750 650000 很显然低信道距离低边沿是50.01MHz,而不是50MHz,希望大神帮忙解答一下,谢谢。
TTS生成的语音音质不清晰
采用MS TTS引擎,设置采样频率为8KHZ,16Bit, 将文本转换为wav文件时,音频音质不清晰,有杂音,有什么办法可以生成比较清晰的wav音频吗吗(8KHZ,16Bit采样条件下)?
关于MP4(fmp4)文件音视频时间轴同步的问题
问题描述: 我自己利用获取的 H264帧 和 AAC帧编码生成fmp4(fargment MP4)文件,各个box以及数据已经填充完毕,但最后播放发现音视频不同步,且导致了视频卡顿 **我的音视频源数据参数是**: H264 : 15帧/s (只有 I/P帧) PCM:采样率:16KHz 单声道 ---->编码成 AAC数据(大概10帧/秒),且帧率不固定,只是大致。 编码fmp4文件参数: 视频: Time scale 12288 (0X00003000) Duration:计算的实际h264帧这一帧和上一帧的时间差换算成的内部时长 音频: Time scale 44100 (0X0000AC44) Duration : 在网上找的填的固定值1024(编码用的采样点数)我也试过填充“这一帧和上一帧的时间差换算成的内部时长”也卡顿, 还有就是因为源数据编码帧并不均匀,导致有时生成的 moof+ mdat box里边的音频数据又是很少(就只有一两帧),不知道这样会不会有影响。 见下边几个关键参数截图: ![图片说明](https://img-ask.csdn.net/upload/201901/10/1547112437_413017.png) ![图片说明](https://img-ask.csdn.net/upload/201901/10/1547112447_486352.png) ![图片说明](https://img-ask.csdn.net/upload/201901/10/1547112467_855184.png) ![图片说明](https://img-ask.csdn.net/upload/201901/10/1547112475_672748.png) ![图片说明](https://img-ask.csdn.net/upload/201901/10/1547112488_246973.png) **谁能告诉我这几个参数应该怎样设置,且有着怎样的关系呢?**
解码出的pcm有问题,我要怎么修改增加代码?
#include <stdio.h> #include <stdlib.h> #include <string.h> #define __STDC_CONSTANT_MACROS #ifdef _WIN32 //Windows extern "C" { #include "libavcodec/avcodec.h" #include "libavformat/avformat.h" #include "libswresample/swresample.h" }; #else //Linux... #ifdef __cplusplus extern "C" { #endif #include <libavcodec/avcodec.h> #include <libavformat/avformat.h> #include <libswresample/swresample.h> #ifdef __cplusplus }; #endif #endif #define MAX_AUDIO_FRAME_SIZE 192000 // 1 second of 48khz 32bit audio int main(int argc, char* argv[]) { AVFormatContext *pFormatCtx; int i, audioStream; AVCodecContext *pCodecCtx; AVCodec *pCodec; AVPacket *packet; uint8_t *out_buffer; AVFrame *pFrame; int ret; uint32_t len = 0; int got_picture; int index = 0; int64_t in_channel_layout; struct SwrContext *au_convert_ctx; FILE *pFile=fopen("output.pcm", "wb"); char url[]="output.aac"; av_register_all(); avformat_network_init(); pFormatCtx = avformat_alloc_context(); //Open if(avformat_open_input(&pFormatCtx,url,NULL,NULL)!=0){ printf("Couldn't open input stream.\n"); return -1; } // Retrieve stream information if(avformat_find_stream_info(pFormatCtx,NULL)<0){ printf("Couldn't find stream information.\n"); return -1; } // Dump valid information onto standard error av_dump_format(pFormatCtx, 0, url, false); // Find the first audio stream audioStream=-1; for(i=0; i < pFormatCtx->nb_streams; i++) if(pFormatCtx->streams[i]->codec->codec_type==AVMEDIA_TYPE_AUDIO){ audioStream=i; break; } if(audioStream==-1){ printf("Didn't find a audio stream.\n"); return -1; } // Get a pointer to the codec context for the audio stream pCodecCtx=pFormatCtx->streams[audioStream]->codec; // Find the decoder for the audio stream pCodec=avcodec_find_decoder(pCodecCtx->codec_id); if(pCodec==NULL){ printf("Codec not found.\n"); return -1; } // Open codec if(avcodec_open2(pCodecCtx, pCodec,NULL)<0){ printf("Could not open codec.\n"); return -1; } packet=(AVPacket *)av_malloc(sizeof(AVPacket)); av_init_packet(packet); //Out Audio Param uint64_t out_channel_layout=AV_CH_LAYOUT_STEREO; //nb_samples: AAC-1024 MP3-1152 int out_nb_samples=pCodecCtx->frame_size; AVSampleFormat out_sample_fmt=AV_SAMPLE_FMT_S16; int out_sample_rate=44100; int out_channels=av_get_channel_layout_nb_channels(out_channel_layout); //Out Buffer Size int out_buffer_size=av_samples_get_buffer_size(NULL,out_channels ,out_nb_samples,out_sample_fmt, 1); out_buffer=(uint8_t *)av_malloc(MAX_AUDIO_FRAME_SIZE*2); pFrame=av_frame_alloc(); //FIX:Some Codec's Context Information is missing in_channel_layout=av_get_default_channel_layout(pCodecCtx->channels); //Swr au_convert_ctx = swr_alloc(); au_convert_ctx=swr_alloc_set_opts(au_convert_ctx,out_channel_layout, out_sample_fmt, out_sample_rate, in_channel_layout,pCodecCtx->sample_fmt , pCodecCtx->sample_rate,0, NULL); swr_init(au_convert_ctx); while(av_read_frame(pFormatCtx, packet)>=0){ if(packet->stream_index==audioStream){ ret = avcodec_decode_audio4( pCodecCtx, pFrame,&got_picture, packet); if ( ret < 0 ) { printf("Error in decoding audio frame.\n"); return -1; } if ( got_picture > 0 ){ swr_convert(au_convert_ctx,&out_buffer, MAX_AUDIO_FRAME_SIZE,(const uint8_t **)pFrame->data , pFrame->nb_samples); printf("index:%5d\t pts:%lld\t packet size:%d\n",index,packet->pts,packet->size); //Write PCM fwrite(out_buffer, 1, out_buffer_size, pFile); index++; } } av_free_packet(packet); } swr_free(&au_convert_ctx); fclose(pFile); av_free(out_buffer); // Close the codec avcodec_close(pCodecCtx); // Close the video file avformat_close_input(&pFormatCtx); return 0; }
一个信道的频率范围是502KHz~1520KHz,该信道的带宽是多少Hz
一个信道的频率范围是502KHz~1520KHz,该信道的带宽是多少Hz
c8051f020的12位AD采样
/******************************************************************************* 程序测量电压在外部ADC输入和打印   / /结果通过UART终端窗口。  / /系统时钟使用内部24.5 mhz振荡器成倍增加   / / 49 mhz的芯片上的锁相环。结果输出到UART的循环  / /设定的速度基于定时器2的延迟。这个循环定期读取  / / ADC值从一个全局变量,结果。 / / ADC使重复测量速度取决于SAMPLE_RATE使用   / /定时器3。每个ADC转换启动一个中断运行一个   / /平均函数。< INT_DEC >样品平均然后结果值更新。 / /每4的< INT_DEC >,你获得1点有效的决议。   / /例如,< INT_DEC > = 256获得你4位分辨率:4 ^ 4 = 256。 / / ADC输入多路复用器将是单端输入 ************************************************************************************/ #include <c8051f020.h> // SFR declarations #include <stdio.h> #include<intrins.h> /*******16位寄存器定义**********/ sfr16 ADC0 = 0xbe; //ADC0数据 sfr16 RCAP2 = 0xca; //定时器2自动重装 sfr16 RCAP3 = 0x92; //定时器3自动重装 sfr16 TMR2 = 0xcc; //定时器2 sfr16 TMR3 = 0x94; //定时器3 /**********全局常量***************/ #define BAUDRATE 115200 //串口通信的波特率 #define SYSCLK 22118400//外部晶振频率 #define SAMPLE_RATE 100000 //采样频率 #define INT_DEC 256 //积分抽取比采样并取平均值;由过采样并取平均值来提高ADC分辨率的相关 #define SAR_CLK 2500000 //ADC0转换时钟周期的计算 #define SAMPLE_DELAY 50 //采样之前的毫秒延时 sbit led = P1^6; //led = 1是否定 sbit sw1 = P3^7; //sw1 = 0转换开关 void PORT_INIT (void); void OSCILLATOR_INIT (void); void UART0_INIT(); void TIMER3_INIT(int counts); void ADC0_INIT(); void delay_ms(unsigned int ms); void delay4j(); /***********全局变量***********/ long result; // 减小的值 /*********主函数************/ void main() { long measurement; // 测量电压(mv) WDTCN = 0xde; //关闭看门狗 WDTCN = 0xad; OSCILLATOR_INIT(); //初始化晶振 PORT_INIT(); //交叉使能开关 UART0_INIT(); //初始化串口通信0; TIMER3_INIT(SYSCLK/SAMPLE_RATE);//初始化定时器3的溢出采样率 ADC0_INIT(); AD0EN = 1; //ADC0控制寄存器,使能ADC EA = 1; //打开所有中断(总体,但如果子中断关闭,那该中断依旧关闭) while(1) { EA = 0; //关闭中断 /*********12ADC的值是通过积分平均值的测量,数据存储在result中,为右对齐 AIN0.1的实测值为: Vref(mv) measure(mv) =----------------*result(bits) (2^12)-1(bits) ****************************/ measurement = result * 2430 / 4095; // measurement = result; EA = 1; //使能中断 printf("AIN0.1 voltage:%ld mv\n",measurement); // led = ~sw1; //LED反应状态的转换 // delay_ms(SAMPLE_DELAY);//延时50ms delay_ms(1); // delay4j(); } } /************交叉使能开关配置****************/ void PORT_INIT (void) { XBR0 = 0x04; // UART0 线路配置 XBR2 = 0x40; // 交叉使能,设置为弱上拉 P0MDOUT = 0x01; // enable TX0 as a push-pull output P1MDOUT = 0x40; // enable LED as push-pull output } /*************使用外部晶振作为系统时钟***********/ void OSCILLATOR_INIT (void) { int i; // delay counter OSCXCN = 0x67; // start external oscillator with // 22.1184MHz crystal for (i=0; i < 256; i++) ; // wait for oscillator to start while (!(OSCXCN & 0x80)) ; // Wait for crystal osc. to settle OSCICN = 0x88; // select external oscillator as SYSCLK // source and enable missing clock // detector } /************串口初始化****************/ void UART0_INIT() { SCON0 = 0x50; //UART0控制寄存器设置 TMOD = 0x20; //定时器1的方式寄存器 TH1 = -(SYSCLK/BAUDRATE/16); //定时器1波特率的重装值 CKCON = 0x10; //时钟控制寄存器设置,定时器1使用系统时钟 PCON = 0x80; //电源控制寄存器设置 TR1 = 1; //打开定时器1 TI0 = 1; //发送中断标志 } /*************定时器3的初始化*************/ void TIMER3_INIT(int counts) { TMR3CN = 0x02; //定时器3控制寄存器,停止定时器3,清除TF3,定时器3使用系统时钟 RCAP3 = -counts;//初始化定时器3重装 TMR3 = RCAP3; // 立即重新加载 EIE2 &= ~0x01; //扩展中断允许2寄存器 关闭所有中断 TMR3CN |= 0x04; //打开定时器3,且使用系统时钟 } /**************ADC0的初始化**********/ void ADC0_INIT() { ADC0CN = 0x04; //ADC0控制寄存器,禁止ADC0,一直跟踪方式, //ADC0没完成一次数据转换,当前没有进行数据转换 //定时器3溢出启动ADC0转换数据,ADC0H,ADC0L寄存器数据右对齐 REF0CN = 0x03; //关闭温度传感器,VREF输出缓冲区 AMX0CF = 0x00; //AIN为单端输入 AMX0SL = 0x03; //选择AIC0.1位模拟输入引脚 ADC0CF = (SYSCLK/SAR_CLK)<<3;//ADC转换时钟为2500000 ADC0CF |= 0x00; //设置转换时钟2500000,放大倍数为1 EIE2 |= 0x02; //允许ADC0数据转换结束产生中断请求 } /****************延时ms************/ void delay_ms(unsigned int ms) { CKCON &= ~0x20; // use SYSCLK/12 as timebase RCAP2 = -(SYSCLK/1000/12); // Timer 2 overflows at 1 kHz TMR2 = RCAP2; ET2 = 0; // Disable Timer 2 interrupts TR2 = 1; // Start Timer 2 while(ms) { TF2 = 0; // Clear flag to initialize while(!TF2); // Wait until timer overflows ms--; // Decrement ms } TR2 = 0; // Stop Timer 2 } /***************ADC0的中断*****************/ void ADC0_ISR (void) interrupt 15 { static unsigned int_dec=INT_DEC; // 集成计数器,当int_dec = 0时,置入一个新的结果 static long accumulator=0L; // 整合ADC采样,“0L”为将0转换成long型的 AD0INT = 0; // 清除AD数据转换成功标识符,重新开始下次采样 accumulator += ADC0; //读取ADC的值,并逐次累加 int_dec--; // 更新衰减计数器 if (int_dec == 0) // If zero, then post result { int_dec = INT_DEC; // Reset counter result = accumulator >> 8; accumulator = 0L; // Reset accumulator } } void delay4j() { _nop_(); _nop_(); _nop_(); _nop_(); } c8051f020的12位AD采样频率最高是100ksps,低频的时候可以,但是为什么转换频率为1kHZ的正弦波时数据会混乱呢,
嵌入式 关于STM32外部低速晶振不起振的问题求教
目前遇到了比较棘手的问题,在使用STM32过程中发现有小于1%比例的板子RTC晶振不起振的现象出现,请大家帮忙分析一下。 芯片:STM32F103RGT6 晶振:爱普生 32.768kHz无源晶振 MC146(Q13MC1461000600) 一、现象 1、目前现场不起振的问题装置用手指按压, 有部分装置可以起振,但是不稳定,有可能关机再次启动又不能起振。 2、从现场发回的不起振的问题装置,到公司后90%的问题装置都自动恢复正常,问题复现率很低。 3、存在少数装置放置几天,也有可能恢复正常。 二、 相关参数资料 晶振电路设计:![图片说明](https://img-ask.csdn.net/upload/201905/21/1558435444_675210.jpg) STM32手册推荐电路: ![图片说明](https://img-ask.csdn.net/upload/201905/21/1558435565_412384.jpg) 晶振参数表 匹配电容为6pF ![图片说明](https://img-ask.csdn.net/upload/201905/21/1558435592_46870.jpg) 三、 尝试的方法: 1.给问题板子的晶振两脚并联10M电阻,可以稳定起振 2.去除问题装置晶振两脚的并联电容也可以稳定起振。 四、 在STM32F103的官方手册中 ![图片说明](https://img-ask.csdn.net/upload/201905/21/1558435637_384904.jpg) 1、这个5pF的电容值是不是相当于芯片自带电容?换句话说,如果晶振推荐的匹配电容是6pF。那电路设计时是不是应该只再并联(6-5)pF的电容就可以了。还是说这个5pF不用考虑。 2、会不会是PCB板在超声波清洗的时候对晶振造成了损坏。 请大神们帮忙分析一下晶振不起振的正真的根本原因,谢谢!
C#录音,用的DirectX,录出来的声音的太小,而且录音这声音小的话就录不到
C#录音,用的DirectX,录出来的声音的太小,而且录音这声音小的话就录不到,我已经把win7电脑开到最大音量了,是声卡问题?还是程序代码问题?代码就是网上搜索下来的,部分代码如下: private WaveFormat CreateWaveFormat() { WaveFormat format = new WaveFormat(); format.FormatTag = WaveFormatTag.Pcm; // PCM format.SamplesPerSecond = 16000; // 采样率:16KHz format.BitsPerSample = 16; // 采样位数:16Bit format.Channels = 1; // 声道:Mono format.BlockAlign = (short)(format.Channels * (format.BitsPerSample / 8)); // 单位采样点的字节数 format.AverageBytesPerSecond = format.BlockAlign * format.SamplesPerSecond; return format; // 按照以上采样规格,可知采样1秒钟的字节数为 16000*2=32000B 约为31K 1. * }
蓝牙模块开发音频音乐输出中,如何调大模块的音频输出?
现在在做蓝牙模块开发,在使用CSR公司提供的Music Manager工具调音频的效果。其中有一项是“Speak Gain Settings”,而这一项中的最大值为 0-F(0dB,音量大小为+15)。现在我想要蓝牙模块输出为2dB(手机连接蓝牙模块后,手机播放1KHZ 0dB的测试信号,从模块中音频输出经电容去掉直流后的信号为2dB),我把其调到最大值0-F时输出的dB仍太小。我就在想是否有一个工具或者什么方法是否能加大此项设置中的最大值。并且在CSR提供的MusicManagerUserGuid中看到一段话:“ The Speaker Gain Settings can only be adjusted in DSP Monitoring mode and only temporarily override the default settings. For debugging purposes, this option allows the Speaker Gain setting to be temporarily adjusted. Speaker Gain determines the gain applied at the DAC which drives the loud speaker. For the final configuration, the volume table in the VM application must be edited. ”。 请问,是否这段英文中最后一句是否说明只要编辑这个volume table就可以修改?如果是这样子,那么我要在哪里修改、怎么修改? 我是蓝牙模块开发的初学者,多谢各位大侠指点。谢谢!
关于重采样的问题,刚学很多不懂
自己在matlab里面编的一个重采样程序,但是效果很差,而且输出前一段数据有错,有没有人能帮我看看? %input data fa = 8000; %%signal frequency fs = 44100; %%44.1kHz sampling frequency n = 1:64; x = sin(2*pi*fa*n/fs); lengthx = length(x); t = n*1000/128/fs; %plot(t,x);xlabel('time in ms'); % [y fs nbits] = wavread('acoustic.wav'); % x = y'; % lx = length(x); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %Resample parameters L1 = 8; M1 = 7; L2 = 4; M2 = 3; L3 = 10; M3 = 7; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%filters load filter.mat filter1 = b1; filter2 = b2; filter3 = b3; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %Initialize the subfilters %First Filter upFilter1 = decompose(filter1,L1); downFilter1 = decompose(filter1,M1); %Second Filter upFilter2 = decompose(filter2,L2); downFilter2 = decompose(filter2,M2); %Second Filter upFilter3 = decompose(filter3,L3); downFilter3 = decompose(filter3,M3); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %Polyphase Filtering %First Filter % %%upsampling intermediatex1 = zeros(L1,length(x)); x11 = zeros(L1,length(x)*L1); for i = 1:L1 intermediatex1(i,:) = filter(upFilter1(i,:),1,x); %%do the filtering before upsampling x11(i,:) = upsample(intermediatex1(i,:),L1); %%upsample by L, inserting L-1 zeros. end X1 = zeros(1,length(x)*L1); for i = 1:length(x) X1(L1*(i-1)+1:L1*(i-1)+L1) = x11(:,(i-1)*L1+1)'; end %%downsampling X1_down = [X1 zeros(1,M1-mod(length(X1),M1))]; output1 = zeros(1,length(X1_down)/M1); x1down = zeros(M1,length(X1_down)/M1); x11down = x1down; for i = 1:M1 for k = 1:length(X1_down)/M1 x1down(i,k) = X1_down(M1*(k-1)+i); end x11down(i,:) = filter(downFilter1(1,:),1,x1down(i,:)); output1 = output1 + x11down(i,:); end %Second Filter % %%upsampling intermediatex2 = zeros(L2,length(output1)); x22 = zeros(L2,length(output1)*L2); for i = 1:L2 intermediatex2(i,:) = filter(upFilter2(i,:),1,output1); %%do the filtering before upsampling x22(i,:) = upsample(intermediatex2(i,:),L2); %%upsample by L, inserting L-1 zeros. end X2 = zeros(1,length(output1)*L2); for i = 1:length(output1) X2(L2*(i-1)+1:L2*(i-1)+L2) = x22(:,(i-1)*L2+1)'; end %%downsampling X2_down = [X2 zeros(1,M2-mod(length(X2),M2))]; output2 = zeros(1,length(X2_down)/M2); x2down = zeros(M2,length(X2_down)/M2); x22down = x2down; for i = 1:M2 for k = 1:length(X2_down)/M2 x2down(i,k) = X2_down(M2*(k-1)+i); end x22down(i,:) = filter(downFilter2(1,:),1,x2down(i,:)); output2 = output2 + x22down(i,:); end %Third Filter % %%upsampling intermediatex3 = zeros(L3,length(output2)); x33 = zeros(L3,length(output2)*L3); for i = 1:L3 intermediatex3(i,:) = filter(upFilter3(i,:),1,output2); %%do the filtering before upsampling x33(i,:) = upsample(intermediatex3(i,:),L3); %%upsample by L, inserting L-1 zeros. end X3 = zeros(1,length(output2)*L3); for i = 1:length(output2) X3(L3*(i-1)+1:L3*(i-1)+L3) = x33(:,(i-1)*L3+1)'; end %%downsampling X3_down = [X3 zeros(1,M3-mod(length(X3),M3))]; output3 = zeros(1,length(X3_down)/M3); x3down = zeros(M3,length(X3_down)/M3); x33down = x3down; for i = 1:M3 for k = 1:length(X3_down)/M3 x3down(i,k) = X3_down(M3*(k-1)+i); end x33down(i,:) = filter(downFilter3(1,:),1,x3down(i,:)); output3 = output3 + x33down(i,:); end output3 = output3/max(output3); lout = length(output3); nx = 1:length(output3); xorigin = sin(2*pi*fa*nx/96000); error1 = xorigin - output3; yin = [0 0 resample(x,320,147)]; error2 = xorigin - yin; figure(1) subplot(3,1,1);plot(xorigin);title('True Signal'); subplot(3,1,2);plot(output3);title('Resampled Signal'); subplot(3,1,3);plot(error1);title('Error'); figure(2) subplot(3,1,1);plot(xorigin);title('True Signal'); subplot(3,1,2);plot(yin);title('Built-in Resampled Signal'); subplot(3,1,3);plot(error2);title('Error'); ------------------------------------------------ function x_decompose = decompose(x,factor) lx = length(x); if mod(lx,factor) ~= 0; X = [x zeros(1,factor-mod(lx,factor))]; else X = x; end x_decompose = zeros(factor,length(X)/factor); for i = 1:factor for k = 1:length(X)/factor x_decompose(i,k) = X(factor*(k-1)+i); end end end ``` ``` %Filter Generation fs = 44100; L1 = 8; M1 = 7; L2 = 4; M2 = 3; L3 = 10; M3 = 7; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % %%First Filter f1 = [20000 24000]; a1 = [1 0]; dev1 = [0.01 10^-8]; fs1 = fs*L1; [n1 fo1 ao1 w1] = firpmord(f1,a1,dev1,fs1); b1 = firpm(n1,fo1,ao1,w1); %%Second Filter f2 = [20160 30240]; a2 = [1 0]; dev2 = [0.01 10^-8]; fs2 = fs1*L2/M1; [n2 fo2 ao2 w2] = firpmord(f2,a2,dev2,fs2); b2 = firpm(n2,fo2,ao2,w2); %%Third Filter f3 = [16800 50400]; a3 = [1 0]; dev3 = [0.01 10^-8]; fs3 = fs2*L3/M2; [n3 fo3 ao3 w3] = firpmord(f3,a3,dev3,fs3); b3 = firpm(n3,fo3,ao3,w3); ``` ```
在信号重采样的时候,滤波器设计的指标怎么确定?
尝试把44.1kHz的信号转换成96kHz的信号。 把L/M=320/147 分解成 (8/7)(4/3)(10/7)的形式,可以知道截至频率应该等于 π/max(L,M)。 1. 但是具体每个滤波器应该怎么设计呢? 2. 还有我看了下matlab的resample函数的处理方法,不太明白这一段: ``` % Need to delay output so that downsampling by q hits center tap of filter. nz = floor(q-mod(Lhalf,q)); z = zeros(1,nz); h = [z h(:).']; % ensure that h is a row vector. Lhalf = Lhalf + nz; % Number of samples removed from beginning of output sequence % to compensate for delay of linear phase filter: delay = floor(ceil(Lhalf)/q); % Need to zero-pad so output length is exactly ceil(Lx*p/q). nz1 = 0; while ceil( ((Lx-1)*p+length(h)+nz1 )/q ) - delay < ceil(Lx*p/q) nz1 = nz1+1; end h = [h zeros(1,nz1)]; ```
相见恨晚的超实用网站
搞学习 知乎:www.zhihu.com 简答题:http://www.jiandati.com/ 网易公开课:https://open.163.com/ted/ 网易云课堂:https://study.163.com/ 中国大学MOOC:www.icourse163.org 网易云课堂:study.163.com 哔哩哔哩弹幕网:www.bilibili.com 我要自学网:www.51zxw
花了20分钟,给女朋友们写了一个web版群聊程序
参考博客 [1]https://www.byteslounge.com/tutorials/java-ee-html5-websocket-example
爬虫福利二 之 妹子图网MM批量下载
爬虫福利一:27报网MM批量下载    点击 看了本文,相信大家对爬虫一定会产生强烈的兴趣,激励自己去学习爬虫,在这里提前祝:大家学有所成! 目标网站:妹子图网 环境:Python3.x 相关第三方模块:requests、beautifulsoup4 Re:各位在测试时只需要将代码里的变量 path 指定为你当前系统要保存的路径,使用 python xxx.py 或IDE运行即可。
字节跳动视频编解码面经
引言 本文主要是记录一下面试字节跳动的经历。 三四月份投了字节跳动的实习(图形图像岗位),然后hr打电话过来问了一下会不会opengl,c++,shador,当时只会一点c++,其他两个都不会,也就直接被拒了。 七月初内推了字节跳动的提前批,因为内推没有具体的岗位,hr又打电话问要不要考虑一下图形图像岗,我说实习投过这个岗位不合适,不会opengl和shador,然后hr就说秋招更看重基础。我当时
Java学习的正确打开方式
在博主认为,对于入门级学习java的最佳学习方法莫过于视频+博客+书籍+总结,前三者博主将淋漓尽致地挥毫于这篇博客文章中,至于总结在于个人,实际上越到后面你会发现学习的最好方式就是阅读参考官方文档其次就是国内的书籍,博客次之,这又是一个层次了,这里暂时不提后面再谈。博主将为各位入门java保驾护航,各位只管冲鸭!!!上天是公平的,只要不辜负时间,时间自然不会辜负你。 何谓学习?博主所理解的学习,它
程序员必须掌握的核心算法有哪些?
由于我之前一直强调数据结构以及算法学习的重要性,所以就有一些读者经常问我,数据结构与算法应该要学习到哪个程度呢?,说实话,这个问题我不知道要怎么回答你,主要取决于你想学习到哪些程度,不过针对这个问题,我稍微总结一下我学过的算法知识点,以及我觉得值得学习的算法。这些算法与数据结构的学习大多数是零散的,并没有一本把他们全部覆盖的书籍。下面是我觉得值得学习的一些算法以及数据结构,当然,我也会整理一些看过
大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了
大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、电子书搜索 对于大部分程序员...
linux系列之常用运维命令整理笔录
本博客记录工作中需要的linux运维命令,大学时候开始接触linux,会一些基本操作,可是都没有整理起来,加上是做开发,不做运维,有些命令忘记了,所以现在整理成博客,当然vi,文件操作等就不介绍了,慢慢积累一些其它拓展的命令,博客不定时更新 顺便拉下票,我在参加csdn博客之星竞选,欢迎投票支持,每个QQ或者微信每天都可以投5票,扫二维码即可,http://m234140.nofollow.ax.
比特币原理详解
一、什么是比特币 比特币是一种电子货币,是一种基于密码学的货币,在2008年11月1日由中本聪发表比特币白皮书,文中提出了一种去中心化的电子记账系统,我们平时的电子现金是银行来记账,因为银行的背后是国家信用。去中心化电子记账系统是参与者共同记账。比特币可以防止主权危机、信用风险。其好处不多做赘述,这一层面介绍的文章很多,本文主要从更深层的技术原理角度进行介绍。 二、问题引入 假设现有4个人...
Python 基础(一):入门必备知识
目录1 标识符2 关键字3 引号4 编码5 输入输出6 缩进7 多行8 注释9 数据类型10 运算符10.1 常用运算符10.2 运算符优先级 1 标识符 标识符是编程时使用的名字,用于给变量、函数、语句块等命名,Python 中标识符由字母、数字、下划线组成,不能以数字开头,区分大小写。 以下划线开头的标识符有特殊含义,单下划线开头的标识符,如:_xxx ,表示不能直接访问的类属性,需通过类提供
这30个CSS选择器,你必须熟记(上)
关注前端达人,与你共同进步CSS的魅力就是让我们前端工程师像设计师一样进行网页的设计,我们能轻而易举的改变颜色、布局、制作出漂亮的影音效果等等,我们只需要改几行代码,不需...
国产开源API网关项目进入Apache孵化器:APISIX
点击蓝色“程序猿DD”关注我回复“资源”获取独家整理的学习资料!近日,又有一个开源项目加入了这个Java开源界大名鼎鼎的Apache基金会,开始进行孵化器。项目名称:AP...
程序员接私活怎样防止做完了不给钱?
首先跟大家说明一点,我们做 IT 类的外包开发,是非标品开发,所以很有可能在开发过程中会有这样那样的需求修改,而这种需求修改很容易造成扯皮,进而影响到费用支付,甚至出现做完了项目收不到钱的情况。 那么,怎么保证自己的薪酬安全呢? 我们在开工前,一定要做好一些证据方面的准备(也就是“讨薪”的理论依据),这其中最重要的就是需求文档和验收标准。一定要让需求方提供这两个文档资料作为开发的基础。之后开发
网页实现一个简单的音乐播放器(大佬别看。(⊙﹏⊙))
今天闲着无事,就想写点东西。然后听了下歌,就打算写个播放器。 于是乎用h5 audio的加上js简单的播放器完工了。 欢迎 改进 留言。 演示地点跳到演示地点 html代码如下`&lt;!DOCTYPE html&gt; &lt;html&gt; &lt;head&gt; &lt;title&gt;music&lt;/title&gt; &lt;meta charset="utf-8"&gt
Python十大装B语法
Python 是一种代表简单思想的语言,其语法相对简单,很容易上手。不过,如果就此小视 Python 语法的精妙和深邃,那就大错特错了。本文精心筛选了最能展现 Python 语法之精妙的十个知识点,并附上详细的实例代码。如能在实战中融会贯通、灵活使用,必将使代码更为精炼、高效,同时也会极大提升代码B格,使之看上去更老练,读起来更优雅。 1. for - else 什么?不是 if 和 else 才
数据库优化 - SQL优化
前面一篇文章从实例的角度进行数据库优化,通过配置一些参数让数据库性能达到最优。但是一些“不好”的SQL也会导致数据库查询变慢,影响业务流程。本文从SQL角度进行数据库优化,提升SQL运行效率。 判断问题SQL 判断SQL是否有问题时可以通过两个表象进行判断: 系统级别表象 CPU消耗严重 IO等待严重 页面响应时间过长
2019年11月中国大陆编程语言排行榜
2019年11月2日,我统计了某招聘网站,获得有效程序员招聘数据9万条。针对招聘信息,提取编程语言关键字,并统计如下: 编程语言比例 rank pl_ percentage 1 java 33.62% 2 c/c++ 16.42% 3 c_sharp 12.82% 4 javascript 12.31% 5 python 7.93% 6 go 7.25% 7
通俗易懂地给女朋友讲:线程池的内部原理
餐厅的约会 餐盘在灯光的照耀下格外晶莹洁白,女朋友拿起红酒杯轻轻地抿了一小口,对我说:“经常听你说线程池,到底线程池到底是个什么原理?”我楞了一下,心里想女朋友今天是怎么了,怎么突然问出这么专业的问题,但做为一个专业人士在女朋友面前也不能露怯啊,想了一下便说:“我先给你讲讲我前同事老王的故事吧!” 大龄程序员老王 老王是一个已经北漂十多年的程序员,岁数大了,加班加不动了,升迁也无望,于是拿着手里
经典算法(5)杨辉三角
杨辉三角 是经典算法,这篇博客对它的算法思想进行了讲解,并有完整的代码实现。
编写Spring MVC控制器的14个技巧
本期目录 1.使用@Controller构造型 2.实现控制器接口 3.扩展AbstractController类 4.为处理程序方法指定URL映射 5.为处理程序方法指定HTTP请求方法 6.将请求参数映射到处理程序方法 7.返回模型和视图 8.将对象放入模型 9.处理程序方法中的重定向 10.处理表格提交和表格验证 11.处理文件上传 12.在控制器中自动装配业务类 ...
腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹?
昨天,有网友私信我,说去阿里面试,彻底的被打击到了。问了为什么网上大量使用ThreadLocal的源码都会加上private static?他被难住了,因为他从来都没有考虑过这个问题。无独有偶,今天笔者又发现有网友吐槽了一道腾讯的面试题,我们一起来看看。 腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹? 在互联网职场论坛,一名程序员发帖求助到。二面腾讯,其中一个算法题:64匹
面试官:你连RESTful都不知道我怎么敢要你?
面试官:了解RESTful吗? 我:听说过。 面试官:那什么是RESTful? 我:就是用起来很规范,挺好的 面试官:是RESTful挺好的,还是自我感觉挺好的 我:都挺好的。 面试官:… 把门关上。 我:… 要干嘛?先关上再说。 面试官:我说出去把门关上。 我:what ?,夺门而去 文章目录01 前言02 RESTful的来源03 RESTful6大原则1. C-S架构2. 无状态3.统一的接
求小姐姐抠图竟遭白眼?痛定思痛,我决定用 Python 自力更生!
点击蓝色“Python空间”关注我丫加个“星标”,每天一起快乐的学习大家好,我是 Rocky0429,一个刚恰完午饭,正在用刷网页浪费生命的蒟蒻...一堆堆无聊八卦信息的网页内容慢慢使我的双眼模糊,一个哈欠打出了三斤老泪,就在此时我看到了一张图片:是谁!是谁把我女朋友的照片放出来的!awsl!太好看了叭...等等,那个背景上的一堆鬼画符是什么鬼?!真是看不下去!叔叔婶婶能忍,隔壁老王的三姨妈的四表...
为啥国人偏爱Mybatis,而老外喜欢Hibernate/JPA呢?
关于SQL和ORM的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行了一番讨论,感触还是有一些,于是就有了今天这篇文。 声明:本文不会下关于Mybatis和JPA两个持久层框架哪个更好这样的结论。只是摆事实,讲道理,所以,请各位看官勿喷。 一、事件起因 关于Mybatis和JPA孰优孰劣的问题,争论已经很多年了。一直也没有结论,毕竟每个人的喜好和习惯是大不相同的。我也看
SQL-小白最佳入门sql查询一
不要偷偷的查询我的个人资料,即使你再喜欢我,也不要这样,真的不好;
项目中的if else太多了,该怎么重构?
介绍 最近跟着公司的大佬开发了一款IM系统,类似QQ和微信哈,就是聊天软件。我们有一部分业务逻辑是这样的 if (msgType = "文本") { // dosomething } else if(msgType = "图片") { // doshomething } else if(msgType = "视频") { // doshomething } else { // doshom...
致 Python 初学者
欢迎来到“Python进阶”专栏!来到这里的每一位同学,应该大致上学习了很多 Python 的基础知识,正在努力成长的过程中。在此期间,一定遇到了很多的困惑,对未来的学习方向感到迷茫。我非常理解你们所面临的处境。我从2007年开始接触 python 这门编程语言,从2009年开始单一使用 python 应对所有的开发工作,直至今天。回顾自己的学习过程,也曾经遇到过无数的困难,也曾经迷茫过、困惑过。开办这个专栏,正是为了帮助像我当年一样困惑的 Python 初学者走出困境、快速成长。希望我的经验能真正帮到你
“狗屁不通文章生成器”登顶GitHub热榜,分分钟写出万字形式主义大作
一、垃圾文字生成器介绍 最近在浏览GitHub的时候,发现了这样一个骨骼清奇的雷人项目,而且热度还特别高。 项目中文名:狗屁不通文章生成器 项目英文名:BullshitGenerator 根据作者的介绍,他是偶尔需要一些中文文字用于GUI开发时测试文本渲染,因此开发了这个废话生成器。但由于生成的废话实在是太过富于哲理,所以最近已经被小伙伴们给玩坏了。 他的文风可能是这样的: 你发现,...
程序员:我终于知道post和get的区别
是一个老生常谈的话题,然而随着不断的学习,对于以前的认识有很多误区,所以还是需要不断地总结的,学而时习之,不亦说乎
《程序人生》系列-这个程序员只用了20行代码就拿了冠军
你知道的越多,你不知道的越多 点赞再看,养成习惯GitHub上已经开源https://github.com/JavaFamily,有一线大厂面试点脑图,欢迎Star和完善 前言 这一期不算《吊打面试官》系列的,所有没前言我直接开始。 絮叨 本来应该是没有这期的,看过我上期的小伙伴应该是知道的嘛,双十一比较忙嘛,要值班又要去帮忙拍摄年会的视频素材,还得搞个程序员一天的Vlog,还要写BU...
相关热词 c#选择结构应用基本算法 c# 收到udp包后回包 c#oracle 头文件 c# 序列化对象 自定义 c# tcp 心跳 c# ice连接服务端 c# md5 解密 c# 文字导航控件 c#注册dll文件 c#安装.net
立即提问