2016-09-13 11 views
0

こんにちは仲間のプログラマーをビデオを再生することはできません、私は現在、このコードイム私のTableViewSourceを使用しています:Xamarin:テーブルビューセルに

public override UITableViewCell GetCell(UITableView tableView, NSIndexPath indexPath) 
{ 
    var cell = (RFVideoTBC)tableView.DequeueReusableCell(RFVideoTBC.Identifier(), indexPath); 

    var url = NSUrl.FromString("https://www.youtube.com/watch?v=tAGd-nev78g"); 

    AVPlayer player = AVPlayer.FromUrl(url); 

    var playerViewController = new AVPlayerViewController(); 

    playerViewController.Player = player; 
    playerViewController.View.Frame = new CoreGraphics.CGRect(0, 
                   0, 
                   cell.Frame.Width, 
                   200); 

    playerViewController.ShowsPlaybackControls = false; 
    cell.AddSubview(playerViewController.View); 

    player.Play(); 

    return cell; 
} 

プレーヤーは準備ができているようだ、URLは、HTTPSプロトコルを確認し、プレーヤーのステータスは「再生準備完了」です。

しかし、私が得るすべては黒のキャンバスです:

enter image description here

私のコードが間違っていますか? Xamarinを再起動してアプリケーションをクリーンにして再構築すると、 アクティビティインジケータが3秒間表示されることがありますが、無効な再生ボタンが付いた黒いキャンバスはその後に戻ります。

iOS 9シミュレータとiPhoneでビデオを再生した理由を理解できません。

+1

プレイヤーはUITableViewの外部で独自に動作していますか? – hankide

+0

こんにちは、hankide、残念ながら –

+0

あなたのURLは、YouTubeのページを指しています。あなたはm4pファイルのような実際のビデオファイルに解決するURLを使用しようとしましたか? –

答えて

0

私はこのようにしました(TransportSecurityをオフにすることを忘れないでください)。それは混乱ですが、うまくいきます。

public override void RowSelected(UITableView tableView, NSIndexPath indexPath) 
    { 
     if (player.Status == AVPlayerStatus.ReadyToPlay) 
     { 
      Console.WriteLine("Ready to play"); 
      player.Play(); 
     } 
    } 

    public override UITableViewCell GetCell(UITableView tableView, NSIndexPath indexPath) 
    { 
     var cell = (RFVideoTBC)tableView.DequeueReusableCell(RFVideoTBC.Identifier(), indexPath); 

     player = AVPlayer.FromUrl(NSUrl.FromString("http://techslides.com/demos/sample-videos/small.mp4")); 
     var layer = AVPlayerLayer.FromPlayer(player); 
     layer.BackgroundColor = UIColor.Clear.CGColor; 
     layer.VideoGravity = AVLayerVideoGravity.ResizeAspect; 

     layer.Frame = new CoreGraphics.CGRect(16, 
               75, 
               cell.Frame.Width - 32, 
               200); 

     cell.ContentView.Layer.AddSublayer(layer); 

     return cell; 
    } 
関連する問題