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 に答える