业余写的一个播放器SDK,求点意见
好久没写博客了
现大致花了半年时间私下写一个音频SDK,想请csdn的达人提点意见,看看还需要增加哪些功能
我对这个的定位如下:
可以在游戏开发中播放音乐,作为一般的音频播放器后端,作为音频编辑器后端
---------------------------------------------------------------------------------------------------------------------------------
下一步打算实现的东西:
3D effect/八路混音/flanger音效/C#绑定/wavpack格式支持
----------------------------------------------------------------------------------------------------------------------------------
当前功能如下(具体以配置而定):
当前支持播放的音频格式
au/aiff/wav/flac/mp3/ogg/it/mod/xm/s3m/midi/mpc/tta
当前支持录制的音频格式
ape/au/aiff/wav/flac/mp2/mp3/ogg/voc/wv
当前支持的平台
linux/windows32
当前支持的实时音效
boost/phaser/fft/autowah/echo/fade in /fade out/变速/声道交换/反转/distortion/modulator
其他我觉得的具备的优点:
跨平台(貌似废话),插件式结构,使用简单
----------------------------------------------------------------------------------------------------------------------------------
关于音频编解码和音效代码有些是自己写的,有些是找第三方
更新日志如下:
gaudio是一个基于C/C++混合编程的跨平台音频库,当前支持windows32操作系统和linux32位操作系统
修改记录
1.2013.04.01
初次发布
2.2013.04.10
完成对wav格式采样频率8000-48000,采样格式4,8,16,24,32的支持
3.2013.05.01
a.版本提升为1.4.0.8
b.修改一个退出异常
c.支持二源混音
d.使用载入插件的方式提供对wav播放的支持
e.增加对au格式的支持
f.增加echo音效
g.增加bassboost音效
h.增加函数gaudio_address_get
i.增加使用例子:echo/mixer/stream/boost
j.把设置,获取音源三维空间信息的函数调整为: gaudio_source_set_float3,gaudio_source_get_float3
k.修改解码器结构为回调模式
4.2013.05.10
a.版本提升为1.6.8.0
b.优化部分代码
c.增加speedchanger音效
d.增加音频翻转(g168)
e.增加音频声道交换(g168)
f.增加声道合并(g168)
g.增加speedchanger/invert测试用例
h.增加vc调用静态链接库libgaudio.lib
i.增加调制音效和测试例子
j.修改解码器框架
k.修改获取音频采样编码格式不正确的问题
l.解决seek定位不准的问题
m.增加音效链测试例子
n.增加函数gaudio_set_long,gaudio_get_long
o.修改stream例子
p.支持压缩mpc音频格式
q.支持ogg/vorbis格式
r.修改获取采样格式错误的bug
t.增加接口说明文档
5.2013.06.10
a.版本提升为1.7.2.0
b.gaudio_source_set_error_callback回调函数增加音源参数
c.gaudio_source_set_finish_callback回调函数增加音源参数
d.移除gaudio_get_version函数
e.gaudio_effect_setcallback函数调整为gaudio_effect_set_callback
f.使用插件式的音频驱动模式 - gwinmm
g.gaudio代码优化
h.增加音频源码率的获取
i.增加feature范例
j.完善文档
k.增加对mp3的支持
l.移除invert/modulator/bassboost例子
m.增加balance
6.2013.07.07
a.版本提升到1.8.0.2
b.增加对交换文件aiff的支持
c.修改音频驱动插件实现
d.增加移相器音效
e.修改部分API接口使用的long为int32_t以方便移植
f.增加code::blocks测试工程
g.增加msvc2008测试工程
h.增加函数接口gaudio_source_create_from_buffer2以播放raw音频数据
i.把各个音效参数提到单独文件
j.简化wav解码
k.修改几处内存泄漏
l.增加音频回录功能,输出格式MP2,MP3,APE,WV,AAC,WAV,AU,AIFF,VOC,CAF,OGG
当前录制信息:16位音频,双声道,采样频率44100
m.增加音频回录的例子recorder
n.测试例子使用getopt和usage提示
o.增加对tta格式的支持
7.2013.07.29
a.版本提升到1.9.8.6
b.解决了wav,au,aiff播放进度不准的故障
c.优化wav/au/aiff解码性能
d.增加distortion音效
e.增加foldback distortion音效
f.增加distortion音效使用例子
g.增加声音穿透力
h.修改结构最大支持八声道
i.增加portaudio插件驱动(win32&linux)
j.完成g168,bassbost的liux版本
k.完成wav,au音频格式的linux版本
l.代码增加部分注释(未完成)
m.尝试性支持linux操作系统
n.支持midi/mid音乐格式
o.解决了mixer混音退出报错的问题
p.把对id3v1标签的解析移入gaudio
7.2013.08.16
a.版本提升到2.0.0.1
b.变量宏增加AUDIO_ENUM前缀
c.增加非标准插件gsndfile支持flac/ogg/au/wav/aiff/voc/caf/..基于(sndfile)
d.改用mpg123解码mp3
e.支持FFT频谱
8.2013.09.08
a.版本提升到2.0.6.0
b.修改CROSSFEED宏和相关
c.引入200号插件支持s3m/mod/it/xm音频格式
d.整理测试用例
e.增加autowah音效
f.增加驱动检测
----------------------------------------------------------------------------------------------------------------------------------
一个简单的使用代码如下:
/*
GAudio 2.0.6.0, (C)2013 by Eric Du(E)
This program is a part of the GAudio SDK.
Use GAudio's echo effect
*/
#include <stdlib.h>
#include <conio.h>
#include <stdio.h>
#ifdef WIN32
#include "getopt.h"
#else
#include<unistd.h>
#endif
#include "gaudio.h" void usage()
{
printf("\rusage:\techo -i file -m mode\n\n");
printf("\t-h\tprint this help\n");
printf("\t-i\tfor playing input file\n");
printf("\t-m\tfor echo bind mode,0 bind to global and 1 bind to source\n");
} int main(int argc,char* argv[])
{
if(argc < 3)
{
usage();
return -1;
} printf("echo created by duwenhua\n"); char* filename = 0;
int32_t mode = 0; int ch;
opterr = 0;
while((ch = getopt(argc,argv,"i:hm:"))!=-1)
{
switch(ch)
{
case 'i':
filename = optarg;
break;
case 'h':
usage();
break;
case 'm':
mode = atoi(optarg);
break;
default:
usage();
return -1;
}
} if(mode < 0 || mode > 1)
mode = 0; #ifdef WIN32
gaudio_init("addons");
#else
gaudio_init("/usr/local/lib/gaudio/");
#endif //! load soundfont for midi/mid music file
gaudio_set_string(AUDIO_ENUM_SOUNDFONT,"instruments\\snd.cfg"); gsource* source = gaudio_source_create_from_file(filename,FALSE);
if(source == NULL)
{
printf("load file:%s error!\n",filename);
printf("bad source.\nerror code:%d.\n",gaudio_error_get());
gaudio_deinit();
return -1;
} gaudio_source_set_int32(source,AUDIO_ENUM_LOOP,TRUE);
printf("play filename:%s\n",filename); geffect* effect = gaudio_effect_create(AUDIO_EFFECT_ECHO,0);
if(!effect)
{
printf("not support echo effect\n");
gaudio_source_destroy(source);
gaudio_deinit();
return -1;
} gaudio_effect_set_float(effect,AUDIO_EFFECT_ECHO_DELAY,1.0f);
gaudio_effect_set_float(effect,AUDIO_EFFECT_ECHO_DECAY,0.2f); if(mode == 0)
gaudio_effect_bind(effect,0);
else
gaudio_effect_bind_to_source(effect,source); gaudio_source_start(source,FALSE); printf("\nplaying, press any key to quit.\n");
getch(); if(mode == 0)
gaudio_effect_unbind(effect);
else
gaudio_effect_unbind_from_source(effect,source); gaudio_effect_destroy(effect);
gaudio_source_stop(source);
gaudio_source_destroy(source); gaudio_deinit();
system("PAUSE");
return EXIT_SUCCESS;
}
具体下载链接在这里:
欢迎下载不要钱啊
http://download.csdn.net/detail/ccsdu2004/6262273
-------------------------------------------------------------------------------------------------------------
另外楼主在西安一家大型公司从事android开发,现在考虑换份工作,求推荐(具体从事的项目这里就不写了)
工作五年
本人会的技能如下(后面的数字代表使用的月数):
熟悉C++QT框架|良好 | 28
音频音效处理和算法设计|熟练 | 24
熟悉数据结构和算法设计|熟练 | 60
有良好的分析,设计,调试测试软件的能力|精通 | 72
熟练掌握软件测试工具c++ test|良好 | 4
熟悉Opengl图形接口|良好 | 24
熟悉面向对象设计与泛型编程|熟练 | 48
熟悉GUI框架设计 |熟悉 | 26
C/C++|精通 | 76
Linux操作系统|一般 | 18
Python|良好 | 11
android开发和项目所需要的各种技能|精通 | 24
JAVA|良好 | 31
业余写的一个播放器SDK,求点意见的更多相关文章
- 使用AVPlayer制作一个播放器
代码地址如下:http://www.demodashi.com/demo/11685.html AVPlayer 是一个强大的视频播放器,可以播放多种格式的视频,缺点是没有控制界面,需要自己去实现. ...
- 使用Mediaplay类写一个播放器
我们知道android本身播放视频的的能力是有限的..先来一个Demo 另附我的一个还未成熟的播放器,下载地址:http://www.eoemarket.com/soft/370334.html,正在 ...
- 使用VideoView自定义一个播放器控件
介绍 最近要使用播放器做一个简单的视频播放功能,开始学习VideoView,在横竖屏切换的时候碰到了点麻烦,不过在查阅资料后总算是解决了.在写VideoView播放视频时候定义控制的代码全写在Actv ...
- PLDroidPlayer 是七牛推出的一款免费的适用于 Android 平台的播放器 SDK,采用全自研的跨平台播放内核,拥有丰富的功能和优异的性能,可高度定制化和二次开发。 https://developer.qiniu.com/pili/sdk/…
PLDroidPlayer PLDroidPlayer 是一个适用于 Android 平台的音视频播放器 SDK,可高度定制化和二次开发,为 Android 开发者提供了简单.快捷的接口,帮助开发者在 ...
- 【C++】从零开始,只使用FFmpeg,Win32 API,实现一个播放器(一)
前言 起初只是想做一个直接读取视频文件然后播放字符动画的程序.我的设想很简单,只要有现成的库,帮我把视频文件解析成一帧一帧的原始画面信息,那么我只需要读取里面的每一个像素的RGB数值,计算出亮度,然后 ...
- 百度播放器SDK 播放MP4格式视频有声音无画面问题解决
此处为记录解决过程. 所链接使用的MP4格式视频为codec id是mp4v-20.使用手机自带播放器可以播放,使用百度云媒体播放器不能无画面.经调试,Android Baidu-Cloud-Play ...
- 最近闲着利用QQ协议写了一个聊天器
最近闲着,把以前一个利用QQ协议写了的聊天器找出来玩,采用的是QQ比较稳定的协议,之前听说有人用WEB协议,或是安卓版QQ协议,都不太稳定.而我这个版的已经有好几年没动了.今天找出来依旧能登陆.获取好 ...
- libEasyPlayer RTSP windows播放器SDK API接口设计说明
概述 libEasyPlayer实现对RTSP直播流进行实时采集和解码显示,稳定,高效,低延时:解码可采用intel硬件解码和软件解码两种方式,能实时进行录像和快照抓图,OSD叠加等功能. API接口 ...
- C#调用VlcControl做一个播放器
开发环境: Visual Studio 2015 .Net Framework 4.5 1.新建一个Windows窗体应用程序 修改框架为.Net Framework 4.5 2.管理NuGet包 下 ...
随机推荐
- 「OC」类和对象
一.面向对象 OC语言是面向对象的,c语言是面向过程的,面向对象和面向过程只是解决问题的两种思考方式,面向过程关注的是解决问题涉及的步骤,面向对象关注的是设计能够实现解决问题所需功能的类. 术语:OO ...
- TF-IDF算法-自动提取关键词汇
引子:Automatic Keyphrase extraction 很长文章里面,如何自动提取关键词汇呢? 比如在<中国的蜜蜂养殖>的长文里面,我们准备提取它的关键词.首先一个思路, 那些 ...
- html(第一天,div+css)
一.CSS布局属性 Width:设置对象的宽度(width:45px). Height:设置对象的高度(Height:45px;). Background:设置对象的背景颜色.背景图像. 1.背景颜色 ...
- 华为GVRP理解
类似于CISCO的VTP 在大型的网络中,华为交换机之间的串联是很普遍的.一般交换机互联端口都是配置成Trunk,即允许透传多个VLAN的.对于用户来说,手工配置太麻烦.一个规模比较大的网络可能包含多 ...
- IE6不支持<a>标签以外元素的hover的解决方案
IE6以及更低版本的浏览器对“:hover”的支持不理想,对于类似的“p:hover”.“img:hover”.“#header:hover”...,今天给大家介绍一种新的方法,可以完美解决IE6不支 ...
- Xamarin.Android开发实践(一)
原文:Xamarin.Android开发实践(一) 一.准备工作 1.创建一个空的解决方案,并命名为Phoneword 2.右击解决方案 新建->新建项目 并命名为Phoneword_Droid ...
- IT第六天 - eclipse快捷操作、万年历项目的编写、菱形的打印输出、代码简化
IT第六天 上午 小项目 1.程序提前结束的退出标志 2.登录用户的模拟,给出适当的提示信息 3.根据要求,寻找规律,然后编写程序 Eclipse的使用 1.快捷键的使用 下午 中小项目 1.九九乘法 ...
- poj 2363 Blocks(暴力)
题目链接:http://poj.org/problem?id=2363 思路分析:由于数据较小,采用暴力搜索法.假设对于矩形边长 1 <= a <= b <= c <= N; ...
- SqlServer和Oracle中一些常用的sql语句10 特殊应用
--482, ORACLE / SQL SERVER --订购数量超过平均值的书籍 WITH Orders_Book AS ( SELECT Book_Name, SUM(Qty) Book_Qty ...
- 【解决ViewPager在大屏上滑动不流畅】 设置ViewPager滑动翻页距离
在项目中做了一个ViewPager+Fragment滑动翻页的效果,在模拟器和小米手机上测试也比较正常.但是换到4.7以上屏幕测试的时候发现老是滑动失效. 因为系统默认的滑动策略是当用户滑动超过半屏之 ...