J'ai réussi à obtenir AVPlayer
de travail avec AVAssetResourceLoaderDelegate
pour lire le fichier m4a sur iOS 7
mais je ne peux pas le faire sur iOS 6
.AVAssetResourceLoaderDelegate protocole sur iOS 6
La méthode déléguée
- (BOOL)resourceLoader:(AVAssetResourceLoader *)resourceLoader
shouldWaitForLoadingOfRequestedResource:(AVAssetResourceLoadingRequest *)loadingRequest
est appelé avec la demande suivante:
2014-05-12 15:14:58.798 AVPlayer-Delegate[661:1103] Requested data: {
Range = "bytes=0-1";
"X-Playback-Session-Id" = "5B64BE4E-442A-4A37-9263-04D22CDBCB28";
}
Je retourne les deux premiers octets comme demandé, mais la méthode de délégué est jamais appelé à nouveau. J'essayais de fournir différents en-têtes dans l'objet de réponse que je transmets mais cela n'a pas aidé.
Ceci est mon application:
- (BOOL)resourceLoader:(AVAssetResourceLoader *)resourceLoader
shouldWaitForLoadingOfRequestedResource:(AVAssetResourceLoadingRequest *)loadingRequest
{
NSLog(@"Requested data: %@",
loadingRequest.request.allHTTPHeaderFields);
NSDictionary *headers = @{@"Content-Type": @"audio/x-m4a",
@"Accept-Ranges" : @"bytes",
@"Content-Length" : [NSString stringWithFormat:@"%d", 2],
@"Content-Range" : [NSString stringWithFormat:@"bytes 0-1/%d", self.fileData.length],
@"X-Playback-Session-Id" : loadingRequest.request.allHTTPHeaderFields[@"X-Playback-Session-Id"],
@"ETag" : @"TAG"};
NSHTTPURLResponse *response = [[NSHTTPURLResponse alloc] initWithURL:loadingRequest.request.URL statusCode:206 HTTPVersion:@"HTTP/1.1" headerFields:headers];
//NSURLResponse *response = [[NSURLResponse alloc] initWithURL:loadingRequest.request.URL MIMEType:@"audio/m4a" expectedContentLength:self.fileData.length textEncodingName:@"UTF-8"];
NSData *requestedData = [self.fileData subdataWithRange:NSMakeRange(0, 2)];
[loadingRequest finishLoadingWithResponse:response data:requestedData redirect:nil];
return YES;
}
Je voudrais vraiment apprécier toute aide avec elle.
Merci.
Avez-vous déjà trouvé une solution? Je vois le même comportement (seulement les deux premiers octets demandés) sur un appareil iOS 7. Il n'y a aucune demande après la demande initiale pour les deux premiers octets. – Alexander