diff --git a/backend/video/serializers.py b/backend/video/serializers.py index 2182272a..6db55f89 100644 --- a/backend/video/serializers.py +++ b/backend/video/serializers.py @@ -58,6 +58,8 @@ class StreamItemSerializer(serializers.Serializer): codec = serializers.CharField() height = serializers.IntegerField(required=False) index = serializers.IntegerField() + language = serializers.CharField(required=False, allow_null=True) + title = serializers.CharField(required=False, allow_null=True) type = serializers.ChoiceField(choices=["video", "audio"]) width = serializers.IntegerField(required=False) diff --git a/backend/video/src/media_streams.py b/backend/video/src/media_streams.py index 93e1f983..cdc65380 100644 --- a/backend/video/src/media_streams.py +++ b/backend/video/src/media_streams.py @@ -65,11 +65,14 @@ class MediaStreamExtractor: def _extract_audio_metadata(self, stream) -> None: """extract audio metadata""" + tags = stream.get("tags") or {} self.metadata.append( { "bitrate": int(stream.get("bit_rate", 0)), "codec": stream.get("codec_name", "undefined"), "index": stream["index"], + "language": tags.get("language"), + "title": tags.get("title"), "type": "audio", } ) diff --git a/frontend/src/pages/Home.tsx b/frontend/src/pages/Home.tsx index 09ac57f9..1aed7ddc 100644 --- a/frontend/src/pages/Home.tsx +++ b/frontend/src/pages/Home.tsx @@ -44,6 +44,8 @@ export type StreamType = { type: string; index: number; codec: string; + language?: string | null; + title?: string | null; width?: number; height?: number; bitrate: number; diff --git a/frontend/src/pages/Video.tsx b/frontend/src/pages/Video.tsx index abd1e8ef..86a3a779 100644 --- a/frontend/src/pages/Video.tsx +++ b/frontend/src/pages/Video.tsx @@ -465,6 +465,10 @@ const Video = () => { {video.streams && video.streams.map(stream => { + const languageLabel = stream.language?.trim(); + const titleLabel = stream.title?.trim(); + const streamTags = [languageLabel, titleLabel].filter(Boolean).join(' | '); + return (
{capitalizeFirstLetter(stream.type)}: {stream.codec}{' '} @@ -473,6 +477,11 @@ const Video = () => { <> | {stream.width}x{stream.height} > + )} + {streamTags && ( + <> + | {streamTags} + > )}{' '}
);