The LAME Project LAME is a high quality MPEG Audio Layer III (MP3) encoder licensed under the LGPL. 


VS2013项目(libmp3lame, 可直接编译)下载链接:http://pan.baidu.com/s/1eQnqS9c 密码:5mg3

/********************************************************************Filename:   RLib_Mp3.cppAuthor:     rrrfffUrl:      http://blog.csdn.net/rrrfff
*********************************************************************/
#include "RLib_File.h"
#include "RLib_GlobalizeString.h"
#include "support/libmp3lame/lame.h"
#include <mmreg.h>
#include <stdio.h>#ifdef _USE_MP3//-------------------------------------------------------------------------#pragma pack(1)
struct WAVFILE
{struct RIFF_HEADER{char  szRiffID[4];     // 'R','I','F','F'DWORD dwRiffSize;      // file_length - sizeof(szRiffID) - sizeof(dwRiffSize)char  szRiffFormat[4]; // 'W','A','V','E'};struct FMT_BLOCK{char         szFmtID[4];// 'f','m','t',' 'DWORD        dwFmtSize;union WAV_FORMAT{WAVEFORMATEX  wavFormatEx; //determined by dwFmtSizePCMWAVEFORMAT wavPCMFormat;//dwFmtSize == 16};WAV_FORMAT format;};//  struct FACT_BLOCK//     {//         char  szFactID[4]; // 'f','a','c','t'//         DWORD  dwFactSize;//    };struct DATA_BLOCK{char szDataID[4];  // 'd','a','t','a'DWORD dwDataSize;};RIFF_HEADER header;FMT_BLOCK   fmt;//   FACT_BLOCK  fact;DATA_BLOCK  data;
};
#pragma pack()//-------------------------------------------------------------------------void ConvertFromWAVFile(String wav_path, String mp3_path)
{auto pcm = IO::File::Open(wav_path);if (pcm == nullptr) return;//skip wav file headers
#ifdef _DEBUGWAVFILE wav;pcm->Read(&wav, sizeof(wav));
#elsepcm->Position = sizeof(WAVFILE);
#endif // _DEBUGFILE *mp3;if (fopen_s(&mp3, GlobalizeString(IO::Path::GetDosPath(mp3_path)).toGBK(), "wb+") != 0){delete pcm;return;}lame_t lame = lame_init();lame_set_in_samplerate(lame, 44100);lame_set_VBR(lame, vbr_default);//  lame_set_bWriteVbrTag(lame, 0);lame_init_params(lame);short int     pcm_buffer[RLIB_DEFAULT_BUFFER_SIZE * sizeof(short int)];unsigned char mp3_buffer[RLIB_DEFAULT_BUFFER_SIZE * sizeof(short int)];//make sure...intptr_t read, write;do{read = pcm->Read(pcm_buffer, sizeof(pcm_buffer));if (read == 0){write = lame_encode_flush(lame, mp3_buffer, sizeof(mp3_buffer));}else{write = lame_encode_buffer_interleaved(lame,pcm_buffer, static_cast<int>(read / sizeof(short int)), //what should I do?mp3_buffer, sizeof(mp3_buffer));}fwrite(mp3_buffer, write, 1, mp3);} while (read > 0);lame_mp3_tags_fid(lame, mp3);lame_close(lame);fclose(mp3);delete pcm;
}
#endif // _USE_MP3

C++调用libmp3lame实现压缩WAV为MP3【附VS2013项目】相关推荐

  1. java+lame实现wav到mp3的转换

    lame以及lame命令参数设置请大家自行搜索,这里给大家一个例子,java+lame实现压缩wav to mp3. 注意:lame.exe与java工程src放在同一文件夹,否则请使用绝对路径调用l ...

  2. 04.iOS 使用lame将wav转换为mp3

    在iOS设备中进行录音,录音文件的格式为wav.但这种格式文件会很大,上传到服务器会消耗大量流量.为了适应终端的播放功能以及文件大小的要求,特将wav转换为mp3格式文件来使用. 注意:在录制wav文 ...

  3. android lame wav 转 mp3,Android JNI Lame编解码实现wav到MP3的转换

