私は非常に似た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にあり、現在調査中です。
まだ、何もありません。最初は同じことを考えましたが、AVPlayerを項目なしでURLだけを初期化してから、別のものにする必要がありました...ありがとうございました – Echizzle
問題をデバッグするのに役立ついくつかの追加事項を追加しました。あなたはプレーヤーのステータスとあなたが得ているエラーを報告する必要があります。 – Daniel
ありがとうございます。エラーはnilで、アイテムが存在し、FirebaseのダウンロードURLを表示します。これは、他のプロジェクトと同様です。私はKVOを調べます。 Objective-Cコードがなぜ完璧に動作するのか、同じSwiftコードではうまくいかない理由を知りたいだけです。私は両方の言語がちょっと違うが、それでもなお動作することを知っている! – Echizzle