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

湘潭自适应网站建设 磐石网络自己做网站系统

湘潭自适应网站建设 磐石网络,自己做网站系统,福田瑞沃自卸车官网,php做的网站如何运行SDL2播放PCM使用SDL2播放PCM音频采样数据。SDL实际上是对底层绘图API#xff08;Direct3D#xff0c;OpenGL#xff09;的封装#xff0c;使用起来明显简单于直接调用底层API。 测试的PCM数据采用采样率44.1k, 采用精度S16SYS, 通道数2 函数调用步骤如下: [初始化]SDL_In…SDL2播放PCM使用SDL2播放PCM音频采样数据。SDL实际上是对底层绘图APIDirect3DOpenGL的封装使用起来明显简单于直接调用底层API。 测试的PCM数据采用采样率44.1k, 采用精度S16SYS, 通道数2 函数调用步骤如下: [初始化]SDL_Init(): 初始化SDL。SDL_OpenAudio(): 根据参数存储于SDL_AudioSpec打开音频设备。SDL_PauseAudio(): 播放音频数据。[循环播放数据]SDL_Delay(): 延时等待播放完成。 打开音频设备 int SDLCALL SDL_OpenAudio(SDL_AudioSpec * desired, SDL_AudioSpec * obtained); // desired期望的参数。 // obtained实际音频设备的参数一般情况下设置为NULL即可。 SDL_AudioSpec typedef struct SDL_AudioSpec { int freq; // 音频采样率 SDL_AudioFormat format; // 音频数据格式 Uint8 channels; // 声道数: 1 单声道, 2 立体声 Uint8 silence; // 设置静音的值因为声音采样是有符号的所以0当然就是这个值 Uint16 samples; // 音频缓冲区中的采样个数要求必须是2的n次 Uint16 padding; // 考虑到兼容性的一个参数 Uint32 size; // 音频缓冲区的大小以字节为单位 SDL_AudioCallback callback; // 填充音频缓冲区的回调函数 void *userdata; // 用户自定义的数据 } SDL_AudioSpec;SDL_AudioCallback // userdataSDL_AudioSpec结构中的用户自定义数据一般情况下可以不用。 // stream该指针指向需要填充的音频缓冲区。 // len音频缓冲区的大小以字节为单位1024*2*2。 void (SDLCALL * SDL_AudioCallback) (void *userdata, Uint8 *stream, int len)播放音频数据 // 当pause_on设置为0的时候即可开始播放音频数据。设置为1的时候将会播放静音的值。 void SDLCALL SDL_PauseAudio(int pause_on)#include stdio.h #include SDL.h// 每次读取2帧数据, 以1024个采样点一帧 2通道 16bit采样点为例 #define PCM_BUFFER_SIZE (1024*2*2*2)// 音频PCM数据缓存 static Uint8 *s_audio_buf NULL; // 目前读取的位置 static Uint8 *s_audio_pos NULL; // 缓存结束位置 static Uint8 *s_audio_end NULL;//音频设备回调函数 void fill_audio_pcm(void *udata, Uint8 *stream, int len) {SDL_memset(stream, 0, len);if(s_audio_pos s_audio_end) // 数据读取完毕{return;}// 数据够了就读预设长度数据不够就只读部分不够的时候剩多少就读取多少int remain_buffer_len s_audio_end - s_audio_pos;len (len remain_buffer_len) ? len : remain_buffer_len;// 拷贝数据到stream并调整音量SDL_MixAudio(stream, s_audio_pos, len, SDL_MIX_MAXVOLUME/8);printf(len %d\n, len);s_audio_pos len; // 移动缓存指针 }// 提取PCM文件 // ffmpeg -i input.mp4 -t 20 -codec:a pcm_s16le -ar 44100 -ac 2 -f s16le 44100_16bit_2ch.pcm // 测试PCM文件 // ffplay -ar 44100 -ac 2 -f s16le 44100_16bit_2ch.pcm #undef main int main(int argc, char *argv[]) {int ret -1;FILE *audio_fd NULL;SDL_AudioSpec spec;const char *path 44100_16bit_2ch.pcm;// 每次缓存的长度size_t read_buffer_len 0;//SDL initializeif(SDL_Init(SDL_INIT_AUDIO)) // 支持AUDIO{fprintf(stderr, Could not initialize SDL - %s\n, SDL_GetError());return ret;}//打开PCM文件audio_fd fopen(path, rb);if(!audio_fd){fprintf(stderr, Failed to open pcm file!\n);goto _FAIL;}s_audio_buf (uint8_t *)malloc(PCM_BUFFER_SIZE);// 音频参数设置SDL_AudioSpecspec.freq 44100; // 采样频率spec.format AUDIO_S16SYS; // 采样点格式spec.channels 2; // 2通道spec.silence 0;spec.samples 1024; // 23.2ms - 46.4ms 每次读取的采样数量多久产生一次回调和 samplesspec.callback fill_audio_pcm; // 回调函数spec.userdata NULL;//打开音频设备if(SDL_OpenAudio(spec, NULL)){fprintf(stderr, Failed to open audio device, %s\n, SDL_GetError());goto _FAIL;}//play audioSDL_PauseAudio(0);int data_count 0;while(1){// 从文件读取PCM数据read_buffer_len fread(s_audio_buf, 1, PCM_BUFFER_SIZE, audio_fd);if(read_buffer_len 0){break;}data_count read_buffer_len; // 统计读取的数据总字节数printf(now playing %10d bytes data.\n,data_count);s_audio_end s_audio_buf read_buffer_len; // 更新buffer的结束位置s_audio_pos s_audio_buf; // 更新buffer的起始位置//the main thread wait for a momentwhile(s_audio_pos s_audio_end){SDL_Delay(10); // 等待PCM数据消耗}}printf(play PCM finish\n);// 关闭音频设备SDL_CloseAudio();_FAIL://release some resourcesif(s_audio_buf)free(s_audio_buf);if(audio_fd)fclose(audio_fd);//quit SDLSDL_Quit();return 0; }获取更多Linux C/C资料
http://www.hkea.cn/news/14414940/

