12

動画のスクリーンショットを撮る方法はサムネイル以外にありませんか?はいの場合は教えてくださいそうでない場合は、同じ解像度でサムネイル画像のサイズを変更する方法を教えてください。ビデオのスクリーンショットを撮っているときに問題が発生しました。これを使用しました:-

iPhoneでMPMediaPlayerControllerを介して再生しているビデオからスクリーンショットを撮る方法は?

この後、これを取得する画像のマージを使用しました解像度の問題

ここでの画質は私の大きな問題です。

これ欲しい

必要な出力

上記のスクリーンショットに示されているビデオと図面だけが同じ結果になります。助けてくださいありがとう:)

4

3 に答える 3

6

動画のスクリーンショットを取得する方法はサムネイル以外にもあります!!!

方法はこれです:-

- (UIImage *)imageFromVideoURL 
{
// result 
UIImage *image = nil;

// AVAssetImageGenerator
AVAsset *asset = [[AVURLAsset alloc] initWithURL:appDelegate.videoURL options:nil];; 
AVAssetImageGenerator *imageGenerator = [[AVAssetImageGenerator alloc] initWithAsset:asset];
imageGenerator.appliesPreferredTrackTransform = YES;

// calc midpoint time of video
Float64 durationSeconds = CMTimeGetSeconds([asset duration]);
CMTime midpoint = CMTimeMakeWithSeconds(durationSeconds/2.0, 600); 

// get the image from 
NSError *error = nil; 
CMTime actualTime;
CGImageRef halfWayImage = [imageGenerator copyCGImageAtTime:midpoint actualTime:&actualTime error:&error];

if (halfWayImage != NULL) 
{
    // cgimage to uiimage
    image = [[UIImage alloc] initWithCGImage:halfWayImage];
    [dic setValue:image forKey:kImage];
    NSLog(@"Values of dictonary==>%@", dic);
    NSLog(@"Videos Are:%@",appDelegate.videoURLArray);
    CGImageRelease(halfWayImage);
}
return image;
}

しかし、それでも私の問題は、ビデオに描画するのと同じで、オーバーレイを描画してビデオのスクリーンショットを取得できないため、画像のマージを使用する必要があります。

ありがとう :)

于 2012-05-25T06:45:07.220 に答える
2

次のコードを試してください。

    moviePlayer = [[MPMoviePlayerController alloc] init];
    containerView =[[UIView alloc]initWithFrame:CGRectMake(40,130, 240,219)];
    [moviePlayer setContentURL:[NSURL fileURLWithPath:moviePath]];
    [[moviePlayer view] setFrame:CGRectMake(0, 0, containerView.frame.size.width, containerView.frame.size.height)];  // frame must match parent view
    [self.view addSubview:containerView];
    [containerView addSubview: [moviePlayer view]];
    [moviePlayer setFullscreen:YES animated:YES];
于 2012-05-16T07:32:06.250 に答える