该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

#include

#include

#include

#include

#include "inc/fmod.h"

typedef struct PLAY

{

FMOD_SYSTEM *system;

FMOD_SOUND *sound;

FMOD_CHANNEL *channel;

float volume;

void (*PLAY_CALLBACK)(struct PLAY *play);

int flag;

}PLAY;

/*FMOD_RESULT F_CALLBACK mycallback(FMOD_CHANNEL *channel, FMOD_CHANNEL_CALLBACKTYPE type, void *commanddata1, void *commanddata2)

{

if(type==FMOD_CHANNEL_CALLBACKTYPE_END)printf("ddd");

return FMOD_OK;

}*/

static void play_upsystem(void *p)

{

int playing=1;

while(playing)

{

Sleep(100);

FMOD_Channel_IsPlaying ( ((PLAY*)p)->channel , & playing );

FMOD_System_Update(((PLAY*)p)->system ) ;

}

if(((PLAY*)p)->PLAY_CALLBACK!=NULL)((PLAY*)p)->PLAY_CALLBACK(p);

}

int play_init(PLAY **play)//初始化

{

int err=0;

*play=(PLAY*)malloc(sizeof(PLAY));

if(*play==NULL)return -1;

memset(*play,0,sizeof(PLAY));

(*play)->volume=0.8f;

err=FMOD_System_Create(&(*play)->system);

if(err!=0)

{

free(*play);

return -1;

}

err=FMOD_System_Init((*play)->system,10, FMOD_INIT_NORMAL,NULL);

if(err!=0)

{

free(*play);

return -1;

}

return 0;

}

void play_close(PLAY *play)//关闭 释放资源

{

if(play->channel!=NULL)FMOD_Channel_Stop(play->channel);

if(play->sound!=NULL)FMOD_Sound_Release(play->sound);

if(play->system!=NULL)FMOD_System_Close(play->system),FMOD_System_Release(play->system);

if(play->flag!=0)play->flag=0;

if(play!=0)free(play);

}

int play_star(PLAY *play,char *name,void (*PLAY_CALLBACK)(struct PLAY *play))//播放文件

{

int err=0;

play->PLAY_CALLBACK=PLAY_CALLBACK;

err=FMOD_System_CreateStream(play->system,name, FMOD_3D, 0, &play->sound);

if(err!=0)return -1;

err=FMOD_Sound_SetMode(play->sound,FMOD_LOOP_OFF);

if(err!=0)return -1;

err=FMOD_System_PlaySound(play->system,FMOD_CHANNEL_FREE,play->sound,0,&play->channel);

if(err!=0)return -1;

//err=FMOD_Channel_SetCallback(play->channel,mycallback);

//if(err!=0)return -1;

play->flag=1;

_beginthread (play_upsystem,0, play);

}

int play_Continue_Pause(PLAY *play,int type)//暂停或恢复 type =1 暂停 0恢复

{

int err=0;

float i=0.0f;

if (play->channel!= NULL)

{

if(type==0)

{

err=FMOD_Channel_SetPaused(play->channel,type);

for(i=0.0f;ivolume;i+=0.05)

{

FMOD_Channel_SetVolume(play->channel,i);

Sleep(40);

}

}

else

{

for(i=play->volume;i>0.0f;i-=0.05)

{

FMOD_Channel_SetVolume(play->channel,i);

Sleep(40);

}

err=FMOD_Channel_SetPaused(play->channel,type);

}

}

return err;

}

int play_stop(PLAY *play) //停止播放

{

int err=0;

if(play->channel!= NULL)err=FMOD_Channel_Stop(play->channel);

play->flag=0;

return err;

}

unsigned int play_GetCurPos(PLAY *play)//获取当前位置

{

unsigned int position=0;

if(play->channel!=NULL)FMOD_Channel_GetPosition(play->channel,&position,FMOD_TIMEUNIT_MS);

return position;

}

unsigned int play_GetMilliSeconds(PLAY *play)//获取音乐时长

{

unsigned int length=0;

if(play->sound!=NULL)FMOD_Sound_GetLength(play->sound,&length,FMOD_TIMEUNIT_MS);

return length;

}

int play_SetCurPos(PLAY *play,unsigned int position)//设置播放位置

{

int err=0;

float i;

if(play->channel!=NULL)

{

play_Continue_Pause(play,1);

FMOD_Channel_SetPosition(play->channel,position,FMOD_TIMEUNIT_MS);

play_Continue_Pause(play,0);

}

return err;

}

int play_SetVolume(PLAY *play,float n)//设置音量

{

int err=0;

err=FMOD_Channel_SetVolume(play->channel,n);

if(err!=0)play->volume=n;

return err;

}

void hdhs(PLAY *pl)//回调函数。。当文件播放完毕是会调用这个函数。用户自己定义。

{

play_stop(pl);//停止播放

play_star(pl,"路绮欧 - 习惯.mp3",hdhs);//再次播放文件

}

int main(int argc, char *argv[])

{

PLAY *pl;//定义变量

play_init(&pl);//初始化变量

play_star(pl,"路绮欧 - 习惯.mp3",hdhs);//播放文件

play_SetVolume(pl,0.9f);//设置音量

getch();

return 0;

}

