AVFoundationを誘導してカスタムURLから読み取ろうとしています。カスタムURLのものは機能します。以下のコードは、ムービーファイルを使用してNSDataを作成します。
NSData* movieData = [NSData dataWithContentsOfURL:@"memory://video"];
次のコードを使用してAVAssetResourceLoaderオブジェクトを設定しました。
NSURL* url = [NSURL URLWithString:@"memory://video"];
AVURLAsset* asset = [[AVURLAsset alloc] initWithURL:url options:nil];
AVAssetResourceLoader* loader = [asset resourceLoader];
[loader setDelegate:self queue:mDispatchQueue];
ディスパッチキューは同時です。
次に、ムービーから最初のフレームを抽出しようとします。
AVAssetImageGenerator* imageGen = [AVAssetImageGenerator assetImageGeneratorWithAsset:asset];
CMTime time = CMTimeMakeWithSeconds(0, 600);
NSError* error = nil;
CMTime actualTime;
CGImageRef image = [imageGen copyCGImageAtTime:time
actualTime:&actualTime
error:&error];
if (error) NSLog(@"%@", error);
しかし、これを実行すると、次のようになります。
2013-02-21 10:02:22.197 VideoPlayer[501:907] Error Domain=AVFoundationErrorDomain Code=-11800 "The operation could not be completed" UserInfo=0x1f863090 {NSLocalizedDescription=The operation could not be completed, NSUnderlyingError=0x1e575a90 "The operation couldn’t be completed. (OSStatus error 268451843.)", NSLocalizedFailureReason=An unknown error occurred (268451843)}
デリゲートメソッドの実装は次のとおりです。
- (BOOL)resourceLoader:(AVAssetResourceLoader *)resourceLoader shouldWaitForLoadingOfRequestedResource:(AVAssetResourceLoadingRequest *)loadingRequest
{
NSData* data = [NSData dataWithContentsOfURL:loadingRequest.request.URL];
[loadingRequest finishLoadingWithResponse:nil data:data redirect:nil];
return YES;
}
さて、私の質問は、メソッドを正しく実装していますか?私がしていることが正しいかどうか誰かが知っていますか?
ありがとう。
編集:私が全体をフェッチしている映画は、シングルフレームの映画です。