javascript - 为网格中的多个视频复制视频缩略图
问题描述
背景
使用 Gatsby/React 创建一个展示图像和视频的作品集页面。我已将媒体源存储在一个数组中,然后遍历该数组以创建一个网格。
问题
网格中的视频缩略图正在重复。第二个视频正在获取第一个视频的缩略图:
视频对象创建如下:
<VideoContainer key={`vid-${section}-${itemCounter}`}>
<video className="proj-video" preload="metadata">
<source src={currImg.src} type={`videomp4`} />
</video>
<div className="btn-container">
<FontAwesomeIcon color="white" size="4x" icon="play" />
</div>
</VideoContainer>
<VideoContainer />
是一个风格化的 div。
它发生在多个视频上。到目前为止我已经尝试过:
- 确保这些视频的来源不同。播放视频时(通过单击缩略图上方的播放按钮),将播放正确的视频。
- 在标签上添加一个
key
属性。video
但是,它并不能解决问题。
注意:这是非常不确定的行为,因为它并不总是发生。有时,它会在页面刷新时得到纠正,有时则不会。
编辑
您可以看到我没有从其他来源设置缩略图。它只显示视频帧。我"#t=10"
在视频 URL 的末尾附加(任何数字)并添加preload="metadata"
视频标签以在那时加载帧。
解决方案
尝试添加一个更独特的键:
<VideoContainer key={currImg}>
<video className="proj-video" preload="metadata">
<source src={currImg.src} type={`videomp4`} />
</video>
<div className="btn-container">
<FontAwesomeIcon color="white" size="4x" icon="play" />
</div>
</VideoContainer>
vid-${section}-${itemCounter}
,就其本身的性质而言,是一个好的标识符,但不是一个好的key
,但它似乎可能不像现在那么独特currImg
。
推荐阅读
- binary - 是否可以使用 createjs 加载 midi 文件?
- flutter - 需要帮助弄清楚如何限制一行网格视图中的列数
- reactjs - react.js 中 reducer 的 Redux 语法
- javascript - 在 React 中的 D3 节点上添加文本
- swiftui - 如何使用 SwiftUI 从 UIImagePickerController 访问日期和位置数据
- python - 我以编程方式将用户提交到数据库时出现 IntegrityError - Django
- mongodb - 如何在 MongoDB 中查找一个字段 = 第二个字段的记录(基本查询)
- c# - 在 Visual Studio 代码中调试立即停止
- mongodb-query - Mongo DB join 集合执行时间
- reactjs - 从主应用程序配置 UI 包主题