2010-07-16 3 views
2

피커를 사용하여 비디오의 미리보기 이미지를 만드는 것은 간단합니다. 그러나 피커에서 PLAY를 누른 다음 동영상을 선택하면 미리보기 이미지가 항상 검은 색으로 표시됩니다. 나는 그것이 스크린 샷을 만들기를 바랬다. 그러나이 방법은 비디오의 첫 번째 이미지 만 가져왔다.비디오에서 미리보기 이미지 만들기 - 미리보기에서 사용할 이미지 선택

어떻게하면 비디오의 어떤 위치에서 축소판을 만들 수 있습니까? 여기

나는 동영상이 재생되지 축소판에 사용하는 "정상"코드 :

- (void) mediaPicker: (MPMediaPickerController *) mediaPicker didPickMediaItems: (MPMediaItemCollection *) mediaItemCollection { 

    CGSize size = viewImage.size; 
    CGFloat ratio = 0; 
    if (size.width > size.height) { 
     ratio = 80.0/size.width; 
    } else { 
     ratio = 80.0/size.height; 
    } 
    CGRect rectForthumbnail = CGRectMake(0.0, 0.0, ratio * size.width, ratio * size.height); 

    UIGraphicsBeginImageContext(rectForthumbnail.size); 

    CGRect clipRect = CGRectMake(0.0, 0.0,74,74); 
    [viewImage drawInRect:clipRect]; 
    dance.thumbnailImage = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 

누르면 "재생"을 가진 후에는, 불행하게도, 생성 된 썸네일은 상단이 표시됩니다 (검은 색 비디오 롤과 현재 재생 위치가 표시된 iphone 화면)의 경우, 썸네일의 나머지는 항상 검은 색입니다. 마찬가지로, 다른 경우에는 잘 작동합니다.

대단히 감사합니다.

+0

안녕 지포스은 또한 (다만 코멘트) 답변으로 이것을 넣어주십시오 수 있도록 내가로 확인하실 수 있습니다 해결됨 - 그게 내가 찾던 것이라고 확신합니다 ... – user387184

답변

3

MPMoviePlayerController doku : link을 확인하십시오. 놈의는 "thumbnailImageAtTime : timeOption :"기능있는 UIImage를 반환 .. 희망 당신은 MPMoviePlayerController를 사용하는 경우

1

도움 당신은 당신이 MPMoviePlayer를 사용하는 경우이

- (void)getThumbnailImage 
{ 
UIImage *thumbnailImage = [player thumbnailImageAtTime:player.currentPlaybackTime timeOption:MPMovieTimeOptionExact]; 
} 
1

당신은 MPMoviePlayerController thumbnailImageAtTime:timeOption 방법을 사용할 수 있습니다 시도 할 수 있습니다.

-(UIImage *)thumbnailImageFromVideo:(NSString *)videoPath 
{ 
    NSURL *videoURL = [NSURL fileURLWithPath:videoPath]; 
    MPMoviePlayerController *player = [[MPMoviePlayerController alloc] initWithContentURL:videoURL]; 
    UIImage *thumbnailImage = [player thumbnailImageAtTime:1.0 timeOption:MPMovieTimeOptionNearestKeyFrame]; 

    //Player autoplays audio on init 
    [player stop]; 
    return thumbnailImage; 
} 

또는 수동으로 다음과 같은 방법을 사용하여 비디오에서 썸네일 이미지를 얻을 수 있습니다 -

-(UIImage *)thumbnailCreationForVideo:(NSString *)videoPath 
{ 
    NSURL *videoURL = [[NSURL alloc] initFileURLWithPath:videoPath]; 
    AVURLAsset *myAsset = [[AVURLAsset alloc] initWithURL:videoURL options:nil]; 
    AVAssetImageGenerator *generate = [[AVAssetImageGenerator alloc] initWithAsset:myAsset]; 
    NSError *err = NULL; 
    Float64 durationSeconds = CMTimeGetSeconds([myAsset duration]); 
    CMTime midpoint = CMTimeMakeWithSeconds(durationSeconds/2.0, 600); 
    CGImageRef imgRef = [generate copyCGImageAtTime:midpoint actualTime:NULL error:&err]; 
    UIImage *thumbnailImage = [[UIImage alloc] initWithCGImage:imgRef]; 
    return thumbnailImage; 
} 
관련 문제