c语言 fmod,我也发个程序 混脸熟。。FMOD做的音乐播放器。。相关推荐

  1. (附源码)springboot音乐播放器小程序 毕业设计 170900

    Springboot音乐播放器小程序 摘 要 本文设计了一种音乐播放器小程序,系统为人们提供了方便快捷.即用即搜的音乐搜索播放服务,包括音乐资讯.音乐搜索.新歌榜单.注册登录.论坛发表等,用户不仅能够 ...

  2. (附源码)小程序 音乐播放器小程序 毕业设计 170900

    Springboot音乐播放器小程序 摘 要 本文设计了一种音乐播放器小程序,系统为人们提供了方便快捷.即用即搜的音乐搜索播放服务,包括音乐资讯.音乐搜索.新歌榜单.注册登录.论坛发表等,用户不仅能够 ...

  3. 01. 微信小程序音乐播放器

    项目简介 最近在学微信小程序,所以打算做一个音乐播放器的微信小程序. 项目需求(原型图) 这个是我做的原型图,比较简陋(有些界面直接用了网易云音乐小程序的截图,因为是仿着网易云音乐来做的) 首页 播放 ...

  4. 基于C语言控制台程序的简易MP3音乐播放器

    这是我们小学期的第一个大作业,因感受颇深,特此写下这篇博客留作纪念. 内容:设计一个带有播放控制和音量调节功能的控制台音乐播放器,其中播放控制的子菜单能实现播放暂停切换.停止当前曲.播放上一曲和下一曲 ...

  5. mp3播放程序c语言,Go语言音乐播放器

    结合前面所学的知识,本节我们将设计并实现了一个音乐播放器程序.这个程序只是用于演示Go语言的特性,因此大家就不要期望能看到华丽的播放界面,听到优美的音乐. 本节我们将实现以下功能: 音乐库功能,使用者 ...

  6. 基于微信小程序的音乐播放器设计

    目 录 1绪论 1 1.1选题背景及意义 1 1.2发展现状 1 1.2.1什么是微信小程序 1 1.2.2小程序市场的现状 4 1.3研究主要内容 4 2系统技术 5 2.1 Java语言 5 2. ...

  7. 基于IOS音乐播放器在线歌词同步小程序系统(音乐小程序)

    目 录 目 录 1 摘 要 3 Abstract 4 1 导论 6 1.1 背景问题 6 1.2 选题意义 6 1.3 本文内容 7 2 核心功能 9 2.1 功能调研 9 2.2 可行性分析 12 ...

  8. 写一个音乐播放器的微信小程序

    要创建一个音乐播放器的微信小程序,您需要熟悉微信小程序的开发环境和语言(如 JavaScript 和 WXML/WXSS). 具体来说,您需要做以下几件事: 设计音乐播放器的用户界面,并使用 WXML ...

  9. c语言编写音乐播放器完整代码(mciSendString函数的使用方法,第一次使用Visual Studio 2019的详细步骤)

    本文会尽量让和笔者一样只有一点点可怜的c语言基础的小白看懂,并写出自己的音乐播放器. 笔者使用的编译器是Visual Studio 2019,直接在官网下载就行了.下面是Visual Studio 2 ...

最新文章

  1. 本地化,将cancel替换成取消
  2. python怎么读excel文件-python读写excel文件
  3. bsc是指什么_掌握BSC,实现企业数字化管理
  4. 认证篇——消息认证码
  5. 集成极光推送遇到的问题
  6. 微软 VS Code 有 1400 万用户,而全球开发者才 2400 万
  7. Python中可变类型和不可变类型的数据?
  8. 史无前例的 HTML5 资源参考指南
  9. oracle ||#039; where #039;||condition;,帝国cms后台添加字段提示#039;Row size too large. The maximum row size...
  10. button的格式的问题
  11. 读完这个我懂了JNDI
  12. Vue中使用watch来监听数据变化
  13. c语言入门很难,C语言入门教程,C语言编程,从入门到精通,没你想的那么难
  14. Visio画UML用例图
  15. 积分运算电路的设计方法详细介绍
  16. vscode中显示隐藏文件
  17. DRM框架梳理-- dumb-buffer的分配和绑定到crtc
  18. Navicat premium 导入大数据的Excel文件失败的方法
  19. 郑州大学计算机系1996级校友,公共管理学院成功举办96级公共关系专业学生毕业20周年返校活动...
  20. 什么是EJB?EJB是基于哪些技术实现的?

热门文章

  1. 西安交大机器人"走进"秦岭山区小学
  2. 读书笔记:《代码大全第2版》 01.打好基础
  3. 快速上手:图聚类入门 Graph Clustering
  4. [LOJ]#572. 「LibreOJ Round #11」Misaka Network 与求和 min_25筛+杜教筛
  5. 基于ARM7的嵌入式智能家居系统---系统的图形驱动与界面设计
  6. 豆瓣网CTO洪强宁讲述网站架构变迁
  7. mosquitto项目实战二三事(1)
  8. centos下部署davinci
  9. 黑金AX301开发板学习(1)——流水灯实验及黑金AX301开发板资料
  10. matlab卡方分布函数,MATLAB 概率分布函数