Xamarin:无法在 table 视图单元格中播放视频
Xamarin: can't play video in table view cell
各位程序员大家好,我目前正在我的 TableViewSource 中使用这段代码:
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 协议,播放器状态为 "ready to play"。
但我得到的只是黑色canvas:
我的代码有什么问题?当我重新启动 Xamarin、清理并重建应用程序时,有时会出现
activity 指示器显示 3 秒,但之后显示黑色 canvas 和禁用播放按钮 returns。
无法弄清楚为什么,测试了在 iOS 9 模拟器和我的 iPhone.
上播放视频
我是这样做的:(不要忘记关闭 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;
}
各位程序员大家好,我目前正在我的 TableViewSource 中使用这段代码:
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 协议,播放器状态为 "ready to play"。
但我得到的只是黑色canvas:
我的代码有什么问题?当我重新启动 Xamarin、清理并重建应用程序时,有时会出现 activity 指示器显示 3 秒,但之后显示黑色 canvas 和禁用播放按钮 returns。
无法弄清楚为什么,测试了在 iOS 9 模拟器和我的 iPhone.
上播放视频我是这样做的:(不要忘记关闭 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;
}