AVQueuePlayer воспроизводится, но нет звука

#ios #objective-c

#iOS #objective-c

Вопрос:

 - (void)playVideoInteractionNarration:(NSString *)vNarr{

[self pauseActionExecution];

NSURL *u = [NSURL fileURLWithPath:vNarr];
AVQueuePlayer *player = [[AVQueuePlayer alloc] initWithURL:u];
self.controller = [[AVPlayerViewController alloc]init];
controller.player = player;
controller.showsPlaybackControls=NO;

[controller.player setActionAtItemEnd:AVPlayerActionAtItemEndAdvance];

[[NSNotificationCenter defaultCenter]
 addObserver:self
 selector:@selector(videoNarrationFinishedPlaying:)                                                 
 name:AVPlayerItemDidPlayToEndTimeNotification
 object:player.currentItem];
//NSLog(@"MPVIDEOOOOOOO %@", player);

[controller.player setVolume:1.0];
[controller.player setMuted:NO];
[controller setViewInCurrentController];
[controller.player play];

}

- (void)videoNarrationFinishedPlaying:(NSNotification *) aNotification{

AVPlayerItem * item = [aNotification object];

[self.controller removeViewInCurrentController];
[[NSNotificationCenter defaultCenter] removeObserver:self
                                                name:AVPlayerItemDidPlayToEndTimeNotification
                                              object:item];

[self.controller.player pause];
[self.controller release];
[self playActionExecution];
}
  

видео запускается и завершается корректно, но звука НЕТ
почему?

Комментарии:

1. вы тестируете приложение is на устройстве или симуляторе?

2. нет на устройстве…

3. Есть ли режим вибрации устройства? или в sound затем увеличьте звук по умолчанию

4. нет, это не в режиме вибрации, звук на максимуме

5. почему -1, я не понимаю!

Ответ №1:

правильный ответ таков:

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

Ответ №2:

 @import AVKit;
@import AVFoundation;
@property (nonatomic) AVPlayer *avPlayer; 



NSURL *fileURL = [NSURL URLWithString:@"https://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4"];
  self.avPlayer = [AVPlayer playerWithURL:fileURL];
  self.avPlayer.actionAtItemEnd = AVPlayerActionAtItemEndNone;

  AVPlayerLayer *videoLayer = [AVPlayerLayer playerLayerWithPlayer:self.avPlayer];
  videoLayer.frame = self.view.bounds;
  videoLayer.videoGravity = AVLayerVideoGravityResizeAspectFill;
  [self.view.layer addSublayer:videoLayer];
  [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(itemDidFinishPlaying:) name:AVPlayerItemDidPlayToEndTimeNotification object:[self.avPlayer currentItem]];

  [self.avPlayer play];
  

Попробуйте этот код и прокомментируйте свой и проверьте, работает ли звук на вашем устройстве или нет?

Комментарии:

1. мне пришлось немного изменить код, потому что у меня нет [self.view. слой добавляет дублирующий слой: видеоплеер];

2. @T-student попробуйте этот код в своем симуляторе и проверьте это на другом устройстве

3. но я использовал self.controller = [[AVPlayerViewController alloc]init]; controller.player = self.AVPlayer; [self.controller setViewInCurrentController]; вместо [self.view. слой добавляет дублирующий слой: видеоплеер]

4. @T-student вы хотели воспроизвести видео с вашим фиксированным размером на вашем контроллере или отобразить на весь экран?

5. в полноэкранном режиме, но приложение довольно сложное, у меня нет представления, в котором я воспроизводю видео, поэтому я не могу выполнить [self.view … ] у меня этого нет.