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

网站宽度960wordpress禁用评论

网站宽度960,wordpress禁用评论,163免费邮箱登录入口,云南百度推广开户音频延时测试方法有以下几种 1、使用专业的测试设备,通过专业的音频测试仪器可以准确测量音频延时,如常见声学分析仪、信号发生器、声卡Smaart(介绍测试延时方法链接:https://blog.csdn.net/weixin_48408892/article/details/1273…

音频延时测试方法有以下几种
1、使用专业的测试设备,通过专业的音频测试仪器可以准确测量音频延时,如常见声学分析仪、信号发生器、声卡+Smaart(介绍测试延时方法链接:https://blog.csdn.net/weixin_48408892/article/details/127318158?spm=1001.2014.3001.5501)等等。
2、手动测量:可以通过在音频信号进入和离开设备时手动观察信号波形的变化,如从录音设备中录入一个短促的声音,同时再监听设备中观察声音的回放情况,以此来判断音频延时的大小。
3、使用软件测试:通过电脑或手机上的特殊软件来测试音频延时,如Voicemeeter Bannana。

无论用哪种方法都需要注意测试准确性,尽量减少外部干扰。同时,测试结果会受到设备类型,连接方法等因素影响,最好多次测试以获得更准确的数据。
还有通过自定义软件方式实现延时测试,比较2笔音频buf,记录时间戳,确认音频一致性后,计算时间差即延时。
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <unistd.h>
#include <fcntl.h>
#include <string.h>
#include <sys/ioctl.h>
#include <sys/time.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <linux/soundcard.h>

#define SAMPLE_RATE 44100 // 采样率 Hz
#define SAMPLE_SIZE 2 // 采样长度,2字节
#define CHANNELS 2 // 声道数

#define DEVICE_1 “/dev/dsp” // 音频设备路径 1
#define DEVICE_2 “/dev/dsp1” // 音频设备路径 2

// 计算两个时间戳之间的差值(微秒)
unsigned long diff_time(struct timeval *t1, struct timeval *t2)
{
return (t2->tv_sec - t1->tv_sec) * 1000000 + (t2->tv_usec - t1->tv_usec);
}

int main()
{
int fd1, fd2; // 文件描述符
int bufsize; // 缓冲区大小
char *buff1, *buff2; // 缓冲区指针
struct timeval t1, t2; // 时间戳
int i, j; // 循环变量
int chan=CHANNELS;
// 打开音频设备 1
fd1 = open(DEVICE_1 , O_RDONLY);
if (fd1 < 0) {
fprintf(stderr, “Failed to open %s: %s\n”, COREINPUTREC, strerror(errno));
exit(EXIT_FAILURE);
}
// 打开音频设备 2
fd2 = open(DEVICE_2, O_RDONLY);
if (fd2 < 0) {
fprintf(stderr, “Failed to open %s: %s\n”, COREOUTPUTREC, strerror(errno));
exit(EXIT_FAILURE);
}
// 设置音频设备参数
int format = AFMT_S16_LE;
if (ioctl(fd1, SNDCTL_DSP_SETFMT, &format) == -1) {
fprintf(stderr, “Failed to set format: %s\n”, strerror(errno));
exit(EXIT_FAILURE);
}
if (ioctl(fd1, SNDCTL_DSP_CHANNELS, &chan) == -1) {
fprintf(stderr, “Failed to set channels: %s\n”, strerror(errno));
exit(EXIT_FAILURE);
}
int speed = SAMPLE_RATE;
if (ioctl(fd1, SNDCTL_DSP_SPEED, &speed) == -1) {
fprintf(stderr, “Failed to set speed: %s\n”, strerror(errno));
exit(EXIT_FAILURE);
}
// 分配缓冲区
bufsize = chan * SAMPLE_SIZE * SAMPLE_RATE / 10; // 每次读取10毫秒的数据
buff1 = (char *)malloc(bufsize);
buff2 = (char *)malloc(bufsize);
// 循环读取数据,每次读取5次数据
for (i = 0; i < 5; i++) {
// 同时读取2个设备的数据
if (read(fd1, buff1, bufsize) == -1) {
fprintf(stderr, “Failed to read data: %s\n”, strerror(errno));
exit(EXIT_FAILURE);
}
if (read(fd2, buff2, bufsize) == -1) {
fprintf(stderr, “Failed to read data: %s\n”, strerror(errno));
exit(EXIT_FAILURE);
}
// 记录时间戳
gettimeofday(&t1, NULL);
// 循环查找延迟
for (j = 0; j < bufsize; j += SAMPLE_SIZE * CHANNELS) {
// 判断第一个缓冲区是否包含第二个缓冲区的数据
if (memcmp(buff1 + j, buff2, SAMPLE_SIZE * CHANNELS) == 0) {
// 计算延迟时间
gettimeofday(&t2, NULL);
printf(“延迟:%ld 微秒\n”, diff_time(&t1, &t2));
break;
}
}
}
// 释放缓冲区
free(buff1);
free(buff2);
// 关闭音频设备
close(fd1);
close(fd2);
return 0;
}
以上代码根据实际需要进行再调整(不适合超过10ms延时音频测量),如间隔10ms读取一次数据。。

http://www.yayakq.cn/news/339728/

相关文章:

  • 广东网站建设怎么选聚名网页版
  • 建设手机银行的网站手机app客户端做网站
  • 西宁哪家网络公司做网站好网络系统集成论文
  • 猪八戒网站开发合同wordpress自动标签页
  • 示范校建设平台网站典型案例中国网创官方网站
  • 教你做网站温州 公司 网站
  • 中国互联网站建设金华兰溪网站建设
  • 怎么建立一个网站?logo定制免费
  • 电商网站是获取流量网站建设指南 读书心得
  • e龙岩网站又一个wordpress博客
  • 建设网站方案 ppt海南住房和城乡建设部网站
  • 网页是网站吗从做系统找不到以前的网站
  • 自己怎么做电影网站可以赚钱吗江西专业的网站建设公司
  • 中江县规划和建设局网站东莞seo技术培训
  • 北京网站seo优化排名智能网站建设公司排名
  • 网站如何做竞价宁波网站建设公司哪有
  • 佛山网站优化怎么做北京好的网站设计公司
  • 电子商务网站模板免费下载网站建设 php
  • 论坛网站建设软件中铁三局招聘信息2022
  • 品牌策划 网站源码网站建设中企动力公司
  • 网站关键字排名优化昆山网站开发
  • 杭州建设教育网站南京企业网
  • 电子商务网站建设 iis如何在手机上做app
  • 咸阳网站建设xymokj西安建设工程网站
  • 网站突然打不开是什么原因容桂网站制作公司
  • 做建材的网站好名字上海今天新闻头条新闻
  • 网站ftp上传到空间上海的公司地址有哪些
  • 广州建网站价格昆明pc网站建设
  • 做网站联系公司做网站需要提供什么
  • 网站创建器淮南网站建设费用