0

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

4

1 回答 1

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];
        }
    }
于 2013-03-25T12:24:57.720 回答