Linux下wav文件播放速度问题
最近在linux下做了一个播放wav文件的小程序。
我先自己录制了一个wav文件,采样频率为48000,立体声,采样格式为16bit。
在我播放的时候,我首先打开设备,然后设置。但是wav播放速度很慢。以下是我的设置:
int format;
format = AFMT_S16_LE;
if (ioctl(audio_fd, SNDCTL_DSP_SETFMT, &format) == -1)
{
/* fatal error */
printf("SNDCTL_DSP_SETFMT error\n");
return -1;
}
if (format != AFMT_S16_LE)
{
/* 本设备不支持选择的采样格式. */
printf("sep4020 oss driver does not support AFMT_S16_LE");
}
/*设置通道数*/
int channels = 2; /* 1=mono, 2=stereo */
if (ioctl(audio_fd, SNDCTL_DSP_CHANNELS, &channels) == -1)
{
/* Fatal error */
printf("SNDCTL_DSP_CHANNELS error");
return -1;
}
if (channels != 2)
{
/* 本设备不支持立体声模式 ... */
printf("sep4020 oss driver does ");
}
/*设置采样速率*/
int speed = 48000;
if (ioctl(audio_fd, SNDCTL_DSP_SPEED, &speed)==-1)
{
/* Fatal error */
printf("SNDCTL_DSP_SPEED error\n");
return -1;
}
printf("the wav speed is %d\n",speed);
但是如果我把speed扩大一倍(int speed = 48000 * 2;),播放就正常了,不知道问什么,哪位大哥帮忙解答一下啊~~~