相关文章:

  • 新浪云计算 网站开发佛山正规网站建设哪家好
  • 做网站视频学什么专业asp网站js悬浮窗怎么做
  • 青岛网站建设服务网页设计实训报告结论
  • 视频网站 如何做seochrome浏览器
  • 用三权重的网站做友链有好处没九江市房管局建设官方网站
  • 网站没有管理员权限设置他达拉非的副作用和危害
  • 科技公司内蒙古网站制作常州网架公司
  • 百度云架设网站dw软件的使用方法
  • c 做的网站怎么上传网站建设与网页制作的实验目的
  • 实体行业做分销网站有什么好处自建电商平台的优缺点
  • 源码网站代理推荐网站建设收费标准
  • 对网站建设服务公司的看法wordpress 蛋花
  • 公司网站模板 html云浮头条新闻
  • 找做网站找那个平台做如何创建网站后台
  • 合肥专业网站制作团队如何做网站流量统计
  • wix建设网站软件库大全
  • 电影资源网站怎么做免费做网站刮刮卡
  • 济南建设工程备案网站wordpress建站做客户端
  • 大连金州网站建设常平哪里有招计算机网站开发的
  • 自己建设网站在哪里建设网站项目下载
  • 网站页面多大分销平台用户协议
  • 做国外购物的网站怎么发货建设施工合同范本
  • 软件免费下载网站有哪些joomla 和 wordpress
  • 网站地图 怎么做做网站是怎么赢利的
  • 做网站公司不给源码wordpress购物网站教程
  • 那些外贸网站个人可以做vps 网站打不开
  • 做论坛网站价格医院网站建设安全协议
  • 深圳网站设计九曲网站的建立目的
  • 网站无法连接mysqlwordpress分类目录前缀
  • 门户网站的含义wordpress最新主题下载