ios - 从文件中获取字节数据

标签 ios avfoundation avaudiorecorder

我在做什么 我正在尝试获取我用 AVAudioRecorder 录制的音频文件(可能长达一个小时。例如 Podcast)以上传到我们的后端。除了上传到服务器之外,如果用户选择,它还需要能够“暂停”和“恢复”。因此,我相信,我需要在 NSData 类上使用 dataWithBytesNoCopy:buffer 来实现这一点。

我在哪里 我知道我可以使用传递的 self.mediaURL 属性获取数据:

if (self.mediaURL) {

    NSData *audioData = [NSData dataWithContentsOfURL:self.mediaURL];

    if (audioData) {

        [payloadDic setObject:audioData forKey:@"audioData"];
    }

}

但是,这不会给我所需的功能。我正在尝试跟踪上传的字节数,以便在用户暂停时我可以继续。

问题 我如何使用提供的 self.mediaURL 来检索文件并能够像本示例一样计算字节长度?

Byte *buffer = (Byte*)malloc((long)audioFile.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];

最佳答案

与其尝试重新发明轮子而让事情变得更加复杂,不如使用系统为您提供的东西。 NSURLSession 让你做一个 background upload .您将任务交给 session (使用后台 session 配置创建)然后走开。如果可以,上传会分段进行。无需“暂停”或“恢复”;系统会处理一切。您的应用程序甚至不必运行。如果需要身份验证,您的应用程序将根据需要在后台唤醒。该架构只是针对您所描述的情况而设计的。

如果问题是您想要随机访问文件数据而不必将整个内容读入大量 NSData,请使用 NSFileHandle。

关于ios - 从文件中获取字节数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33092220/

相关文章:

iOS 7 m4a 到 mp3 编码 - 这可能吗?

iphone - 如何在 iPhone 上显示音频表

ios - 解析文件查询和 Swift 1.2 错误 - getDataInBackgroundWithBlock

iOS:AVPlayer 显示黑屏并且无法播放某些 mp4 视频

ios - 为什么 AVFoundation 中不存在 AVPlayerItemAudioOutput?

ios - AVQueuePlayer 从 Assets 跳转到另一个 Assets 时出现恼人的滞后

ios - 初始化前使用的常量 'error'

ios - App first Run 和 NSUserDefaults,它让我眼花缭乱。

ios - 着色器中的多个纹理单元与多个半透明纹理网格 - 性能

iPhone - 跟踪蜂窝数据使用情况