资源简介
ios 音频转码, MP3 转为PCM 也可以自定义转码。 可以实现按照 buffer 返回。
代码片段和文件信息
//
// AlinkAudioTransport.m
// GDAlinkSDK
//
// Created by qihongru on 15/11/27.
// Copyright © 2015年 AutoNavi. All rights reserved.
//
#import “AlinkAudioTransport.h“
//#import “AlinkWiFiSocketOperator.h“
//#import “AlinkEASessionOperator.h“
//#import “AlinkCommandRequest.h“
#import “GDAudioTranscoder.h“
#import
#define SEND_DATA_LENGTH (44100*8)
#define SEND_TIME_INTERVAL 0.2
#define SEND_TIME_TOLERANC 0
@interface AlinkAudioTransport()
{
void* _pcmDataBuffer;
}
@property (nonatomic strong) NSMutableData *musicData;
@property (nonatomic strong) dispatch_queue_t audioTransport;
@property (nonatomic strong) dispatch_source_t sendTimer;
@property (nonatomic strong) GDAudioTranscoder *transcoder;
@end
@implementation AlinkAudioTransport
- (id)initWithURL:(NSURL *)url httpRequestHeaders:(NSDictionary *)httpRequestHeaders transcodingToUrl:(NSURL *)transcodeToUrl{
if (self = [super init]) {
_musicData = [NSMutableData data];
_audioTransport = dispatch_queue_create(“com.Alink.AudioTransport.queue“ NULL);
_pcmDataBuffer = malloc(SEND_DATA_LENGTH);
_transcoder = [[GDAudioTranscoder alloc] initWithURL:url httpRequestHeaders:httpRequestHeaders transcodingToUrl:transcodeToUrl];
_transcoder.delegate = self;
_transcoder.outputAudioFileType = kAudioFileWAVEType;
_transcoder.outputAudioFormat = kAudioFormatLinearPCM;
_transcoder.outputBufferSize = SEND_DATA_LENGTH;
}
return self;
}
- (id)initWithURL:(NSURL *)url transcodingToUrl:(NSURL *)transcodeToUrl{
return [self initWithURL:url httpRequestHeaders:nil transcodingToUrl:transcodeToUrl];
}
-(void)dealloc{
if (_pcmDataBuffer) {
free(_pcmDataBuffer);
}
_pcmDataBuffer = NULL;
}
- (void)startTransport
{
__weak AlinkAudioTransport *wself = self;
dispatch_async(self.audioTransport ^{
[wself.transcoder start];
[wself createAndStartSendDataTimer];
[[NSRunLoop currentRunLoop] run];
});
}
- (void)createAndStartSendDataTimer
{
self.sendTimer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER 0 0 self.audioTransport);
_pcmDataBuffer = malloc(SEND_DATA_LENGTH);
if (self.sendTimer != NULL) {
dispatch_source_set_timer(self.sendTimer
dispatch_time(DISPATCH_TIME_NOW SEND_TIME_INTERVAL * NSEC_PER_SEC)
SEND_TIME_TOLERANC * NSEC_PER_SEC 0);
dispatch_source_set_event_handler(self.sendTimer ^{
[self readNextPCMData];
});
dispatch_resume(self.sendTimer);
}
}
- (void)cancel
{
[self invalidateSendTimer];
[self.transcoder cancel];
}
- (void)invalidateSendTimer
{
if (self.sendTimer != NULL) {
dispatch_source_t timer = self.sendTimer;
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2015-11-26 09:01 lameTest\
文件 6148 2015-12-01 09:52 lameTest\.DS_Store
目录 0 2015-12-01 09:52 __MACOSX\
目录 0 2015-12-01 09:52 __MACOSX\lameTest\
文件 120 2015-12-01 09:52 __MACOSX\lameTest\._.DS_Store
目录 0 2015-12-01 09:52 lameTest\lameTest\
文件 6148 2015-12-01 09:52 lameTest\lameTest\.DS_Store
目录 0 2015-12-01 09:52 __MACOSX\lameTest\lameTest\
文件 120 2015-12-01 09:52 __MACOSX\lameTest\lameTest\._.DS_Store
文件 745 2015-11-30 14:28 lameTest\lameTest\Ali
文件 171 2015-11-30 14:28 __MACOSX\lameTest\lameTest\._Ali
文件 5512 2015-11-30 15:04 lameTest\lameTest\Ali
文件 171 2015-11-30 15:04 __MACOSX\lameTest\lameTest\._Ali
文件 272 2015-11-13 17:13 lameTest\lameTest\AppDelegate.h
文件 171 2015-11-13 17:13 __MACOSX\lameTest\lameTest\._AppDelegate.h
文件 2026 2015-11-13 17:19 lameTest\lameTest\AppDelegate.m
文件 171 2015-11-13 17:19 __MACOSX\lameTest\lameTest\._AppDelegate.m
目录 0 2015-11-13 17:13 lameTest\lameTest\Assets.xcassets\
目录 0 2015-11-13 17:13 lameTest\lameTest\Assets.xcassets\AppIcon.appiconset\
文件 585 2015-11-13 17:13 lameTest\lameTest\Assets.xcassets\AppIcon.appiconset\Contents.json
目录 0 2015-12-01 09:52 __MACOSX\lameTest\lameTest\Assets.xcassets\
目录 0 2015-12-01 09:52 __MACOSX\lameTest\lameTest\Assets.xcassets\AppIcon.appiconset\
文件 171 2015-11-13 17:13 __MACOSX\lameTest\lameTest\Assets.xcassets\AppIcon.appiconset\._Contents.json
目录 0 2015-11-25 16:08 lameTest\lameTest\ba
文件 1664 2015-11-13 17:13 lameTest\lameTest\ba
目录 0 2015-12-01 09:52 __MACOSX\lameTest\lameTest\ba
文件 171 2015-11-13 17:13 __MACOSX\lameTest\lameTest\ba
文件 1588 2015-11-25 16:08 lameTest\lameTest\ba
文件 3963 2015-11-27 16:20 lameTest\lameTest\GDAudioTranscoder.h
文件 171 2015-11-27 16:20 __MACOSX\lameTest\lameTest\._GDAudioTranscoder.h
文件 36560 2015-11-30 15:04 lameTest\lameTest\GDAudioTranscoder.m
............此处省略152个文件信息
相关资源
- window 采集扬声器音频并播放
- 多功能资讯、电商APP的Axure原型套装
- BIOSTATISTICS A Foundation for Analysis in the
- TI DSP-BIOS用户手册与驱动开发完整
- gns3 动态nat 静态nat 实验配置工程文件
- vxWorks学习资料,适合初学者
- Nios ii 奇幻漂流 完整版
- 《高性能iOS应用开发》高清版pdf
- nagios监控脚本,插件,操作文档
- Programming iOS 12
- 网上商城ios源码
- iOS 12.3.zip
- Location IOS12.3驱动
- DSP集成开发环境:CCS及DSP_BIOS的原理完
- [cnswift.org翻译]最新swift 5中文翻译
- Xcode支持iOS12.2 设备真机测试包
- 上瘾hooked
- ios12.3真机调试包.zip
- 思科C7200路由器ios
- ffmpeg音频处理
- 苹果手机驱动12.4,Location IOS12.4驱动
- iOS9-iOS12+Myuppy加粗精修版
- Location虚拟定位ios12.1破解版.zip
- cat4500e-entservices-mz.152-4.E1.zip
- 大黄蜂视频格式转换软件
- vivado+zedboard之音频分析仪_HW
- B85-PLUS R2.0 BIOS v0504 WITH NVME
- unc0ver_5.2.0.ipa
- 视频流、视频、音频格式的流文件播
- Xcode iOS 12.2 DeveloperDiskImage
评论
共有 条评论