在平板列表中显示多个视频实例的问题

时间:2019-04-16 15:36:46

标签: ios react-native react-native-flatlist react-native-video

我无法在单位列表中显示视频。它在实际设备上似乎是一个特定的iOS问题,因为它在模拟器和android上都能正常工作。使用react-native-video,并在错误日志中显示错误代码为AVFoundationErrorDomain的{​​{1}}。经过一段时间的搜索,似乎真实设备对它们一次可以显示多少个视频实例有限制。

因此,我在视频组件中出现了黑屏,其中控件呈灰色显示,且播放按钮被划掉。结构是平面列表->子->视频。我尝试过更改顺序并将视频组件上移,但问题仍然相同。列表将一次渲染10个项目,并且可以包含图片或视频。

我尝试保存使用onViewableItemsChanged道具渲染的项的键并将其保存,最多保存10个在redux中。然后我获取此数组,在该数组中渲染视频组件以仅渲染ID为的视频组件该项目与redux数组中的项目相同。理论上,这仅应呈现已查看或最近已查看的项目。

在此之前,现在还没有完全加载视频,现在已经渲染了一会儿,但是在渲染并播放了一对视频之后,问题又回来了。实际的组件总是渲染的(如果键/ id已保存并提取到redux),但其屏幕为黑屏

在我的代码中提供其他解决方案或帮助我解决此问题的任何人,将不胜感激。

减速器:

11839

操作:

  let feedIdsArr = [...state.savedFeedIds];
  let newFeedId = action.payload;

  if (feedIdsArr.length < 10) {
    if (!feedIdsArr.includes(newFeedId)) {
      feedIdsArr.push(newFeedId)
    }
  } else {
    feedIdsArr.shift()
  }
  console.log("SAVE_FEED_ID", feedIdsArr);
  return {...state, savedFeedIds: feedIdsArr};

渲染:

  return dispatch => {
    dispatch({
      type: SAVE_FEED_ID,
      payload: id
    });
  }
}

onViewableItemsChanged:

if (this.props.savedFeedIds.includes(this.props.feed.feedItemId)) {
  return (
    <Video
      source={{uri: url}}
      style={this.calculateVideoAspectRatio(videoGallery, orientation)}
      controls={true}
      paused={true}
      resizeMode={orientation === 'portrait' ? "cover" : null}
      fullscreen={false}
      ref={r => this.player = r}
      onError={err => console.log("VIDEO ERROR", err)}

    />
  )
}

0 个答案:

没有答案