feat: select audio

This commit is contained in:
Fredrik Burmester
2024-10-15 08:31:36 +02:00
parent ae963751cf
commit 9e5aa16a7d
2 changed files with 47 additions and 2 deletions

View File

@@ -307,6 +307,7 @@ export default function page() {
offline={false}
setSubtitleTrack={videoRef.current.setSubtitleTrack}
setSubtitleURL={videoRef.current.setSubtitleURL}
setAudioTrack={videoRef.current.setAudioTrack}
stop={videoRef.current.stop}
/>
)}

View File

@@ -72,6 +72,7 @@ interface Props {
getSubtitleTracks?: () => Promise<TrackInfo[] | null>;
setSubtitleURL?: (url: string) => void;
setSubtitleTrack?: (index: number) => void;
setAudioTrack?: (index: number) => void;
stop?: () => Promise<void>;
}
@@ -96,6 +97,7 @@ export const VlcControls: React.FC<Props> = ({
getSubtitleTracks,
setSubtitleURL,
setSubtitleTrack,
setAudioTrack,
stop,
offline = false,
}) => {
@@ -347,7 +349,7 @@ export const VlcControls: React.FC<Props> = ({
>
{/* <VideoDebugInfo playerRef={videoRef} /> */}
{setSubtitleURL && setSubtitleTrack && (
{setSubtitleURL && setSubtitleTrack && setAudioTrack && (
<View
style={{
position: "absolute",
@@ -378,7 +380,6 @@ export const VlcControls: React.FC<Props> = ({
collisionPadding={8}
sideOffset={8}
>
<DropdownMenu.Label>Subtitle tracks</DropdownMenu.Label>
<DropdownMenu.Sub>
<DropdownMenu.SubTrigger key="image-style-trigger">
Subtitle
@@ -427,6 +428,49 @@ export const VlcControls: React.FC<Props> = ({
: null}
</DropdownMenu.SubContent>
</DropdownMenu.Sub>
<DropdownMenu.Sub>
<DropdownMenu.SubTrigger key="image-style-trigger">
Audio
</DropdownMenu.SubTrigger>
<DropdownMenu.SubContent
alignOffset={-10}
avoidCollisions={true}
collisionPadding={0}
loop={true}
sideOffset={10}
>
{/* <DropdownMenu.CheckboxItem
key="none-item"
value="off"
onValueChange={() => {
videoRef.current?.setSubtitleTrack(-1);
}}
>
<DropdownMenu.ItemIndicator />
<DropdownMenu.ItemTitle key={`none-item-title`}>
None
</DropdownMenu.ItemTitle>
</DropdownMenu.CheckboxItem> */}
{audioTracks?.length
? audioTracks?.map((a, idx: number) => (
<DropdownMenu.CheckboxItem
key={`subtitle-item-${idx}`}
value="off"
onValueChange={() => {
setAudioTrack(a.index);
}}
>
<DropdownMenu.ItemIndicator />
<DropdownMenu.ItemTitle
key={`subtitle-item-title-${idx}`}
>
{a.name}
</DropdownMenu.ItemTitle>
</DropdownMenu.CheckboxItem>
))
: null}
</DropdownMenu.SubContent>
</DropdownMenu.Sub>
</DropdownMenu.Content>
</DropdownMenu.Root>
</View>