2016-10-07 3 views
6

Ich benutze AVPlayer mit AVPlayerViewController. Ich spiele Video nach dem Hinzufügen von Wasserzeichen im Video. Manchmal funktioniert es gut, aber manchmal zeigt es nur einen schwarzen Bildschirm und Audio ist in beiden Fällen in Ordnung.Avplayer zeigt manchmal schwarzen Bildschirm aber Ton ist in Ordnung

vPlayer = [AVPlayer playerWithURL:_videoFilePath]; 
// create a player view controller 
AVPlayerViewController *controller = [[AVPlayerViewController alloc]init]; 
controller.videoGravity=AVLayerVideoGravityResizeAspect; 
controller.player = vPlayer; 
[vPlayer seekToTime:kCMTimeZero]; 

// show the view controller 
[self addChildViewController:controller]; 
[vPlayer play]; 
controller.view.frame =_imgForVidFrame.frame; 
[self.view addSubview:controller.view]; 
+0

ist dies iOS10? Hast du die iOS10.1 Beta ausprobiert? –

+0

ja, ich arbeite an iOS10, nicht an 10.1 versucht –

+0

@DeepakChaudhary haben Sie die Antwort finden? –

Antwort

0

Vergewissern Sie sich, dass _imgForVidFrame.frame richtigen Rahmen jedes Mal zurückkehrt! Sie können einen Haltepunkt in diese Zeile setzen, um zu überprüfen, ob die richtige Größe zurückgegeben wird oder nicht!

und Ihre letzte Zeile sollte [self.view addSubview:controller.view]; nicht controller.view.frame =_imgForVidFrame.frame; so tauschen Sie es!

Update:

dann können Sie so etwas wie unten withou AVPlayerViewController tun,

AVPlayer *player = [AVPlayer playerWithURL:_videoFilePath]; 
AVPlayerLayer *playerLayer = [AVPlayerLayer playerLayerWithPlayer:player]; 
playerLayer.frame = self.view.bounds; 
[self.view.layer addSublayer:playerLayer]; 
[player play]; 

oder können Sie AVPlayerViewController etwas wie präsentieren,

AVPlayer *player = [AVPlayer playerWithURL:_videoFilePath]; 
AVPlayerViewController *playerViewController = [AVPlayerViewController new]; 
playerViewController.player = player; 
[self presentViewController:playerViewController animated:YES completion:nil]; 
+0

Frame ist korrekt, Spieler ist an der erwarteten Position sichtbar. Ich denke, es gibt ein Problem mit dem AVplayer, manchmal funktioniert es perfekt. –

+0

Ich möchte Video in einem bestimmten Frame, aber durch diese, nicht in der Lage, Frames –

+0

versuchen, stellen Sie Ihren gewünschten Frame anstelle von 'playerLayer.frame = self.view.bounds;' in der ersten Lösung !! – Lion

Verwandte Themen