CollectionView项目内的视频播放器添加会导致视频帧随机播放Xamarin表单

时间:2020-05-23 19:47:01

标签: xamarin xamarin.forms avplayer collectionview

我有一个CollectionView,它的VideoPlayer中有一个DataTemplate元素,取自Xamarin Forms sample projects。在iOS上,渲染的视频播放器使用AVPlayer播放视频。 我还有一个按钮,当按下该按钮时,会将更多项目添加到ItemSource的{​​{1}}中。 如果我播放第一个,例如,三个项目,并在随机帧/时间将它们暂停,然后按添加更多项目按钮,则iPhone上这三个CollectionView实例上的冻结图像帧会在某些情况下被随机播放/切换奇怪的命令。 更详细地:

如果我按下添加其他项目,如果AVPlayer的第一项有一些动画片动画已暂停,第二项有一些体育比赛视频已暂停,第三项有一些森林图像视频已暂停,按钮,并将一些新项目添加到CollectionView的{​​{1}}中,我看到体育游戏视频帧移至第一项的ItemSource实例,森林图像视频帧移至第二项项的CollectionView实例,动画框架将移动到第三项的AVPlayer实例。需要说明的是:项目本身保持在正确的位置,只有AVPlayer中的视频帧被切换。

在“改组”这些项目之后,如果我取消暂停第一个项目,它将播放其原始动画动画片视频,第二和第三项也是如此。据我了解,唯一的问题是AVPlayer的缓存/单元重用机制中的某处,AVPlayer的缓存帧在向{{1 }}。 此问题仅在CollectionView中发生。任何其他元素,不会重现此行为。我曾尝试使用ffimageloading的AVPlayer,简单标签和其他元素,但只有CollectionView呈现的,暂停的帧图像会被打乱。 我意识到这个问题可能有一些深层次的根源,在Xamarin Forms级别上无法解决,而只是想在这里试试运气。

我的CollectionView代码非常基本:

AVPlayer

当将CahcedImage元素替换为任何其他元素(例如AVPlayer's)时,相同的精确代码会发挥应有的作用。 另一件事是,当在<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缺少很多功能,例如在滚动时确定最中心的项目等。

0 个答案:

没有答案