• 大小: 15.2MB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2023-07-04
  • 语言: 其他
  • 标签: ios  音频  转码  PCM  MP3  

资源简介

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\AlinkAudioTransport.h
     文件         171  2015-11-30 14:28  __MACOSX\lameTest\lameTest\._AlinkAudioTransport.h
     文件        5512  2015-11-30 15:04  lameTest\lameTest\AlinkAudioTransport.m
     文件         171  2015-11-30 15:04  __MACOSX\lameTest\lameTest\._AlinkAudioTransport.m
     文件         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\base.lproj\
     文件        1664  2015-11-13 17:13  lameTest\lameTest\base.lproj\LaunchScreen.storyboard
     目录           0  2015-12-01 09:52  __MACOSX\lameTest\lameTest\base.lproj\
     文件         171  2015-11-13 17:13  __MACOSX\lameTest\lameTest\base.lproj\._LaunchScreen.storyboard
     文件        1588  2015-11-25 16:08  lameTest\lameTest\base.lproj\Main.storyboard
     文件        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个文件信息

评论

共有 条评论