xamarin - CollectionView 项目添加中的视频播放器会导致视频帧随机播放 Xamarin Forms
问题描述
我有CollectionView
一个VideoPlayer
元素DataTemplate
来自Xamarin Forms 示例项目。在 iOS 上,渲染的视频播放器AVPlayer
用于播放视频。我还有一个按钮,按下时会ItemSource
向CollectionView
. 如果我播放第一个,比如说,三个项目并在随机帧/时间上将它们全部暂停,然后按此添加更多项目按钮,AVPlayer
iPhone 上这三个实例上的冻结图像帧会以某种奇怪的顺序打乱/切换。更详细地说:
如果第一项暂停了CollectionView
一些动画卡通视频,第二项暂停了一些体育比赛视频,第三项暂停了一些森林图像视频,当我按下添加更多项目按钮时,添加了一些新项目到 的ItemSource
,CollectionView
我看到体育游戏视频帧移动到第一个项目的AVPlayer
实例,森林图像视频帧移动到第二个项目的AVPlayer
实例,动画卡通帧移动到第三个项目的AVPlayer
实例。澄清一下:项目本身保持在它们的确切位置,只有 AVPlayer 中的视频帧被切换。
在这些被“洗牌”之后,如果我取消暂停第一项,它会播放动画的原始视频,第二项和第三项也是如此。CollectionView
据我了解,唯一的问题是,AVPlayer
在CollectionView
. 此问题仅发生在AVPlayer
. 任何其他元素都不会重现此行为。我尝试过使用 ffimageloading CahcedImage
、简单标签和其他元素,但它只是AVPlayer's
渲染、暂停的帧图像,它们会被打乱。我意识到这个问题可能有一些在 Xamarin Forms 级别上无法解决的深层根源,但只是想在这里试试运气。
我的 CollectionView 代码非常基本:
<CollectionView ItemsSource="{Binding ScrollArticles}"
AbsoluteLayout.LayoutBounds="0,0,1,1"
AbsoluteLayout.LayoutFlags="All"
RemainingItemsThreshold="5"
RemainingItemsThresholdReachedCommand="{Binding LoadMoreItems}"
VerticalOptions="FillAndExpand"
HorizontalOptions="FillAndExpand"
ItemsLayout="VerticalList"
x:Name="CategoryItemsListView"
VerticalScrollBarVisibility="Always"
Scrolled="CategoryItemsListView_OnScrolled"
>
<CollectionView.ItemTemplate>
<DataTemplate>
<elements:VideoPlayer Margin="0,0,0,15" Source={Binding video_url}>
</elements:VideoPlayer>
</DataTemplate>
</CollectionView.ItemTemplate>
</CollectionView>
相同的代码,当将VideoPlayer
元素替换为任何其他元素时,比如Image
,表现得应该如此。另一件事是,VideoPlayer
当在ListView
(with CachingStrategy=RecycleElement
) 而不是CollectionView
. 但不幸的是,ListView
缺少很多功能,例如在滚动时确定最中心的项目等。
解决方案
推荐阅读
- visual-studio-code - Visual Studio Code 中的行注释格式
- r - 计算 R 中观察到的月份数
- python - 在父类python selenium中导入方法
- date - 带日期的 Hive 查询
- regex - 如何使用正则表达式在 Bash 中查找递归子字符串?
- excel - 如何使用vba在excel的列中查找重复项,然后弹出一个Msgbox?
- c# - 使用 HTTP 部分内容播放 html 5 视频时,Chrome 会锁定 HTTP 端口
- chef-infra - 厨师刀命令:刀菜谱上传样本时出现错误
- java - 如何从其他类访问arrayLists(可能在其他包中)
- vba - 通过细胞矩阵选择细胞