lame静态库使用
来源:互联网 发布:淘宝怎样取消退款 编辑:程序博客网 时间:2024/06/08 07:52
拖入上篇博文制作的lame静态库到工程,包括libmp3lame.a lame.h两个文件,如下图左侧
附lame使用工具类LameTool
#import <Foundation/Foundation.h>@interface LameTool : NSObject+ (NSString *)audioToMP3: (NSString *)sourcePath isDeleteSourchFile: (BOOL)isDelete;@end
#import "LameTool.h"#import "lame.h"@implementation LameTool+ (NSString *)audioToMP3: (NSString *)sourcePath isDeleteSourchFile:(BOOL)isDelete{ NSString *inPath = sourcePath; NSFileManager *fm = [NSFileManager defaultManager]; if (![fm fileExistsAtPath:sourcePath]){ NSLog(@"file path error!"); return @""; } NSString *outPath = [[sourcePath stringByDeletingPathExtension] stringByAppendingString:@".mp3"]; @try { int read, write; FILE *pcm = fopen([inPath cStringUsingEncoding:1], "rb"); fseek(pcm, 4*1024, SEEK_CUR); FILE *mp3 = fopen([outPath cStringUsingEncoding:1], "wb"); const int PCM_SIZE = 8192; const int MP3_SIZE = 8192; short int pcm_buffer[PCM_SIZE*2]; unsigned char mp3_buffer[MP3_SIZE]; lame_t lame = lame_init(); lame_set_in_samplerate(lame, 11025.0); lame_set_VBR(lame, vbr_default); lame_init_params(lame); do { size_t size = (size_t)(2 * sizeof(short int)); read = fread(pcm_buffer, size, PCM_SIZE, pcm); if (read == 0) write = lame_encode_flush(lame, mp3_buffer, MP3_SIZE); else write = lame_encode_buffer_interleaved(lame, pcm_buffer, read, mp3_buffer, MP3_SIZE); fwrite(mp3_buffer, write, 1, mp3); } while (read != 0); lame_close(lame); fclose(mp3); fclose(pcm); } @catch (NSException *exception) { NSLog(@"%@",[exception description]); } @finally { NSLog(@"mp3 build success!"); if (isDelete) { NSError *error; [fm removeItemAtPath:sourcePath error:&error]; if (error == nil){ NSLog(@"source file is deleted!"); } } return outPath; }}@end
制作一个swift使用上面OC工具类的桥接文件lameDemo-Bridging-Header.h并输入一条语句
#import "LameTool.h"
使用如下
//// ViewController.swift// lameDemo//// Created by targetcloud on 2016/11/29.// Copyright © 2016年 targetcloud. All rights reserved.//import UIKitimport AVFoundationclass ViewController: UIViewController { lazy var record: AVAudioRecorder? = { let url = URL(string: "/Users/targetcloud/Desktop/test.caf") let configDic: [String: AnyObject] = [ AVFormatIDKey: NSNumber(value: Int32(kAudioFormatLinearPCM) as Int32),// 编码格式 AVSampleRateKey: NSNumber(value: 11025.0 as Float),// 采样率 AVNumberOfChannelsKey: NSNumber(value: 2 as Int32),// 通道数 AVEncoderAudioQualityKey: NSNumber(value: Int32(AVAudioQuality.min.rawValue) as Int32)// 录音质量 ] do { let record = try AVAudioRecorder(url: url!, settings: configDic) record.prepareToRecord() return record }catch { print(error) return nil } }() override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) { record?.record() } override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?) { record?.stop() let path = LameTool.audio(toMP3: "/Users/targetcloud/Desktop/test.caf", isDeleteSourchFile: true) print(path) }}
0 0
- lame静态库使用
- lame静态库制作
- lame 静态库编译
- 关于使用lame静态库来使音频格式转换成MP3
- lame的ios 静态库创建
- lame库生成支持i386,armv7,armv7s的静态库
- Android项目使用Lame库录制.mp3格式音频
- iOS 使用lame库进行音频转mp3(一)
- iOS 使用lame库进行音频转mp3(二)
- LAME库裁剪
- LAME
- LAME
- ios 32/64位 lame静态库libmp3lame.a 编译,支持arm64 armv7s x86_64 i386 armv7
- linux下lame的使用
- Android 编译Lame&简单使用
- 移植lame-3.99.5库
- Android Lame c库应用
- IOS 实现使用lame库 录音转MP3格式 边录边转功能
- Codeforces 740D dfs+二分
- 如何获取color.xml配置文件中的值。
- c++中冒号(:)和双冒号(::)的用法
- 子字符串查找
- dubbo新人帮助文档
- lame静态库使用
- android socket网络通信
- java中的日期类
- 微信公众平台开发(好文章 好博客链接)
- OK6410增加实现硬件浮点运算方法
- JavaScript constructor 属性
- 动态规划解决最长子序列问题
- c语言求解一元二次方程
- 加密初衷是什么?安全性or实时性