Skip to content

Commit 75f0025

Browse files
committed
load peaks from the server
1 parent a6c924e commit 75f0025

File tree

6 files changed

+170
-35
lines changed

6 files changed

+170
-35
lines changed

components/VideoArticle.jsx

+4-15
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,12 @@
11
import { Container, Typography } from '@material-ui/core'
22
import CaptionList from './CaptionList'
33
import Keywords from './video/Keywords'
4-
import Video from './video/Video'
54
import Thumbnails from './video/Thumbnails'
65
import ShowingModeSwitcher from './DisplayModeSwitcher'
76
import Phrases from './video/Phrases'
87
import { useRef, createContext, useContext } from 'react'
98
import useCaptions from './useCaptions'
10-
// import usePlayer from './usePlayer'
119
import useWavesurfer from './useWavesurfer'
12-
import peaks from '../public/fake-content/peaks-bad-english'
1310

1411
import EditCaptionTextarea from './EditCaptionTextarea'
1512
import { SnackbarContext } from './SnackbarProvider'
@@ -27,7 +24,8 @@ const VideoInfo = props => {
2724
description,
2825
image: poster,
2926
setDisplayMode,
30-
displayMode
27+
displayMode,
28+
videoId
3129
} = props
3230

3331
const { setSnackbar } = useContext(SnackbarContext)
@@ -41,7 +39,7 @@ const VideoInfo = props => {
4139
mediaElementRef: videoRef,
4240
waveformContainerRef,
4341
timelineContainerRef,
44-
peaks
42+
videoId
4543
})
4644

4745
const captionContextValue = useCaptions({
@@ -69,23 +67,14 @@ const VideoInfo = props => {
6967
ref={videoRef}
7068
controls
7169
src={urlVideo}
72-
// src='http://localhost:3000/videoplayback.m4a'
73-
// src='http://localhost:3000/nevzuk.mp4'
7470
poster={poster}
7571
style={{ width: '100%' }}
76-
// onTimeUpdate={onTimeUpdate}
7772
></video>
7873
)
7974

8075
const audioBlock = (
8176
<div style={styles.block}>
82-
<audio
83-
ref={audioRef}
84-
controls
85-
// src={`http://localhost:3000/procrastinator_mind.m4a`}
86-
src={urlAudio}
87-
style={{ width: '100%' }}
88-
/>
77+
<audio ref={audioRef} controls src={urlAudio} style={{ width: '100%' }} />
8978
</div>
9079
)
9180

components/useWavesurfer.js

+15-7
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,12 @@
1-
// import WaveSurfer from 'wavesurfer.js'
2-
// import RegionsPlugin from 'wavesurfer.js/dist/plugin/wavesurfer.regions.min'
1+
import axios from 'axios'
32
import { useEffect, useRef, useState } from 'react'
43
import initWavesurfer from '../wavesurfer'
54

65
export default function usePlayer({
76
mediaElementRef,
87
waveformContainerRef,
98
timelineContainerRef,
10-
peaks
9+
videoId
1110
}) {
1211
const [playerState, setPlayerState] = useState({
1312
isPlaying: false,
@@ -29,16 +28,25 @@ export default function usePlayer({
2928
const wavesurfer = await initWavesurfer({
3029
waveformContainer: waveformContainerRef.current,
3130
timelineContainer: timelineContainerRef.current,
32-
mediaElement: mediaElementRef.current,
33-
peaks
31+
mediaElement: mediaElementRef.current
3432
})
3533

36-
wavesurferRef.current = wavesurfer
34+
wavesurfer.on('region-click', (region, event) => {
35+
event.stopPropagation()
36+
region.play()
37+
})
3738

39+
wavesurferRef.current = wavesurfer
3840
setPlayerState(oldState => ({ ...oldState, isReady: true }))
39-
4041
mediaElementRef.current.controls = true
4142

43+
//set peaks loaded from the server
44+
const {
45+
data: { data: peaks }
46+
} = await axios(`http://localhost:3001/waveform/?id=${videoId}`)
47+
wavesurfer.backend.setPeaks(peaks, wavesurfer.getDuration())
48+
wavesurfer.drawBuffer()
49+
4250
console.log('wavesurfer')
4351
console.log(wavesurfer)
4452
}

package-lock.json

+140
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

+1
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
"@material-ui/core": "^4.12.4",
1212
"@material-ui/icons": "^4.11.3",
1313
"@material-ui/lab": "^4.0.0-alpha.61",
14+
"axios": "^0.27.2",
1415
"frazy-parser": "^2.9.1",
1516
"next": "^12.1.6",
1617
"react": "^18.1.0",

pages/video/[videoId].js

+5-2
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,8 @@ const VideoPage = props => {
1111
urlVideo,
1212
urlAudio,
1313
captionTracks,
14-
thumbnails
14+
thumbnails,
15+
videoId
1516
} = props
1617

1718
const [displayMode, setDisplayMode] = useState('info') // | transcript
@@ -26,7 +27,8 @@ const VideoPage = props => {
2627
thumbnails,
2728
captionTracks,
2829
displayMode,
29-
setDisplayMode
30+
setDisplayMode,
31+
videoId
3032
}
3133

3234
return (
@@ -40,6 +42,7 @@ export async function getServerSideProps({ query: { videoId } }) {
4042
const info = await getVideoInfo(videoId)
4143
return {
4244
props: {
45+
videoId,
4346
...info
4447
}
4548
}

0 commit comments

Comments
 (0)