Codejie's C++ Space

Using C++

更新 - 使用libmpg123转换MP3到WAVE

    一个更简单的方法,不使用Frame,而是直接用Read方式;顺便也修改几个不对的地方。这种Decode方式更符合DSound的需要。主要改动如下:
 1     while(true)
 2     {
 3         ret = mpg123_init();
 4         if(ret != MPG123_OK)
 5             break;
 6         mpg123_handle *= mpg123_new(NULL, &ret);
 7         if(h == NULL)
 8             break;
 9         ret = mpg123_open(h, ".\\orgrimmar_intro-moment.mp3");
10         if(ret != MPG123_OK)
11             break;
12 
13         long rate = 0;
14         int channel = 0, encoding = 0;
15         ret = mpg123_getformat(h, &rate, &channel, &encoding);    
16         if(ret != MPG123_OK)
17             break;
18         if((encoding & MPG123_ENC_16) == MPG123_ENC_16)
19             encoding = 16;
20         else if((encoding & MPG123_ENC_32) == MPG123_ENC_32)
21             encoding = 32;
22         else
23             encoding = 8;
24 
25         WAVE_HEADER header;
26         InitWaveHeader(header, channel, rate, encoding, 0);
27 
28         UpdateWaveHeader(header, true);
29         
30         unsigned char buffer[32 * 1024];
31         size_t size = 32 * 1024;
32         size_t outsize = 0;
33 
34         do
35         {
36             ret = mpg123_read(h, buffer, size, &outsize);
37             header.data_size += outsize;
38 
39             AppendWaveData((const char*)buffer, outsize);
40 
41         }while(ret == MPG123_OK);
42 
43         mpg123_close(h);
44         mpg123_delete(h);
45         mpg123_exit();
46 
47         header.waveform_chunk_size = header.data_size + 36;
48 
49         UpdateWaveHeader(header, false);
50 
51 
52         break;
53     }
54 
55     if(ret != MPG123_OK && ret != MPG123_DONE)
56     {
57             std::cout << "error : " << mpg123_plain_strerror(ret) << std::endl;
58             return -1;
59     }
60 
61     CloseWaveFile();


posted on 2009-03-25 15:49 codejie 阅读(851) 评论(3)  编辑 收藏 引用 所属分类: C++

评论

# re: 更新 - 使用libmpg123转换MP3到WAVE 2010-01-25 09:28 茅草屋

请问楼主,这个库能否支持多线程?  回复  更多评论   

# re: 更新 - 使用libmpg123转换MP3到WAVE 2010-01-25 09:33 codejie

@茅草屋
这个问题还得麻烦你参考库的官方网站说明~  回复  更多评论   

# re: 更新 - 使用libmpg123转换MP3到WAVE 2010-03-01 16:42 茅草屋

@codejie
谢谢  回复  更多评论   


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


公告

Using C++

导航

统计

留言簿(73)

随笔分类(513)

积分与排名

最新评论

阅读排行榜

评论排行榜