当前位置: 首页 > news >正文

重庆网站排名外包成立一家公司的基本流程

重庆网站排名外包,成立一家公司的基本流程,dw做的网站怎么让别人看到,观澜网站建设相关文章(干货)Ai音箱和Linux音频驱动小谈Linux ALSA 图解我在MTK平台下调试音频ALSA我们知道声音是模拟信号#xff0c;模拟信号转成数字信号就一定有大小#xff0c;既然有大小#xff0c;那我们就需要开辟内存来保存这些数据。---- 我们知道#xff0c;视频流的一帧就是… 相关文章(干货)Ai音箱和Linux音频驱动小谈Linux ALSA 图解我在MTK平台下调试音频ALSA我们知道声音是模拟信号模拟信号转成数字信号就一定有大小既然有大小那我们就需要开辟内存来保存这些数据。---- 我们知道视频流的一帧就是一张图像 ------ 但是音频不一样音频的一帧不能表示是一句话因为你不知道一个人说话的时间长度。java读取音频代码int bufferLen  mSampleRateInHz * channels * 2 / 10; // 100ms data//int bufferLen  2048;if ((channels  1)  (mSampleRateInHz  32000)  (mAudioSource  6)  (mMaxChannels  0)){ // get raw databufferLen  16000 * mMaxChannels * 2 / 10; // 100ms data}byte[] buffer  new byte[bufferLen];mAudioRecorder  new AudioRecord(mAudioSource, mSampleRateInHz, mChannelConfig,AudioFormat.ENCODING_PCM_16BIT, bufferLen * 10); //1 sec bufferwhile(true){size  mAudioRecorder.read(buffer, 0, bufferLen); //100ms} tinycap 里面的 pcm_read 代码int pcm_read(struct pcm *pcm, void *data, unsigned int count) {struct snd_xferi x;if (!(pcm-flags  PCM_IN))return -EINVAL;x.buf  data;x.frames  count / (pcm-config.channels *pcm_format_to_bits(pcm-config.format) / 8);for (;;) {if (!pcm-running) {if (pcm_start(pcm)  0) {fprintf(stderr, start error);return -errno;}}if (ioctl(pcm-fd, SNDRV_PCM_IOCTL_READI_FRAMES, x)) {pcm-prepared  0;pcm-running  0;if (errno  EPIPE) {/* we failed to make our window -- try to restart */pcm-underruns;continue;}return oops(pcm, errno, cannot read stream data);}return 0;} } 提炼下重点我们在里面看的一个英文单词 frames frames 相当一帧的数据。----但是这个一帧跟视频流里面的一张图像又不是一个概念这里的一帧相当于声音里面的最小计量单位。音频帧图解解释一下上面的图片假设我们使用的是一个立体声 16位 16k的音频流不管是录音还是播放都一样那么立体声 2通道1次ADC转换样本数据是 16bits 2bytes1个帧 代表 所有通道的ADC转换数据。那么我们现在是双通道所以1帧 通道数 * 样本大小bytes 2 * 2 4bytes为了能支持2 * 16k的采样率系统必须支持如下的速度bsp_rate (通道数) * 1个样本长度 * 采样率 1帧 * 采样率 2 * 2 *16k 64000bytes/sec秒假设现在 alsa每秒中断DMA一次。那么我们每秒都需要64000bytes数据准备好才能满足一个 双通道 16 位 16k的音频流。如果半秒中断一次那么每次中断就是 64000bytes/ 2 32000bytes如果我们100ms 产生一次中断那么每次中断就是 64000bytes / 10 6400bytes我们可以通过设置period size 来控制pcm中断的产生。反推一下---- 如果我们设置一个16位双通道16k的音频流 并且每次都有1600帧数据---- 4 byte * 1600frams 6400字节---- 一次中断会需要6400字节的数据----那么他就是100ms中断一次「看上面的推断」。alsa会自己适应实际的buffer_size 和period_size根据请求的通道数和他们其他的一些属性。把音频格式转换成bits的代码unsigned int pcm_format_to_bits(enum pcm_format format) {switch (format) {case PCM_FORMAT_S32_LE:case PCM_FORMAT_S24_LE:return 32;case PCM_FORMAT_S24_3LE:return 24;default:case PCM_FORMAT_S16_LE:return 16;}; } 我们会使用这个函数拿到对应格式的音频bit「正常是16bit 和 32bit」但是我们读写数据是字节对齐bytes对齐的这也是我们看到很多地方有除以8这个操作的原因。 x.buf  data;x.frames  count / (pcm-config.channels *pcm_format_to_bits(pcm-config.format) / 8); 测试的小程序---- 用来录音的测试程序#include stdio.h#define UNUSED(x) (void)(x)int main(int argc, char **argv) {UNUSED(argc);UNUSED(argv);char *cmd  tinycap /sdcard/1.pcm -D 0 -d 3 -r 16000 -c 2 -b 16;char buf[256];FILE *fp  popen(cmd, r);for (int i0; i16; i) {int result  fread(buf, 1, sizeof(buf), fp);printf(read %d bytes\n, result);}pclose(fp);return 0; }这个程序会打开声卡 0 第 3 个pcm通路去录音。我们这里没有设置「-p」这个属性加上这个属性之后就会知道在1秒内的中断次数从而知道1秒内的音频大小了。当然了我们不设置也会有一个默认值的。  推荐阅读    专辑|Linux文章汇总    专辑|程序人生    专辑|C语言嵌入式Linux微信扫描二维码关注我的公众号
http://www.huolong8.cn/news/398252/

相关文章:

  • 重庆做石材的网站企业网站运营方案
  • 网站开发通用流程图做打鱼网站需要多少钱
  • 个人站长做哪些网站好做游戏开发需要学哪些技术
  • 钓鱼网站下载安装江苏做网站的公司
  • 微信网站系统某网站栏目策划
  • 爱星光(istar)高端网站建设全国网络维护的公司排名
  • 德清做网站局域网视频网站搭建
  • 网站单页在线制作wordpress知乎
  • 网站设计网站项目流程图怎样免费建一个网站
  • 做网站的视频怎么做外贸网站seo
  • 门户网站属于新媒体吗郑州网络营销推广公司
  • 平阳门户网站建设wordpress轻论坛主题
  • 合肥专业做公司网站地方门户网站带手机版
  • 做网站用win还是li园区做网站的好处
  • 西安建站模板温州网页制作设计营销
  • 从域名到网站创建个人网站
  • 做第三方seo优化网站seo整体优化步骤怎么写
  • 三种分销渠道成功的网站不仅仅是优化排
  • 有没有做衣服的网站吗制作网页的基本技术标准
  • 广州网站建设信息科技有限公司资深的家居行业网站模板
  • 网站制图软件产品推广计划方案
  • 村建站属于哪个部门靖江做网站的
  • 上海崇明林业建设有限公司网站彩页设计网站
  • logo网站设计图片店面门头设计网站
  • 做网站杭州做网站流程图
  • 上班没事做看什么网站融资网站建设重点
  • 公司网站建设算什么费用品牌运营策略有哪些
  • 自己做图片的网站链接深圳建网站的网络公司
  • 七星彩网站建设网络营销的定义是什么
  • 哈尔滨网站建设 seowordpress主页 摘要