Я не думаю, что AVFoundation предоставляет доступ ко всем этим тегам. Однако, когда мне нужно отлаживать потоки, я использую пользовательский NSURLProtocol, чтобы перехватить весь трафик. Я иногда думаю, что это лучше, чтобы увидеть необработанный список воспроизведения и ответ HTTP, потому что AVPlayer не дает хорошее сообщение об ошибке (например, «Операция не может быть завершена»)
Хороший учебник по NSURLProtocol можно найти здесь: https://www.raywenderlich.com/59982/nsurlprotocol-tutorial
Сначала система URL загрузки знаю, что вы можете обрабатывать запрос HLS по телефону [NSURLProtocol registerClass:/* your class */]
и переопределить +(BOOL)canInitWithRequest:
+(BOOL)canInitWithRequest:(NSURLRequest *)request {
BOOL handled = [[NSURLProtocol propertyForKey:@"handled" inRequest:request] boolValue];
return [request.URL.pathExtension isEqualToString:@"m3u8"] && !handled;
}
Затем переопределить -(void)startLoading
в пользовательском URLProtocol
-(void)startLoading {
newRequest = [self.request mutableCopy];
[NSURLProtocol setProperty:@YES forKey:@"handled" inRequest:newRequest];
NSURLSessionTask *task = [[NSURLSession sharedSession] dataTaskWithRequest:newRequest
completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
/* Inspect response body(playlist) and error */
NSString *responseBody = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
/* Return data and control to AVPlayer*/
[self.client URLProtocol:self didReceiveResponse:response cacheStoragePolicy:NSURLCacheStorageNotAllowed];
[self.client URLProtocol:self didLoadData:data];
[self.client URLProtocolDidFinishLoading:self];
}];
[task resume];
}
Как вы получили именно эту информацию? Вы вошли в систему? http://stackoverflow.com/questions/13039577/using-avplayer-in-ios-can-you-know-the-current-ts-file-or-the-current-timestamp? – Larme
Нет, я использую Чарльза для регистрации. – RayChen
извините, не могли бы вы указать более подробно @AshishKakkad – RayChen