videojs / video.js

Video.js - open source HTML5 video player
https://videojs.com
Other
37.56k stars 7.4k forks source link

m3u8-parser and mpd-parser - kind for closed-captions #8602

Open MCab93 opened 4 months ago

MCab93 commented 4 months ago

Description

Hello,

for closed-captions (CC) while parsing data we got object

{
    id: "Čeština (CC)",
    kind: "subtitles", 
    label: "Čeština (CC)",
    language: "cs" 
}

which is apart from letters in bracelet same as for notes without CC

{
    id: "Čeština",
    kind: "subtitles",
    label: "Čeština",
    language: "cs"
}

Suppossedly for closed-captions the kind should not be "subtitles" but "captions". Can you please confirm this is as required -> therefore we need to differentiate based on existence (CC) in id, or should the kind captions be used <

Reduced test case

null

Steps to reproduce

Parsing m3u8:

#EXTM3U
#EXT-X-VERSION:6
## Created with Unified Streaming Platform  (version=1.13.0-29687)
## Edited by Unified manifest-edit, using the following pipeline:
## m3u8_main:
## - manifest_edit.plugins.m3u8_main.default_language:
##   - autoselect: 'YES'
##     default: 'NO'
##     language: .*
##     type: SUBTITLES

# AUDIO groups
#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="audio-aacl-128",LANGUAGE="cs",NAME="Čeština",DEFAULT=YES,AUTOSELECT=YES,CHANNELS="2",URI="auddesc-audio_ces=128000.m3u8"
#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="audio-aacl-128",LANGUAGE="cs",NAME="Čeština (AD)",AUTOSELECT=YES,CHARACTERISTICS="public.accessibility.describes-video",CHANNELS="2",URI="auddesc-audio_ces_1=128000.m3u8"
#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="audio-aacl-128",LANGUAGE="en",NAME="English",AUTOSELECT=YES,CHANNELS="2",URI="auddesc-audio_eng=128000.m3u8"
#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="audio-aacl-128",LANGUAGE="en",NAME="English (AD)",AUTOSELECT=YES,CHARACTERISTICS="public.accessibility.describes-video",CHANNELS="2",URI="auddesc-audio_eng_1=128000.m3u8"

# SUBTITLES groups
#EXT-X-MEDIA:TYPE=SUBTITLES,GROUP-ID="textstream",LANGUAGE="cs",NAME="Čeština",AUTOSELECT=YES,URI="auddesc-textstream_ces=1000.m3u8"
#EXT-X-MEDIA:TYPE=SUBTITLES,GROUP-ID="textstream",LANGUAGE="cs",NAME="Čeština (CC)",AUTOSELECT=YES,CHARACTERISTICS="public.accessibility.transcribes-spoken-dialog,public.accessibility.describes-music-and-sound",URI="auddesc-textstream_ces_1=1000.m3u8"
#EXT-X-MEDIA:TYPE=SUBTITLES,GROUP-ID="textstream",LANGUAGE="cs",NAME="Čeština (forced)",AUTOSELECT=YES,FORCED=YES,URI="auddesc-textstream_ces_2=1000.m3u8"
#EXT-X-MEDIA:TYPE=SUBTITLES,GROUP-ID="textstream",LANGUAGE="en",NAME="English",AUTOSELECT=YES,URI="auddesc-textstream_eng=1000.m3u8"
#EXT-X-MEDIA:TYPE=SUBTITLES,GROUP-ID="textstream",LANGUAGE="de",NAME="Deutsch",AUTOSELECT=YES,URI="auddesc-textstream_ger=1000.m3u8"

# variants
#EXT-X-STREAM-INF:BANDWIDTH=1144000,CODECS="mp4a.40.2,avc1.42C01E",RESOLUTION=768x432,AUDIO="audio-aacl-128",SUBTITLES="textstream",CLOSED-CAPTIONS=NONE
auddesc-video_ces=956000.m3u8

# variants
#EXT-X-STREAM-INF:BANDWIDTH=541000,CODECS="mp4a.40.2,avc1.42C015",RESOLUTION=512x288,AUDIO="audio-aacl-128",SUBTITLES="textstream",CLOSED-CAPTIONS=NONE
auddesc-video_ces=387000.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=945000,CODECS="mp4a.40.2,avc1.42C01E",RESOLUTION=640x360,AUDIO="audio-aacl-128",SUBTITLES="textstream",CLOSED-CAPTIONS=NONE
auddesc-video_ces=768000.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=1725000,CODECS="mp4a.40.2,avc1.4D401F",RESOLUTION=1024x576,AUDIO="audio-aacl-128",SUBTITLES="textstream",CLOSED-CAPTIONS=NONE
auddesc-video_ces=1504000.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=2255000,CODECS="mp4a.40.2,avc1.4D401F",RESOLUTION=1280x720,AUDIO="audio-aacl-128",SUBTITLES="textstream",CLOSED-CAPTIONS=NONE
auddesc-video_ces=2004000.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=3291000,CODECS="mp4a.40.2,avc1.4D4028",RESOLUTION=1920x1080,AUDIO="audio-aacl-128",SUBTITLES="textstream",CLOSED-CAPTIONS=NONE
auddesc-video_ces=2981000.m3u8

# keyframes
#EXT-X-I-FRAME-STREAM-INF:BANDWIDTH=52000,CODECS="avc1.42C015",RESOLUTION=512x288,URI="keyframes/auddesc-video_ces=387000.m3u8"
#EXT-X-I-FRAME-STREAM-INF:BANDWIDTH=102000,CODECS="avc1.42C01E",RESOLUTION=640x360,URI="keyframes/auddesc-video_ces=768000.m3u8"
#EXT-X-I-FRAME-STREAM-INF:BANDWIDTH=127000,CODECS="avc1.42C01E",RESOLUTION=768x432,URI="keyframes/auddesc-video_ces=956000.m3u8"
#EXT-X-I-FRAME-STREAM-INF:BANDWIDTH=200000,CODECS="avc1.4D401F",RESOLUTION=1024x576,URI="keyframes/auddesc-video_ces=1504000.m3u8"
#EXT-X-I-FRAME-STREAM-INF:BANDWIDTH=266000,CODECS="avc1.4D401F",RESOLUTION=1280x720,URI="keyframes/auddesc-video_ces=2004000.m3u8"
#EXT-X-I-FRAME-STREAM-INF:BANDWIDTH=395000,CODECS="avc1.4D4028",RESOLUTION=1920x1080,URI="keyframes/auddesc-video_ces=2981000.m3u8"

Errors

No response

What version of Video.js are you using?

2.16.

Video.js plugins used.

No response

What browser(s) including version(s) does this occur with?

chrome 121.0.6167.161

What OS(es) and version(s) does this occur with?

windows 10

welcome[bot] commented 4 months ago

👋 Thanks for opening your first issue here! 👋

If you're reporting a 🐞 bug, please make sure you include steps to reproduce it. We get a lot of issues on this repo, so please be patient and we will get back to you as soon as we can. To help make it easier for us to investigate your issue, please follow the contributing guidelines.

gkatsev commented 4 months ago

Looks like VHS currently only marks in-stream captions as captions and all ext-x-media subtitles as subtitles, though, according to safari's behavior if there's characteristics, it should be marked as captions. We should probably follow suit.