    1.JNI简介 JNI全称为Java Native Interface(JAVA本地调用).从Java1.1开始,JNI成为java平台的一部分,它允许Java代码和其他语言写的代码(如C&C ...

  4. air中wav转mp3

    格式: lame 输入文件  转出文件 这是转换时打印出来的信息,我们能发现里面包含了进度信息,只需要解析该信息就可得到进度信息,解析的正则表达式为://((/s?)(/d+)%/)/|/gi,结果为 ...

  5. FFmpeg之wav转mp3(二十四)

    一.将wav转码为mp3 1.下载开源编码库libmp3lame,然后编译.安装到系统 https://nchc.dl.sourceforge.net/project/lame/lame/3.100/ ...

  6. WIN32下使用DirectSound接口的简单音频播放器(支持wav和mp3)

    刚好最近接触了一些DirectSound,就写了一个小程序练练手,可以用来添加播放基本的wav和mp3音频文件的播放器.界面只是简单的GDI,dxsdk只使用了DirectSound8相关的接口. D ...

  7. 音频格式wav与mp3和wma的区别与音质

    MP3 全称是Moving Picture Experts Group Audio Layer III.简单的说,MP3就是一种音频压缩技术,由于这种压缩方式的全称叫MPEG Audio Layer3 ...

  8. wav转mp3怎么转?几种值得学习的转换方法,打开看看!

    WAV和MP3都是常用的数字音频格式.WAV是一种无损音频格式,全称为Waveform Audio File Format.它最初由Microsoft和IBM联合开发,是Windows系统下最常用的音 ...

  9. JavaDemo——wav转mp3

    wav转mp3比较简单,使用JAVE工具包就ok,JAVE可以转换各种视频音频. JAVE网站:http://www.sauronsoftware.it/projects/jave/manual.ph ...

最新文章

  1. 复习计算机网络基础 day5--物理层
  2. 建立单链表(尾插法)
  3. Heritrix源码分析(六) Heritrix的文件结构分析
  4. LongAdder分段锁机制
  5. Qt弹出的窗口始终位于界面最前面的方法
  6. saber仿真软件_返场预订,视频课程丨开关电源环路补偿设计与仿真
  7. QT实现“摇摇乐抽奖”(Lottery和Lottery2)
  8. 【简单】基于springboot的学生在线考试系统【老师、学生、管理员】
  9. Pytorch实现FGSM(Fast Gradient Sign Attack)
  10. 什么是智能颈部按摩仪低频脉冲电流?它会对人体有何影响?
  11. 量化择业 银行vs券商vs公募vs私募?(行内人深度分享)
  12. 系统架构设计——伸缩性架构
  13. 93. 复原 IP 地址
  14. PDMS二次开发产品Naki.CI(二):升级到1.0.1版本
  15. 微软苏菲rt能装鸿蒙,忘记RT,让微软还你一个不一样的“苏菲3”
  16. 视频教程-React 全家桶从入门到实战到源码-其他
  17. 实验4mysql查询数据_数据库实验四 复杂查询.doc
  18. php 自动获取头像,PHP_WordPress中用于获取及自定义头像图片的PHP脚本详解,get_avatar()(获取头像) get_avat - phpStudy...
  19. ESP32-S2 SGM58031-热敏电阻电压转温度
  20. 历史最全DL相关书籍、课程、视频、论文、数据集、会议、框架和工具整理分享

热门文章

  1. python 表达式求值_简单算术表达式求值
  2. ROS及机器人课程资料整理(苏黎世联邦理工学院, ETH Zürich)
  3. 7-56 周游世界 (30分)
  4. rdlc怎么添加dataset_自定义数据的RDLC报表开发入门(一)
  5. 数据挖掘习题之决策树算法
  6. Redis 分布式解决方案
  7. 如何判断是住宅ip还是机房ip?
  8. 在以「基础设施」为定位的发展阶段里,产业变成了一个可以有诸多创新的存在
  9. 上海亚商投顾:三大指数均涨约1% 两市近4300股飘红
  10. 超实用的SQL语法1