ЧТО ДЕЛАТЬ Я пытаюсь получить аудиофайл (может быть до часа, например, подкаст), который я записал с AVAudioRecorder, который будет загружен на наш сервер. В дополнение к тому, чтобы быть загруженным на сервер, он должен иметь возможность «приостанавливаться» и «возобновляться», если пользователь выбирает. Из-за этого, я считаю, мне нужно использовать dataWithBytesNoCopy:buffer
для класса NSData
.Получение байт Данные из файла
ГДЕ ИМ НА Я знаю, за то, что я могу получить данные с помощью переданной 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];
Спасибо за ответ. Но наша команда явно хочет кнопку «Пауза», чтобы остановить загрузку, и кнопку «Возобновить», чтобы начать загрузку с места, в котором был остановлен файл. Таким образом, наш API будет разработан, чтобы отправить нам заголовок, как только пользователь нажмет «Возобновить», в котором будет содержаться последний байт, на котором остановилась загрузка, тогда мне нужно будет взять эту информацию и подключить ее в буфер dataWithBytesNoCopy: ', чтобы начать загрузку с правой позиции в данных. –
Ну, задача загрузки не возобновляется, поэтому вы в конечном итоге выполните всю работу самостоятельно ... – matt
Добавил в мой ответ упоминание о NSFileHandle; это может быть то, что вы ищете. – matt