资源简介
想要实现局域网内的两台Linux主机实现对讲功能。于是就写了此代码,但只能实现一端采集语音,一端播放语音,要实现实时对讲还需要多个线程,多个套接字。此段代码能实现基本的一端录音,一端播放。但是可能还有点问题,就是时间长了,可能延时较大。由于是基于OSS的,所以执行时应加padsp,如下所示:
gcc -o udp-client udp-client.c
padsp ./udp-client IP
gcc -o udp-server udp-server.c
padsp ./udp-server
代码片段和文件信息
//udp-dsp-client.c
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
//录音频率
#define RATE 88200
//量化位数
#define SIZE 16
//声道数目
#define CHANNELS 2
//缓冲区大小
#define RSIZE 2048
//保存录取的音频数据
unsigned char buf[RSIZE];
int main(int argcchar *argv[])
{
int fdsockfd;
int status;
int arg;
struct sockaddr_in s_addr;
if((sockfd=socket(AF_INETSOCK_DGRAM0))==-1)
{
perror(“socket“);
exit(errno);
}
else
printf(“creat sockfd success!.\n\r“);
s_addr.sin_family=AF_INET;
s_addr.sin_port=htons(7000);
if(argc!=2)
{
printf(“用法:./udp-dsp-client IP地址。\n“);
return 1;
}
else
s_addr.sin_addr.s_addr=inet_addr(argv[1]);
bzero ( & (s_addr.sin_zero)8);
/*************读方式打开音频设备********************************************************************************/
fd= open(“/dev/dsp“O_RDONLY0777);
if(fd < 0)
{
perror(“Cannot open /dev/dsp device“);
return 1;
}
//设置采样的量化位数
arg = SIZE;
status = ioctl(fdSOUND_PCM_WRITE_BITS&arg);
if(status == -1)
{
perror(“Connet set SOUND_PCM_WRITE_BITS “);
return -1;
}
//设置采样时的声道数目
arg = CHANNELS;
status = ioctl(fdSOUND_PCM_WRITE_CHANNELS&arg);
if(status == -1)
{
perror(“Connet set SOUND_PCM_WRITE_CHANNELS “);
return -1;
}
//设置采样时的频率
arg = RATE;
status = ioctl(fdSOUND_PCM_WRITE_RATE&arg);
if(status == -1)
{
perror(“Connet set SOUND_PCM_WRITE_RATE “);
return -1;
}
int readNumsendNum;
while(1)
{
//从声卡读语音数据
readNum = read(fdbufRSIZE);
if(readNum==-1)
{
perror(“read wrong number of bytes\n“);
}
//发送语音数据
sendNum=sendto(sockfdbufreadNum0(struct sockaddr * )& s_addrsizeof(struct sockaddr));
if(sendNum==-1)
{
printf(“sendto error\n“);
break;
}
}
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2014-10-27 10:53 udp\
文件 2059 2014-10-24 16:33 udp\udp-client.c
文件 2375 2014-10-20 21:16 udp\udp-server.c
- 上一篇:大型(双核心)网络综合实验
- 下一篇:网站后台扫描工具
相关资源
- linux语音聊天
- chkconfig.deb
- 老王2018Linux运维.zip
- Quectel_LTE&5G_Linux_USB_Driver_User_Guide_V2.
- UDP通信.rar
- kali-linux-2017.3-vm-i386 32位
- linux-KVM虚拟机GPU透传操作步骤.docx
- mcp23017 linux 驱动 支持扩展io中断
- Linux下sar工具使用
- linux高性能服务器编程源码66818
- windows-linux基线离线扫描脚本.zip
- SLE-15-SP2-Full-x86_64-GM-Media2.iso
- iMX6从uboot到linux启动完成一直保持LO
- 基于Linux的模拟文件系统管理的设计与
- 基于UDP的聊天程序
- 嵌入式系统linux学习心得
- centos-6.4-x86_64位百度云链接
- unix linux 等的xerces安装及配置
- Linux试题
- linux下telnet源代码
- Linux 0.11下信号量的简单实现——用生
- linux ubuntu
- linux下多线程socket通信完整源码文件
- 深入理解Linux内核第三版中文版+英文
- 最全Linux C 库函数官方中文API手册
- UbuntuLinux下通过ndiswrapper安装无线网卡
- deepin-scrot
- linux下Questasim10/Modelsim安装以及破解方
- how linux works 精通linux 中文版 第二版
- 在Linux环境下模拟实现简单命令解释器
评论
共有 条评论