2016-05-17 12 views
0

デバイスのカメラからビデオをキャプチャし、そのビデオをデバイスのローカルメモリに格納しています。 AVPlayerを使用しますが、私はvideo.Hereから音を取得していない午前は、ビデオ再生のコードavplayerは、IOSカメラのデバイスカメラからキャプチャされた音声を再生しません。C

[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:nil]; 
    [[AVAudioSession sharedInstance] setActive:YES error:nil]; 

    _avPlayer=[[AVPlayer alloc]initWithURL:url]; //URL of my recorded video 
    _avPlayerLayer =[AVPlayerLayer playerLayerWithPlayer:_avPlayer]; 
    [_avPlayerLayer setFrame:CGRectMake(0, 0, self.videoview.frame.size.width, self.videoview.frame.size.height)]; 
    [_avPlayerLayer setBackgroundColor:[[UIColor blackColor]CGColor]]; 
    _avPlayerLayer.videoGravity = AVLayerVideoGravityResizeAspectFill; 
    [self.pictureview.layer addSublayer:_avPlayerLayer]; 
    [_avPlayer seekToTime:kCMTimeZero]; 
    _avPlayer = [self rotateVideoPlayer:_avPlayer withDegrees:0.0]; 
    _avPlayer.volume = 1.0; 
    [_avPlayer play]; 

です注: - ビデオは鳴りましたのでプレビューした後、私は、サーバー上と私ができるという点で、ビデオをアップロードしています録画したビデオから音声を聞く。

私は映像を記録するためにAVCaptureSessionを使用していますが、がAVCaptureDeviceとしてAVMediaTypeVideoAVMediaTypeAudioを追加しました。再生時に問題が発生します。再生の前に、AVCaptureSessionからAVCaptureDeviceデバイスを削除し、キャプチャしたビデオを再生します。

+0

を助ける

ホープだから、問題はビデオがキャプチャされていない、または再生されないということでしょうか? – Lefteris

+0

再生中にビデオの音声が再生されないという問題があります。 –

答えて

0

私は時間前に同じ問題を持って、AppDelegateのメソッドにこのコードを追加するには、私を助け:また

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
     NSError *err; 
     AVAudioSession *session = [AVAudioSession sharedInstance]; 
     bool success = [session setCategory:AVAudioSessionCategoryPlayback 
             error:&err]; 
     if (!success) { 
      DLog(@"error changing audio mode %@", err); 
      [session setCategory:AVAudioSessionCategoryPlayback 
          error:&err]; 
      if (err) { 
       DLog(@"error changing audio mode %@", err); 
      } 
     } 
} 

それが解決しない場合は、お使いのデバイス上の「ミュート」ボタンをオフにしてみてください。 存在する場合はエラーの説明も確認してください。

更新: オーディオ入力をこのように初期化していますか?

 AVCaptureDevice *audioDevice = [[AVCaptureDevice devicesWithMediaType:AVMediaTypeAudio] firstObject]; 
     AVCaptureDeviceInput *audioDeviceInput = [AVCaptureDeviceInput deviceInputWithDevice:audioDevice error:&error]; 

     if (error) 
     { 
      NSLog(@"%@", error); 
     } 

     if ([session canAddInput:audioDeviceInput]) 
     { 
      [session addInput:audioDeviceInput]; 
     } 
+0

あなたの答えをありがとう。しかしそれは2回だけしか働かず、私は同じ問題を抱えていません。 –

+0

ビデオをカメラロールに保存してから、ネイティブのiOSアプリから再生しようとすると、そのサウンドは存在するでしょうか? –

+0

そのサウンドは存在しますが、サウンドを再生していないよりも、アプリでプレビューを再生しようとしているときです。 –

0

MPMoviePlayerControllerで簡単に動画を再生できます。私は次のようにプレイしています1つの私のプロジェクト、

self.videoController = [[MPMoviePlayerController alloc] init]; 

[self.videoController setContentURL:videourl]; 
[self.videoController.view setFrame:CGRectMake (0, 0, self.view.frame.size.width, self.view.frame.size.height)]; 
[self.view addSubview:self.videoController.view]; 

UIButton *closeButton = [[UIButton alloc]initWithFrame:CGRectMake(self.view.frame.size.width-60, 20, 60, 30)]; 

[closeButton addTarget:self action:@selector(cancel:) forControlEvents:UIControlEventTouchUpInside]; 

[closeButton setTitle:@"Cancel" forState:UIControlStateNormal]; 

[self.videoController.view addSubview:closeButton]; 

[[NSNotificationCenter defaultCenter] addObserver:self 
             selector:@selector(videoPlayBackDidFinish:) 
              name:MPMoviePlayerPlaybackDidFinishNotification 
              object:self.videoController]; 

[self.videoController play]; 

で、私はあなたを必要としない場合があることを行う必要はありません、閉じるボタンおよびオブザーバを追加しています。

そして<MediaPlayer/MediaPlayer.h>

更新インポートすることを忘れないでください:あなたは代わりにオーディオプレーヤーのavplayer使用

audioSession = [AVAudioSession sharedInstance]; 


    NSError *err; 
    NSError *error; 


    [audioSession setCategory:AVAudioSessionCategoryPlayAndRecord error: &err]; 

    if (err) { 
     NSLog(@"ERROR occured %@",[err localizedDescription]); 
    } 

    [audioSession setActive:YES error: &error]; 

    [audioSession setActive:NO error:nil]; 
    // [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryAmbient error:nil]; 
    [audioSession overrideOutputAudioPort:AVAudioSessionPortOverrideSpeaker 
            error:nil]; 

    [audioSession setActive:YES error:nil]; 



    audioPlayer = nil; 
    //NSError *error; 


    audioPlayer = [[AVAudioPlayer alloc] 
        initWithContentsOfURL:self.audioRecorder1.url 
        error:&error]; 
    // audioPlayer.volume = 1.0; 
    audioPlayer.delegate = self; 
    [audioPlayer prepareToPlay]; 
     [audioPlayer play]; 

を!主な関心はセッションです!これは:)

+0

私はあなたのコードを使用しましたが、まだ録画されたビデオの音が聞こえません –

+0

どのようにビデオを録画していますか? – Lion

+0

私はAVCaptureSessionを使ってビデオを録画しており、AVCaptureDeviceとしてAVMediaTypeVideoとAVMediaTypeAudioを追加しました。それで、それは再生時に何か問題を作ります。再生の前に、AVCaptureSessionからAVCaptureDeviceデバイスを削除し、キャプチャしたビデオを再生します。 –

関連する問題