Cpper
C/C++高级工程师 Android高级软件工程师 IT集成工程师 音频工程师 熟悉c,c++,java,c#,py,js,asp等多种语言 程序猿
简单的例子如下:
#include <stdio.h>
#include 
<ao/ao.h>
#include 
<sndfile.h>
#include 
<math.h>

int main(int argc, char **argv)
{   
    SNDFILE
*    infile = 0;
    SF_INFO        sfinfo;
    
int            readcount;
    
    
int rate = 44100;
    
int channels = 2;
    
    
if(!(infile = sf_open("rock.wav",SFM_READ,&sfinfo)))
    {   
        
return  1 ;
    };
    
    rate 
= sfinfo.samplerate;
    printf(
"rate %d\n",rate);
    channels 
= sfinfo.channels;
    printf(
"channels %d\n",channels);
    printf(
"format %d\n",sfinfo.format);
 
    
short data[4096];
    ao_device 
*device;
    ao_sample_format format;
    
int default_driver;
    
int i;

    ao_initialize();

    default_driver 
= ao_default_driver_id();
    memset(
&format, 0sizeof(format));
    format.bits 
= 16;
    format.channels 
= channels;
    format.rate 
= rate;
    format.byte_format 
= AO_FMT_LITTLE;

    device 
= ao_open_live(default_driver,&format, NULL);
    
if(device == NULL) 
    {
        fprintf(stderr,
"error opening device.\n");
        
return 1;
    }
     
    
while((readcount = sf_read_short(infile,data,4096)))
    {   
        ao_play(device,data,readcount
*2);
    };

    sf_close (infile) ;
    ao_close(device);
    ao_shutdown();
    
return (0);
}
posted on 2012-03-20 22:38 ccsdu2009 阅读(947) 评论(0)  编辑 收藏 引用 所属分类: 音频视频

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理