0

サーバーから映画をダウンロードして、NSDocumentDirectoryにローカルに保存するアプリを作成しています。

これは正常に機能します。

各セルの名前の前に、各映画から生成されたサムネイルを追加したいと思います。

私の問題:

ダウンロード後に映画からサムネイルを生成するにはどうすればよいですか(最初に映画を再生しなくてもすぐに)?NSDocumentDirectoryにjpgと同じ名前の映画のサムネイルを保存したいと思います。

私の推測

-映画をダウンロードしてNSDocumentDirectoryに保存する(作品)

-どういうわけか、MPMoviePlayerControllerのメモリにムービーをロードします(方法はわかりません)

-メモリにロードされたときに、thumbnailImageAtTime(MPMovieTimeOptionNearestKeyFrame)でサムネイルを生成します(機能するはずです)

-それを保存します(動作するはずです)

誰かが私を助けることができれば...

ありがとう

4

3 に答える 3

5
#import <MediaPlayer/MediaPlayer.h>   


-(UIImage*)getFirstFrameFromVideoFile:(NSString*)sourceFilePath {
NSURL *videoURL = [NSURL fileURLWithPath:sourceFilePath];

MPMoviePlayerController *player = [[MPMoviePlayerController alloc] initWithContentURL:videoURL];

UIImage *thumbnail = [player thumbnailImageAtTime:1.0 timeOption:MPMovieTimeOptionNearestKeyFrame];
//Player autoplays audio on init
[player stop];
[player release];
return thumbnail;
}

あなたがすでに知っている他のタスク。

于 2012-05-25T10:07:50.943 に答える
1

これは、サムネイルを生成するために使用するコードです (テスト用に大きな uiimageview を追加し、ローカル画像をロードすると機能します)

NSString *path;
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    path = [[paths objectAtIndex:0] stringByAppendingPathComponent:@"snijtechniekendir/videos"];
    path = [path stringByAppendingPathComponent:[videos objectAtIndex:indexPath.row]];

    NSURL *videoURL = [NSURL fileURLWithPath:path];

    NSLog(@"video url: %@", videoURL);

    MPMoviePlayerController *player = [[MPMoviePlayerController alloc] initWithContentURL:videoURL];

    UIImage *thumbnail = [player thumbnailImageAtTime:1 timeOption:MPMovieTimeOptionNearestKeyFrame];

    UIImageView *cellimage = [[UIImageView alloc] initWithFrame:CGRectMake(2, 2 , 400, 400)];

    [cell.contentView addSubview:cellimage];
    NSData *imgData = UIImagePNGRepresentation(thumbnail);
    NSLog(@"lenght of video thumb: %@", [imgData length]);
    [self.view addSubview:cellimage];
    [cellimage setImage:thumbnail];

これは、1 つのビデオ ファイルのログです。

video url: file://localhost/Users/Home/Library/Application%20Support/iPhone%20Simulator/5.1/Applications/78C165BB-75A9-46A2-A257-469F8652A665/Documents/snijtechniekendir/videos/snijtechniek%2520brunoise.mp4

lenght of video thumb: (null)
于 2012-05-25T11:03:58.813 に答える