Objective C - 录制音频流

时间:2015-12-11 19:55:41

标签: objective-c avplayer

我正在寻找将音频流录制到文件的解决方案。我可以播放音频,但我正在努力弄清楚如何录制/保存以播放正在播放的内容。

非常感谢正确方向的推动。

目前为止的玩家代码:

@interface ViewControllerPlayer ()

@end

@implementation ViewControllerPlayer

@synthesize receivedStreamReferenceNumber;

- (void)convertData:(NSData *) data {
    NSString *urlString = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
    NSURL *url = [[NSURL alloc] initWithString:urlString];
    [self loadPlayer:url];
}

- (void) loadPlayer:(NSURL *) url {
    audioPlayer = [AVPlayer playerWithURL:url];
    [audioPlayer play];
}

- (void) start {
    NSLog(@"%@", receivedStreamReferenceNumber);
    NSString *urlHalf = @"http://getstreamurl.php?KeyRef=";
    NSMutableString *mutableUrlString = [NSMutableString stringWithFormat:@"%@%@", urlHalf, receivedStreamReferenceNumber];
    NSURL *url = [NSURL URLWithString: mutableUrlString];
    NSData *data = [NSData dataWithContentsOfURL:url];
    [self convertData:data];
}

- (void)viewDidLoad {
    [super viewDidLoad];
    [self start];
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

@end

编辑:

我已经合并了以下代码......但我正在努力将它们捆绑在一起。以下内容应创建一个记录的流音频保存到的文件。我想我必须告诉AVRecorder听AVPlayer怎么样?再次 - 非常感谢帮助:

- (void)viewDidLoad
{
    [super viewDidLoad];

    [stopButton setEnabled:YES];
    [playButton setEnabled:YES];

    // Set the audio file
    NSArray *pathComponents = [NSArray arrayWithObjects:
                               [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject],
                               @"xxx.mp3",
                               nil];
    NSURL *outputFileURL = [NSURL fileURLWithPathComponents:pathComponents];

    // Setup audio session
    AVAudioSession *session = [AVAudioSession sharedInstance];
    [session setCategory:AVAudioSessionCategoryPlayAndRecord error:nil];


    NSMutableDictionary *recordSetting = [[NSMutableDictionary alloc] init];

    [recordSetting setValue:[NSNumber numberWithInt:kAudioFormatMPEG4AAC] forKey:AVFormatIDKey];
    [recordSetting setValue:[NSNumber numberWithFloat:44100.0] forKey:AVSampleRateKey];
    [recordSetting setValue:[NSNumber numberWithInt: 2] forKey:AVNumberOfChannelsKey];

    recorder = [[AVAudioRecorder alloc] initWithURL:outputFileURL settings:recordSetting error:nil];
    recorder.delegate = self;
    recorder.meteringEnabled = YES;
    [recorder prepareToRecord];
}

0 个答案:

没有答案
相关问题