Skip to content

HLS should explicitly signal a lack of captions #922

Closed
@djeikyb

Description

NOTE: This issue was transferred from Shaka Player to Shaka Packager. See #922 (comment) and #922 (comment) for the most relevant details.



Have you read the FAQ and checked for duplicate open issues?

Yes

What version of Shaka Player are you using?

3.0.10, but I checked each release back to 3.0.0 and see the same behaviour.

Can you reproduce the issue with our latest release version?

Yes

Can you reproduce the issue with the latest code from master?

Yes

Are you using the demo app or your own custom app?

Custom, following the shaka ui basic usage tutorial

If custom app, can you reproduce the issue using our demo app?

Not sure, I wasn't able to run the demo app

What browser and OS are you using?

macos 10.14.6, safari 14.0.3 (14610.4.3.1.7)

For embedded devices (smart TVs, etc.), what model and firmware version are you using?

n/a

What are the manifest and license server URIs?

https://github.com/djeikyb/shaka_player_spurious_caption_bug_report/blob/main/2MinTest/master.m3u8

What configuration are you using? What is the output of player.getConfiguration()?

{
  "drm": {
    "retryParameters": {
      "maxAttempts": 2,
      "baseDelay": 1000,
      "backoffFactor": 2,
      "fuzzFactor": 0.5,
      "timeout": 0
    },
    "servers": {},
    "clearKeys": {},
    "advanced": {},
    "delayLicenseRequestUntilPlayed": false,
    "logLicenseExchange": false,
    "updateExpirationTime": 1
  },
  "manifest": {
    "retryParameters": {
      "maxAttempts": 2,
      "baseDelay": 1000,
      "backoffFactor": 2,
      "fuzzFactor": 0.5,
      "timeout": 0
    },
    "availabilityWindowOverride": null,
    "disableAudio": false,
    "disableVideo": false,
    "disableText": false,
    "defaultPresentationDelay": 0,
    "dash": {
      "clockSyncUri": "",
      "ignoreDrmInfo": false,
      "xlinkFailGracefully": false,
      "ignoreMinBufferTime": false,
      "autoCorrectDrift": true,
      "initialSegmentLimit": 1000,
      "ignoreSuggestedPresentationDelay": false,
      "ignoreEmptyAdaptationSet": false
    },
    "hls": {
      "ignoreTextStreamFailures": false,
      "useFullSegmentsForStartTime": false
    }
  },
  "streaming": {
    "retryParameters": {
      "maxAttempts": 2,
      "baseDelay": 1000,
      "backoffFactor": 2,
      "fuzzFactor": 0.5,
      "timeout": 0
    },
    "rebufferingGoal": 2,
    "bufferingGoal": 10,
    "bufferBehind": 30,
    "ignoreTextStreamFailures": false,
    "alwaysStreamText": false,
    "startAtSegmentBoundary": false,
    "smallGapLimit": 0.5,
    "jumpLargeGaps": false,
    "durationBackoff": 1,
    "forceTransmuxTS": false,
    "safeSeekOffset": 5,
    "stallEnabled": true,
    "stallThreshold": 1,
    "stallSkip": 0.1,
    "useNativeHlsOnSafari": true,
    "inaccurateManifestTolerance": 2
  },
  "offline": {
    "usePersistentLicense": true
  },
  "abr": {
    "enabled": true,
    "defaultBandwidthEstimate": 1000000,
    "switchInterval": 8,
    "bandwidthUpgradeTarget": 0.85,
    "bandwidthDowngradeTarget": 0.95,
    "restrictions": {
      "minWidth": 0,
      "maxWidth": null,
      "minHeight": 0,
      "maxHeight": null,
      "minPixels": 0,
      "maxPixels": null,
      "minFrameRate": 0,
      "maxFrameRate": null,
      "minBandwidth": 0,
      "maxBandwidth": null
    }
  },
  "preferredAudioLanguage": "",
  "preferredTextLanguage": "",
  "preferredVariantRole": "",
  "preferredTextRole": "",
  "preferredAudioChannelCount": 2,
  "restrictions": {
    "minWidth": 0,
    "maxWidth": null,
    "minHeight": 0,
    "maxHeight": null,
    "minPixels": 0,
    "maxPixels": null,
    "minFrameRate": 0,
    "maxFrameRate": null,
    "minBandwidth": 0,
    "maxBandwidth": null
  },
  "playRangeStart": 0,
  "playRangeEnd": null
}

What did you do?

I made a repo that reproduces the bug:

https://github.com/djeikyb/shaka_player_spurious_caption_bug_report

  1. Host the files there in a web server. I used nginx in docker, like:
docker run --rm -p 8080:80 --name web -v "$PWD":/usr/share/nginx/html nginx:1.19
  1. Open index.html in macos safari, I used safari 14.0.3 (14610.4.3.1.7): http://localhost:8080

  2. Look at the text tracks, there is a track labeled "Unrecognized ()".

But you can see that no text tracks are configured. None in the hls playlist, none in the player config.

What did you expect to happen?

I expected no text tracks

What actually happened?

I found and can select a track labeled "Unrecognized ()". This is the output of player.getTextTracks()

JSON.stringify(player.getTextTracks(), null, 2)

[
  {
    "id": 1,
    "active": false,
    "type": "text",
    "bandwidth": 0,
    "language": "",
    "label": "",
    "kind": "captions",
    "width": null,
    "height": null,
    "frameRate": null,
    "pixelAspectRatio": null,
    "mimeType": "application/cea-608",
    "codecs": null,
    "audioCodec": null,
    "videoCodec": null,
    "primary": false,
    "roles": [
      "captions"
    ],
    "audioRoles": null,
    "videoId": null,
    "audioId": null,
    "channelsCount": null,
    "audioSamplingRate": null,
    "audioBandwidth": null,
    "videoBandwidth": null,
    "originalVideoId": null,
    "originalAudioId": null,
    "originalTextId": ""
  }
]

gif of bug; first click kebab control panel icon, then click captions, then see a text track labeled "Unrecognized ()"

I used shaka packager to create the hls playlist and segments.

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions