#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 … ] у меня этого нет.