如何录制应用程序屏幕的视频

时间:2013-03-25 11:40:29

标签: iphone ios

我创建了一个流式视频应用。现在我想录制在MPVideoPlayer中播放的视频,以及它的声音。我试过了this code。但这段代码只记录黑屏而没有声音。我动态添加MPVideoPlayer实例。所以,PLZ帮我做这个任何源代码或库都会有很大的帮助。

1 个答案:

答案 0 :(得分:0)

试试这个:

.h文件        导入MediaPlayer / MediaPlayer.h

    NSString *strSelectedVideoPath;
    MPMoviePlayerController *player

    @property (nonatomic,retain) NSString *strSelectedVideoPath;
    @property (nonatomic,retain) MPMoviePlayerController *player;

.m文件

    -(void) viewWillAppear:(BOOL)animated {
        [super viewWillAppear:animated];

        player = [[MPMoviePlayerController alloc] initWithContentURL:[NSURL URLWithString:strSelectedVideoPath]];
        player.scalingMode = MPMovieScalingModeFill;
        player.movieSourceType = MPMovieSourceTypeFile;
        player.view.frame = CGRectMake(0, 45, 320, 400);
        player.shouldAutoplay = YES;
        [player prepareToPlay];
        [self.view addSubview:player.view];
        [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(movieFinishedCallback:) name:MPMoviePlayerPlaybackDidFinishNotification object:player];

        [player play];
    }


    - (void) movieFinishedCallback:(NSNotification*) aNotification {
        MPMoviePlayerController *player1 = [aNotification object];
        [[NSNotificationCenter defaultCenter] removeObserver:self name:MPMoviePlayerPlaybackDidFinishNotification object:player1];
        [player1.view removeFromSuperview];
        player1 = nil;

    }

您必须添加MediaPlayer.framework

录制视频:

    -(void) imagePickerController: (UIImagePickerController *) picker didFinishPickingMediaWithInfo: (NSDictionary *) info {

    NSString *mediaType = [info objectForKey: UIImagePickerControllerMediaType];
    [self dismissModalViewControllerAnimated:NO];

    if (CFStringCompare ((CFStringRef) mediaType, kUTTypeMovie, 0)
        == kCFCompareEqualTo) {

                NSString *moviePath = [[info objectForKey: UIImagePickerControllerMediaURL] path];
                if (UIVideoAtPathIsCompatibleWithSavedPhotosAlbum (moviePath)) {
                     UISaveVideoAtPathToSavedPhotosAlbum (moviePath,self,@selector(video:didFinishSavingWithError:contextInfo:), nil);
                    }
            }
    }


    - (void)video:(NSString*)videoPath didFinishSavingWithError:(NSError*)error contextInfo:(void*)contextInfo {

        if (error) {

        }
        else{        
            NSURL *videoURl = [NSURL fileURLWithPath:videoPath];
            AVURLAsset *asset = [[AVURLAsset alloc] initWithURL:videoURl options:nil];
            AVAssetImageGenerator *generate = [[AVAssetImageGenerator alloc] initWithAsset:asset];
            generate.appliesPreferredTrackTransform = YES;
            NSError *err = NULL;
            //For Thumb Image
            CMTime time = CMTimeMake(1, 60);
            CGImageRef imgRef = [generate copyCGImageAtTime:time actualTime:NULL error:&err];

            self.strUploadVideoPath = videoPath;



            CGImageRelease(imgRef);
            [generate release];
            [asset release];
        }
    }