import { selectTextTracks, selectTime, usePlayer } from '@videojs/react';
import { useState } from 'react';
function ThumbnailPreview() {
const textTracks = usePlayer(selectTextTracks);
const time = usePlayer(selectTime);
const [hoveredThumbnail, setHoveredThumbnail] = useState<string | null>(null);
// 找到当前时间对应的缩略图
const currentThumbnail = textTracks.thumbnailCues.find(
cue => time.currentTime >= cue.startTime && time.currentTime < cue.endTime
);
if (!textTracks.thumbnailTrackSrc || !currentThumbnail) {
return null;
}
// 计算缩略图在精灵图中的位置
const getThumbnailStyle = () => {
// 假设缩略图是 160x90 像素
const thumbWidth = 160;
const thumbHeight = 90;
const columns = 5; // 精灵图的列数
const index = textTracks.thumbnailCues.indexOf(currentThumbnail);
const col = index % columns;
const row = Math.floor(index / columns);
return {
backgroundImage: `url(${textTracks.thumbnailTrackSrc})`,
backgroundPosition: `-${col * thumbWidth}px -${row * thumbHeight}px`,
width: `${thumbWidth}px`,
height: `${thumbHeight}px`
};
};
return (
<div className="thumbnail-preview">
<div className="thumbnail" style={getThumbnailStyle()}></div>
</div>
);
}