各位大虾,我在学着写一个WAV文件播放程序是候遇到了一系列问题:
1。首先是/dev/dsp文件打不开,但我看了/dev下面dsp确实存在,我用xmms放了一下MP3,确认能正确播放,有声音,过了一段时间大约10分钟左右,/dev/dsp又可以打开了,不知道是为什么!!!
2,打开了dsp后,播放WAV文件,是杂音,发现好象是参数的设置有问题,部分代码如下:
qDebug ("Header.BitRes= %d ,Header.Frequency =%d ,channels = %d" , Header.BitRes ,Header.Frequency, Header.Channels) ;
if ( (dspfd = open ("/dev/dsp" , O_RDWR)) < 0)
QMessageBox::message("Help", "help for this data5") ;
if ( ioctl ( dspfd, SOUND_PCM_WRITE_BITS, &Header.BitRes ) == -1)
QMessageBox::message("Erro", "SOUND_PCM_WRITE_BITS is Fault") ;
if ( ioctl ( dspfd, SOUND_PCM_WRITE_CHANNELS, &Header.Channels ) == -1)
QMessageBox::message("Erro", "SOUND_PCM_WRITE_CHANNELS is Fault") ;
if ( ioctl ( dspfd, SOUND_PCM_WRITE_RATE, &Header.Frequency ) == -1)
QMessageBox::message("Erro", "SOUND_PCM_WRITE_RATE is Fault") ;
qDebug ("Header.BitRes= %d ,Header.Frequency =%d ,channels = %d" , Header.BitRes ,Header.Frequency, Header.Channels) ;
write ( dspfd , wavdata ,sizeof(wavdata) ) ;
两个qDebug的输出如下:
Header.BitRes= 8 ,Header.Frequency =16000 ,channels = 1
Header.BitRes= 16 ,Header.Frequency =48000 ,channels = 2
发现 IOCTL后,参数都被它该了,说明设置不成功,请问这个是什么问题。。。。请大家指点迷
津!!
致版主:我不知道这个问题应该发到哪个版面,如果不当话,请帮忙移到合适的版面,谢谢!
[ 此贴被ppbbcc在2007-02-07 11:09重新编辑 ]