2

AVFoundationFrameworkを使用してビデオサムネイルを作成しようとしています。正しく追加してインポート#import <AVFoundation/AVFoundation.しましたサムネイルを作成するためのコードは次のとおりです。

AVURLAsset *asset=[[AVURLAsset alloc] initWithURL:[NSURL URLWithString:moviePath] options:nil];
AVAssetImageGenerator *generator = [[AVAssetImageGenerator alloc] initWithAsset:asset];
generator.appliesPreferredTrackTransform=TRUE;
CMTime thumbTime = CMTimeMakeWithSeconds(0,30);

AVAssetImageGeneratorCompletionHandler handler = ^(CMTime requestedTime, CGImageRef im, CMTime actualTime, AVAssetImageGeneratorResult result, NSError *error){
    if (result != AVAssetImageGeneratorSucceeded) {
        NSLog(@"couldn't generate thumbnail, error:%@", error);
    }
    [imageButton setImage:[UIImage imageWithCGImage:im] forState:UIControlStateNormal];
    //UIImage *thumbImg=[UIImage imageWithCGImage:im];
};

CGSize maxSize = CGSizeMake(320, 180);
generator.maximumSize = maxSize;
[generator generateCGImagesAsynchronouslyForTimes:[NSArray arrayWithObject:[NSValue valueWithCMTime:thumbTime]] completionHandler:handler];

これをビルドすると、次のエラーが発生します。

Undefined symbols for architecture i386:_CMTimeMakeWithSeconds", referenced from:
  -[photojournal generateImage] in photojournal.o ld: symbol(s) not found for architecture i386 clang: error: linker command failed with exit code 1 (use -v to see invocation)

GoogleとここStackOverflowで同様の質問を確認しましたが、ソースをコンパイルするために不足しているファイルを追加することがコンセンサスのようです。私の質問は-AVFoundationに不足しているファイルは何ですか?フレームワークをインポートするときに、それらすべてが来るべきではありませんか?ありがとう。

4

2 に答える 2

12

プロジェクトにコアメディアフレームワークを追加する必要があります。

#import <CoreMedia/CoreMEdia.h>

CMTimeはコアメディアフレームワークの一部です。同じエラーが発生しましたが、これで解決しました。

于 2012-09-26T16:34:17.913 に答える
0

andrewmobileの答えを拡張します。#import <CoreMedia / CoreMedia.h>に加えて、ビルドフェーズの「Linkbinarywithlibrary」にCoreMedia.frameworkを追加する必要もあります。

于 2013-04-14T22:35:30.017 に答える