2017-11-30 2 views
0

Hallo spielt Ich habe eine iOS Objective-C-App, die Storyboards nicht verwenden (Es verwendet XIB-Dateien)AVPlayer auf ios Objective C app nicht Video

Ich möchte ein Video einen Begrüßungsbildschirm hinzufügen zu spielen, damit ich hat eine neue Coca Touch-Klasse hinzugefügt, die von UIViewController abgeleitet wurde (und 'Ich erstelle auch XIB-Datei' angekreuzt).

Ich habe diese Klasse als meinen neuen Hauptbildschirm getauscht und es lädt richtig, aber das Video nicht abgespielt. Ich habe das AVFoundation-Framework usw. hinzugefügt, das ist also kein Problem.

Hier ist mein Code.

.h Datei

#import <UIKit/UIKit.h> 

@interface VideoIntroViewController : UIViewController 
@property (strong, nonatomic) NSManagedObjectContext *managedObjectContext; 
@end 

.m-Datei

import <AVFoundation/AVFoundation.h> 

static const float PLAYER_VOLUME = 0.0; 

@interface VideoIntroViewController() 

@property (nonatomic) AVPlayer *player; 
@property (weak, nonatomic) IBOutlet UIView *playerView; 

@end 

@implementation VideoIntroViewController 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    [self createVideoPlayer]; 
} 

- (void)createVideoPlayer 
{ 
    NSString *filePath = [[NSBundle mainBundle] pathForResource:@"welcome_video" ofType:@"mp4"]; 
    NSURL *url = [NSURL fileURLWithPath:filePath]; 

    AVPlayerItem *playerItem = [AVPlayerItem playerItemWithURL:url]; 

    self.player = [AVPlayer playerWithPlayerItem:playerItem]; 
    self.player.volume = PLAYER_VOLUME; 

    AVPlayerLayer *playerLayer = [AVPlayerLayer playerLayerWithPlayer:self.player]; 
    playerLayer.videoGravity = UIViewContentModeScaleToFill; 
    playerLayer.frame = self.playerView.layer.bounds; 
    [self.playerView.layer addSublayer:playerLayer]; 

    [self.player play]; 
} 

Der Bildschirm gestartet, aber keine Videospiele.

Was könnte schief gehen?

+0

Welches Debugging haben Sie durchgeführt? Was passiert eigentlich zur Laufzeit in der 'createVideoPlayer' Methode? Welchen Rahmen hast du 'playerLayer.frame' zugewiesen? Ist alles "Null"? – rmaddy

+0

Ich debugge im Simulator, nichts ist Null in createVideoPlayer. Ich sehe im Debug-Ausgabefenster viele AQDefaultDevice überspringen Eingangsstrom 0 0 0x0 Nachrichten. –

Antwort

0

In meiner XIB-Hauptdatei hatte ich kein View-Steuerelement platziert. Als ich ein View Control und dann CTL + Right angeklickt habe und es mit meinem playerView verbunden habe dann spielte es das Video ab.

1

Versuchen Sie diesen Code:

NSString * filePath = [[NSBundle main] pathForResource: @ "welcome_video" ofType: @ "mp4"];

NSURL *url = [NSURL fileURLWithPath:filePath]; 

AVPlayerItem *playerItem = [AVPlayerItem playerItemWithURL:url]; 

self.player = [AVPlayer playerWithPlayerItem:playerItem]; 

CALayer *superlayer = self.playerView.layer; 
self.player.volume = 20.0; 

AVPlayerLayer *playerLayer = [AVPlayerLayer playerLayerWithPlayer:self.player]; 
[playerLayer setFrame:self.playerView.bounds]; 
playerLayer.videoGravity = AVLayerVideoGravityResizeAspectFill;// you can also use AVLayerVideoGravityResizeAspect to clip video to view's bound 
playerLayer.frame = self.playerView.layer.bounds; 
[superlayer addSublayer:playerLayer]; 
[self.player seekToTime:kCMTimeZero]; 
[self.player play]; 

Ich habe es für eine andere Videodatei überprüft und es funktioniert gut.