2016-08-13 15 views
2

私は非常に似たSwiftアプリケーションのリファレンスとしてObjective-Cプロジェクトを使用しています。基本的に、ビデオはFirebaseにアップロードされ、ダウンロードURLは「投稿」オブジェクトに保存され、取得時にUITableViewCellで再生されます。 Objective-Cプロジェクト(Firebaseも使用しています)では完全に動作しますが、私はSwiftでいくつかの問題を抱えています。AVPlayerが再生されずレイヤーが表示されない

Objective-Cコードは、私が言ったように、完璧に動作します。

- (void)playVideoWithURL:(NSURL *)url { 

    self.videoPlayer = [[AVPlayer alloc]initWithURL:url]; 
    AVPlayerLayer *layer = [AVPlayerLayer playerLayerWithPlayer:self.videoPlayer]; 
    layer.frame = self.videoView.bounds; 
    [layer setVideoGravity:AVLayerVideoGravityResizeAspect]; 
    [self.videoView.layer addSublayer:layer]; 

    [self.videoPlayer play]; 

} 

スウィフトコード、また、細胞内で、任意のエラーやクラッシュをスローしません、コンパイラは、URLがだけでなく、選手や層が存在すると言う(そのフレームCGRectZero ないですが、あまりにもことを確認)。

@IBOutlet var usernameLabel: UILabel! 
@IBOutlet var captionLabel: UILabel! 
@IBOutlet var avPlayerView: UIView! 

var videoPlayer : AVPlayer! 

func playVideoWithURL(url: NSURL) { 

    self.videoPlayer = AVPlayer(URL: url) 

    let layer = AVPlayerLayer(player: self.videoPlayer) 
    layer.frame = avPlayerView.bounds 
    layer.videoGravity = AVLayerVideoGravityResizeAspect 
    avPlayerView.layer.addSublayer(layer) 

    videoPlayer.play() 

} 

私はそれを信じて私をリードし、それ以来、まだObjective-Cのプロジェクト内のすべての作品や、正常にもスウィフト1で取得されるダウンロードURLを任意のFirebaseコードを投稿しませんそれをシンプルに保つために、この問題とは関係がありません。

アイデア?これは私を夢中にさせている。ありがとうございました!

UPDATE:それはテスト・ビデオと連動するので

AVPlayerが、実際には問題ではありません。問題は現在Firebaseにあり、現在調査中です。

答えて

0

プレイヤーアイテムでプレイヤーを初期化してみてください。

let playerItem = AVPlayerItem(URL: url) 
self.videoPlayer = AVPlayer(playerItem: playerItem) 

また、あなたはKVOを使用してプレーする準備ができているを正確に決定するためにプレイヤーのステータスを確認する必要があります。

Knowing when AVPlayer object is ready to playを参照してください。

プレーヤーのステータスがfailedの場合、エラーはplayerItem.error?で表示されます。問題を判別するのに役立つことを確認してください。

+0

まだ、何もありません。最初は同じことを考えましたが、AVPlayerを項目なしでURLだけを初期化してから、別のものにする必要がありました...ありがとうございました – Echizzle

+1

問題をデバッグするのに役立ついくつかの追加事項を追加しました。あなたはプレーヤーのステータスとあなたが得ているエラーを報告する必要があります。 – Daniel

+0

ありがとうございます。エラーはnilで、アイテムが存在し、FirebaseのダウンロードURLを表示します。これは、他のプロジェクトと同様です。私はKVOを調べます。 Objective-Cコードがなぜ完璧に動作するのか、同じSwiftコードではうまくいかない理由を知りたいだけです。私は両方の言語がちょっと違うが、それでもなお動作することを知っている! – Echizzle

関連する問題