gpt4 book ai didi

iOS:从 AVAudioRecorder 获取音频

转载 作者:行者123 更新时间:2023-12-02 23:44:52 27 4
gpt4 key购买 nike

免责声明 AVAudioRecorder 的新手

我在做什么我正在开发一个使用 iPhone 麦克风录制声音的应用程序。录制完声音后,我需要将声音(应该是 AVAsset,对吧?)转换成 NSData 发送到我们的后端。

有什么问题问题是我不确定如何“获取”应该使用 AVAudioRecorder 录制的音频。 AVAudioRecorder 有一个名为 - (void)audioRecorderDidFinishRecording:(AVAudioRecorder *) aRecorder successfully:(BOOL)flag 的委托(delegate)方法.我本来希望包含从这个委托(delegate)方法传递的音频的实际 AVAsset,但事实并非如此。它给我的是aRecorder具有 .url 的对象属性(property)。当我 NSLog 来自传递的 aRecorder 的 url ,它出现了。事实上,我可以在下面的代码中 NSLog 文件的长度:

- (void)audioRecorderDidFinishRecording:(AVAudioRecorder *) aRecorder successfully:(BOOL)flag
{
DLog (@"audioRecorderDidFinishRecording:successfully: %@",aRecorder);

AVURLAsset* audioAsset = [AVURLAsset URLAssetWithURL:aRecorder.url options:nil];
CMTime audioDuration = audioAsset.duration;
float audioDurationSeconds = CMTimeGetSeconds(audioDuration);

NSLog(@"asset length = %f", audioDurationSeconds); //Logs 7.051 seconds, so I know it's "there".

self.audioURL = aRecorder.url;
}

问题 当我通过 self.audioURL到下一个 viewController 的 self.mediaURL并尝试从 AssetLibrary 中获取文件(类似于我之前所做的), Assets 不会从 AssetLibrary 返回(即使当我 po self.mediaURL 它确实记录了正确的 url:
if (self.mediaURL) {

ALAssetsLibrary *assetLibrary = [[ALAssetsLibrary alloc] init];
[assetLibrary assetForURL:self.mediaURL resultBlock:^(ALAsset *asset) {

if (asset) {
// This block does NOT get called...

ALAssetRepresentation *rep = [asset defaultRepresentation];
Byte *buffer = (Byte*)malloc((long)rep.size);
NSUInteger buffered =[rep getBytes:buffer fromOffset:0.0 length:(long)rep.size error:nil];

NSMutableData *body = [[NSMutableData alloc] init];
body = [NSMutableData dataWithBytesNoCopy:buffer length:buffered freeWhenDone:YES];

[dataToSendToServer setObject:body forKey:@"audioData"];
}

} failureBlock:^(NSError *error) {

NSLog(@"FAILED TO ACCESS AUDIO FROM URL: %@!", self.mediaURL);
}];

}

else {

NSLog(@"NO AUDIO DATA!");
}
}

因为我是 AVAudioRecorder 的新手,所以我可能只是没有正确设计这个流程。谁能帮我获取实际的音频数据。

谢谢!

最佳答案

AVAudioRecorder 记录到文件,而不是 Assets 库。

因此,您可以简单地从该文件中读取数据。

关于iOS:从 AVAudioRecorder 获取音频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33089971/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com