You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在React中设置视频从指定时间戳开始播放?

ReactPlayer 指定起始播放时间实现方案

首先你需要将目标起始时间转换为总秒数,示例中的00:07:12,600(7分12秒600毫秒)换算后为432.6秒,换算公式为:
总秒数 = 小时数 * 3600 + 分钟数 * 60 + 秒数(含毫秒的小数部分)


方案1:使用start属性(推荐,简单直接)

直接给ReactPlayer组件传入start属性,值为换算后的总秒数即可,播放器加载后会自动从该时间开始播放:

import style from './Hero.module.css';
import Image from 'next/image';
import ReactPlayer from 'react-player';
import { useState } from 'react';

export default function Index() {
  const [isPlaying, setIsPlaying] = useState(true);
  // 定义起始播放时间,单位为秒,此处为00:07:12,600换算后的结果
  const START_TIME = 432.6;

  return (
    <div className={style.hero_container}>
      {/* <Image src="/images/hero/hero1.jpg" alt="Logo" height={400} width={700} /> */}

      <ReactPlayer
        url="/videos/Dexter.S01E03.1080p.5.1Ch.BluRay.ReEnc-DeeJayAhmed.mkv"
        playing={isPlaying}
        width="100%"
        height="100%"
        controls={true}
        // 新增start属性指定起始时间
        start={START_TIME}
      />
    </div>
  );
}

方案2:使用onReady回调调用seekTo方法(适合动态跳转场景)

如果需要在播放器加载完成后动态调整起始播放时间,可以通过ref获取播放器实例,在onReady回调中调用seekTo方法实现跳转:

import style from './Hero.module.css';
import Image from 'next/image';
import ReactPlayer from 'react-player';
import { useState, useRef } from 'react';

export default function Index() {
  const [isPlaying, setIsPlaying] = useState(true);
  const playerRef = useRef(null);
  const START_TIME = 432.6;

  const handlePlayerReady = () => {
    // 播放器加载完成后跳转到指定时间
    playerRef.current?.seekTo(START_TIME, 'seconds');
  }

  return (
    <div className={style.hero_container}>
      {/* <Image src="/images/hero/hero1.jpg" alt="Logo" height={400} width={700} /> */}

      <ReactPlayer
        ref={playerRef}
        url="/videos/Dexter.S01E03.1080p.5.1Ch.BluRay.ReEnc-DeeJayAhmed.mkv"
        playing={isPlaying}
        width="100%"
        height="100%"
        controls={true}
        onReady={handlePlayerReady}
      />
    </div>
  );
}

注意事项

  • 如果你使用的本地视频文件(如示例中的mkv格式),需要确保视频文件本身带有关键帧索引,否则seek操作可能失效
  • 时间换算时注意毫秒部分需要转成小数,比如600毫秒就是0.6秒

内容的提问来源于stack exchange,提问作者moemous

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 21:15:04