資源簡介
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個文件信息
評論
共有 條評論