当前位置: 首页> 财经> 产业 > 做个公司网页一般需要多少钱_html入门网页制作_百度指数怎么查_云南网站seo服务

做个公司网页一般需要多少钱_html入门网页制作_百度指数怎么查_云南网站seo服务

时间:2025/7/8 12:56:10来源:https://blog.csdn.net/qq_45339188/article/details/142566946 浏览次数:0次
做个公司网页一般需要多少钱_html入门网页制作_百度指数怎么查_云南网站seo服务

摘要:在ubuntu 20.04中使用QAudioInput、PortAduio、ffmpeg打开音频设备录制音频都显示失败,最后没办法选择了SDL2.0,SDL2.0录制音频十分方便,使用也非常简单。
疑问:不知道SDL是如何区分打开的设备是录制还是播放。(已解决,通过打开设备时设置iscapture参数的值,0表示录制,非0表示播放)
主要函数简介:

SDL_Init(SDL_INIT_AUDIO)

此函数用于初始化音频。

SDL_AudioSpec want, have;
SDL_zero(want);
want.freq = 44100;
want.format = AUDIO_S16SYS;
want.channels = 2;
want.samples = 288;
want.callback = audioCallback;

设置音频数据的格式。

//参数iscapture 0表示播放音频  非0表示录制音频
SDL_AudioDeviceID deviceId = SDL_OpenAudioDevice(nullptr, 2, &want, &have, SDL_AUDIO_ALLOW_FORMAT_CHANGE);

此函数用于打开音频设备,音频的录制和播放取决于第二个参数,若第二个参数设置为0,此函数表示的打开录制音频。非0表示打开播放音频。

SDL_QueueAudio(deviceIdO,stream,len);

若不用回调函数,可以使用此函数对音频进行播放操作。

SDL_DequeueAudio(deviceIdO,stream,len);

若不用回调函数,可以使用此函数定时读取录制的音频数据。

SDL_MixAudioFormat(stream, stream, AUDIO_S16SYS, len, 100);

可用于混音和调节音频的音量。

在下面的demo中,音频的录制采用了回调函数,音频的播放采用了SDL_QueueAudio函数。

SDL_AudioDeviceID deviceIdO;//全局播放音频设备id
//回调函数,用在音频录制
void audioCallback(void *userdata, Uint8 * stream,int len)
{Q_UNUSED(userdata);// Sint16* audioData = reinterpret_cast<Sint16*>(stream);// int numSamples = len / sizeof(Sint16);// for (int i = 0; i < numSamples; ++i) {//     // 假设放大倍数为 2//     audioData[i] *= 2;// }SDL_MixAudioFormat(stream, stream, AUDIO_S16SYS, len, 100);mp3InFILE.write((char *)stream,len);//从缓存区播放音频SDL_QueueAudio(deviceIdO,stream,len);
}
	if(SDL_Init(SDL_INIT_AUDIO) < 0){qDebug() << "SDL  INIT ERROR" << SDL_GetError();return ;}SDL_AudioSpec want, have;SDL_zero(want);want.freq = 44100;want.format = AUDIO_S16SYS;want.channels = 2;want.samples = 288;want.callback = audioCallback;//参数iscapture 0表示播放音频  非0表示录制音频SDL_AudioDeviceID deviceId = SDL_OpenAudioDevice(nullptr, 2, &want, &have, SDL_AUDIO_ALLOW_FORMAT_CHANGE);//开启音频播放设备want.callback = nullptr;deviceIdO = SDL_OpenAudioDevice(nullptr, 0, &want, &have, SDL_AUDIO_ALLOW_FORMAT_CHANGE);if (deviceIdO == 0) {qDebug() << "SDL could not open audio device! SDL Error: " << SDL_GetError();return;}//分别开启音频录制和音频播放。SDL_PauseAudioDevice(deviceId,0);SDL_PauseAudioDevice(deviceIdO,0);
关键字:做个公司网页一般需要多少钱_html入门网页制作_百度指数怎么查_云南网站seo服务

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: