diff --git a/viewer/src/components/Player.tsx b/viewer/src/components/Player.tsx
index 265dec2..e42d1ed 100644
--- a/viewer/src/components/Player.tsx
+++ b/viewer/src/components/Player.tsx
@@ -1,53 +1,29 @@
-import dynamic from "next/dynamic";
-const ReactPlayer = dynamic(() => import("react-player/lazy"), { ssr: false });
-import { useState, useRef, useEffect } from "react";
import { useRouter } from 'next/router';
-import WebVttPlayer from "./WebVttPlayer/WebVttPlayer";
+import WebVttPlayerFunctional from "./WebVttPlayer/WebVttPlayerFunctional";
// functional component PlayerReact that uses ReactPlayer
-// TODO: parameterize video source and VTT source with props (general spec for 3rd party use!). must define spec.
+// TODO: better parameterize video source and VTT source with props (general spec for 3rd party use!). must define spec.
export default function Player() {
- // get files in directory "../../data" without using fs
const router = useRouter();
+ const videoUrl = '/data/MIT Regressions intro video.mp4' // BIZARRE BUG: react-player component only works when I live-reload URL to valid path. if Chrome loads directly, then returns "failed to load media".
const audioUrl = router.asPath + 'data/MIT Regressions intro audio.mp3'
const transcriptUrl = router.asPath + "data/MIT Regressions intro captions.vtt"
const metadataUrl = router.asPath + "data/MIT Regressions intro metadata.vtt"
return (
<>
-
-
-
-
-
+
>
);
}
diff --git a/viewer/src/components/VideoPlayer.tsx b/viewer/src/components/VideoPlayer.tsx
new file mode 100644
index 0000000..0bf06b0
--- /dev/null
+++ b/viewer/src/components/VideoPlayer.tsx
@@ -0,0 +1,38 @@
+import ReactPlayer from "react-player/lazy";
+// import CustomReactPlayer from "./CustomReactPlayer";
+
+interface PlayerRef {
+ seeking: boolean;
+ played: number;
+ duration: number;
+ seekTo: (time: number) => void;
+}
+// inherit prop playing from parent component
+export default function VideoPlayer({ playerRef, playing, videoUrl, transcriptUrl }: { playerRef: React.RefObject
, playing: boolean, videoUrl: string, transcriptUrl: string }) {
+ // ReactPlayer.addCustomPlayer(CustomReactPlayer);
+ return (
+ console.log('onSeek', e)}
+ config={{
+ file: {
+ forceVideo: true,
+ tracks: [
+ {
+ label: 'English',
+ kind: 'captions',
+ src: transcriptUrl,
+ srcLang: 'en',
+ default: true,
+ },
+ ],
+ },
+ }}
+ />
+ );
+}
\ No newline at end of file
diff --git a/viewer/src/components/WebVttPlayer/Transcript.tsx b/viewer/src/components/WebVttPlayer/Transcript.tsx
index 70e82ce..8641730 100644
--- a/viewer/src/components/WebVttPlayer/Transcript.tsx
+++ b/viewer/src/components/WebVttPlayer/Transcript.tsx
@@ -1,6 +1,6 @@
import React, { Component } from 'react'
import TranscriptLine from './TranscriptLine'
-// import './Track.css' // currently exists in global instead. gotta consolidate this
+// import './Track.css' // currently exists in global instead. TODO: consolidate this styling
class Transcript extends Component {
@@ -11,9 +11,9 @@ class Transcript extends Component {
lines.push(
)
}
diff --git a/viewer/src/components/WebVttPlayer/WebVttPlayer.tsx b/viewer/src/components/WebVttPlayer/WebVttPlayer.tsx
index a70f740..ca5d6fc 100644
--- a/viewer/src/components/WebVttPlayer/WebVttPlayer.tsx
+++ b/viewer/src/components/WebVttPlayer/WebVttPlayer.tsx
@@ -4,33 +4,48 @@ import Metadata from './Metadata'
import Search from './Search'
import './WebVttPlayer.module.css'
+import dynamic from "next/dynamic";
+const ReactPlayer = dynamic(() => import("react-player/lazy"), { ssr: false });
+
// type for props
type WebVttProps = {
- audio: string,
+ video: string,
transcript: string,
metadata: string,
preload: boolean
}
-class WebVttPlayer extends Component {
+interface VideoRef {
+ seeking: boolean;
+ played: number;
+ duration: number;
+ seekTo: (time: number) => void;
+}
+
+class WebVttPlayer extends Component {
metatrack: React.RefObject
+ video: React.RefObject
audio: React.RefObject
track: React.RefObject
-
constructor(props: WebVttProps) {
super(props)
this.state = {
loaded: false,
currentTime: 0,
- query: ''
+ query: '',
+ seeking: false,
+ played: new Float64Array(0),
+ playing: false,
}
this.track = React.createRef()
this.metatrack = React.createRef()
this.audio = React.createRef()
-
+ this.video = React.createRef();
+ // const playerRef=useRef();
+
this.onLoaded = this.onLoaded.bind(this)
this.seek = this.seek.bind(this)
this.checkIfLoaded = this.checkIfLoaded.bind(this)
@@ -41,12 +56,19 @@ class WebVttPlayer extends Component {
+ console.log('onPause')
+ this.setState({ playing: false })
+ }
+
+
render() {
let track = null
let metatrack = null
if (this.state.loaded) {
track = this.track.current.track
metatrack = this.metatrack.current.track
+ console.log("loaded video.current : ", this.video.current);
}
const preload = this.props.preload ? "true" : "false"
const metadata = this.props.metadata
@@ -60,6 +82,18 @@ class WebVttPlayer extends Component
+
+
console.log('onSeek', e)}
+ onProgress={this.handleProgress}
+ />