Skip to content

Commit

Permalink
implemented audio track switching
Browse files Browse the repository at this point in the history
  • Loading branch information
gallayl committed Jun 3, 2024
1 parent 02a60f1 commit adab257
Showing 1 changed file with 23 additions and 1 deletion.
24 changes: 23 additions & 1 deletion frontend/src/pages/movies/movie-player.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -51,8 +51,30 @@ export const MoviePlayer = Shade<MoviePlayerProps>({
}),
)

attachProps(element, { player })
const audioTrackList = (player as any).audioTracks()

props.ffProbe.streams
.filter((stream) => stream.codec_type === 'audio')
.forEach((audio) => {
const track = new (videojs as any).default.AudioTrack({
id: audio.index,
kind: Object.entries(audio.disposition).filter(([_key, value]) => value === 1)?.[0]?.[0] || 'default',
label: audio.tags.title || audio.tags.language || audio.tags.filename,
language: audio.tags.language,
})
audioTrackList.addTrack(track)
})

audioTrackList.addEventListener('change', () => {
const activeTrack = audioTrackList.tracks_.find((track: any) => track.enabled)
const currentSource = player.currentSource() as any as { type: string; src: string }
const newUrl = new URL(currentSource.src)
newUrl.searchParams.set('audio', activeTrack.id)
player.src({ type: currentSource.type, src: newUrl.toString() })
console.log('activeTrack', activeTrack)
})

attachProps(element, { player })
return () => player.dispose()
},
render: ({ props }) => {
Expand Down

0 comments on commit adab257

Please sign in to comment.