c语言 fmod,我也发个程序 混脸熟。。FMOD做的音乐播放器。。
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
#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做的音乐播放器。。相关推荐
- (附源码)springboot音乐播放器小程序 毕业设计 170900
Springboot音乐播放器小程序 摘 要 本文设计了一种音乐播放器小程序,系统为人们提供了方便快捷.即用即搜的音乐搜索播放服务,包括音乐资讯.音乐搜索.新歌榜单.注册登录.论坛发表等,用户不仅能够 ...
- (附源码)小程序 音乐播放器小程序 毕业设计 170900
Springboot音乐播放器小程序 摘 要 本文设计了一种音乐播放器小程序,系统为人们提供了方便快捷.即用即搜的音乐搜索播放服务,包括音乐资讯.音乐搜索.新歌榜单.注册登录.论坛发表等,用户不仅能够 ...
- 01. 微信小程序音乐播放器
项目简介 最近在学微信小程序,所以打算做一个音乐播放器的微信小程序. 项目需求(原型图) 这个是我做的原型图,比较简陋(有些界面直接用了网易云音乐小程序的截图,因为是仿着网易云音乐来做的) 首页 播放 ...
- 基于C语言控制台程序的简易MP3音乐播放器
这是我们小学期的第一个大作业,因感受颇深,特此写下这篇博客留作纪念. 内容:设计一个带有播放控制和音量调节功能的控制台音乐播放器,其中播放控制的子菜单能实现播放暂停切换.停止当前曲.播放上一曲和下一曲 ...
- mp3播放程序c语言,Go语言音乐播放器
结合前面所学的知识,本节我们将设计并实现了一个音乐播放器程序.这个程序只是用于演示Go语言的特性,因此大家就不要期望能看到华丽的播放界面,听到优美的音乐. 本节我们将实现以下功能: 音乐库功能,使用者 ...
- 基于微信小程序的音乐播放器设计
目 录 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. ...
- 基于IOS音乐播放器在线歌词同步小程序系统(音乐小程序)
目 录 目 录 1 摘 要 3 Abstract 4 1 导论 6 1.1 背景问题 6 1.2 选题意义 6 1.3 本文内容 7 2 核心功能 9 2.1 功能调研 9 2.2 可行性分析 12 ...
- 写一个音乐播放器的微信小程序
要创建一个音乐播放器的微信小程序,您需要熟悉微信小程序的开发环境和语言(如 JavaScript 和 WXML/WXSS). 具体来说,您需要做以下几件事: 设计音乐播放器的用户界面,并使用 WXML ...
- c语言编写音乐播放器完整代码(mciSendString函数的使用方法,第一次使用Visual Studio 2019的详细步骤)
本文会尽量让和笔者一样只有一点点可怜的c语言基础的小白看懂,并写出自己的音乐播放器. 笔者使用的编译器是Visual Studio 2019,直接在官网下载就行了.下面是Visual Studio 2 ...
最新文章
- 本地化,将cancel替换成取消
- python怎么读excel文件-python读写excel文件
- bsc是指什么_掌握BSC,实现企业数字化管理
- 认证篇——消息认证码
- 集成极光推送遇到的问题
- 微软 VS Code 有 1400 万用户,而全球开发者才 2400 万
- Python中可变类型和不可变类型的数据?
- 史无前例的 HTML5 资源参考指南
- oracle ||#039; where #039;||condition;,帝国cms后台添加字段提示#039;Row size too large. The maximum row size...
- button的格式的问题
- 读完这个我懂了JNDI
- Vue中使用watch来监听数据变化
- c语言入门很难,C语言入门教程,C语言编程,从入门到精通,没你想的那么难
- Visio画UML用例图
- 积分运算电路的设计方法详细介绍
- vscode中显示隐藏文件
- DRM框架梳理-- dumb-buffer的分配和绑定到crtc
- Navicat premium 导入大数据的Excel文件失败的方法
- 郑州大学计算机系1996级校友,公共管理学院成功举办96级公共关系专业学生毕业20周年返校活动...
- 什么是EJB?EJB是基于哪些技术实现的?
热门文章
- 西安交大机器人"走进"秦岭山区小学
- 读书笔记:《代码大全第2版》 01.打好基础
- 快速上手:图聚类入门 Graph Clustering
- [LOJ]#572. 「LibreOJ Round #11」Misaka Network 与求和 min_25筛+杜教筛
- 基于ARM7的嵌入式智能家居系统---系统的图形驱动与界面设计
- 豆瓣网CTO洪强宁讲述网站架构变迁
- mosquitto项目实战二三事(1)
- centos下部署davinci
- 黑金AX301开发板学习(1)——流水灯实验及黑金AX301开发板资料
- matlab卡方分布函数,MATLAB 概率分布函数