【发布时间】:2023-03-14 21:05:02
【问题描述】:
各位程序员,你好,我目前正在使用我的 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 协议确认,播放器状态为“准备播放”。
但我得到的只是一张黑色画布:
我的代码有什么问题?当我重新启动 Xamarin、清理并重建应用程序时,有时会出现 活动指示器显示 3 秒,但带有禁用播放按钮的黑色画布随后返回。
不知道为什么,测试了在 iOS 9 模拟器和我的 iPhone 上播放视频。
【问题讨论】:
-
播放器是否在 UITableView 之外独立工作?
-
嗨,hankide,很遗憾没有
-
您的网址指向一个 YouTube 页面。您是否尝试过使用可解析为实际视频文件(如 m4p 文件)的 Url?
-
是的,我做到了,我还关闭了 transportSecurity 以使用 HTTP 链接。同时,我像这样重写了我的代码:
AVAsset asset = AVAsset.FromUrl(NSUrl.FromString("http://techslides.com/demos/sample-videos/small.mp4")); AVPlayerItem item = new AVPlayerItem(asset); player = new AVPlayer(item); playerViewController = new AVPlayerViewController();在我的 DidSelectRow 方法中,我检查播放器状态是否为 ReadyToPlay,然后显示 playerVideoController。播放按钮不再禁用,但画布保持黑色且视频未播放。 -
我建议你尝试在
UITableView之外设置AVPlayer,并注意iOS一次只能播放一个AVPlayer实例
标签: c# xamarin xamarin.ios avplayer video-player