Skip to content

Technical Plugin SubtitleSwitcher

Daniel Neto edited this page Oct 29, 2026 · 1 revision

Technical: SubtitleSwitcher plugin

Manages subtitle tracks and language selection.

Audience: developers, advanced administrators and AI-assisted diagnosis. Plugin catalog.

Source baseline

  • Review date: 2026-10-29. Method: static source analysis; runtime/provider behavior was not exercised.
  • Code ownership: independently versioned plugin repository.
  • Reported version: 8.4.
  • Source revision: 0c6be0bec13c678a0a641731886800c20686a77b.
  • Entry class file: SubtitleSwitcher.php.

Confirm the installed plugin version independently of the Streamer version. Configuration defaults below are not a dump of this installation's saved settings.

Dependencies

No literal dependency declaration was extracted. This does not prove the plugin is standalone.

Literal runtime plugin references: User_Location. These calls do not mean every referenced plugin is mandatory.

Hook integration

Override Implementation
getTags() SubtitleSwitcher.php:10
getDataObjectDeprecated() SubtitleSwitcher.php:46
onNewVideo($videos_id) SubtitleSwitcher.php:90
getStart() SubtitleSwitcher.php:166
getVideoTags($videos_id) SubtitleSwitcher.php:203
getVideosManagerListButton() SubtitleSwitcher.php:272
getHeadCode() SubtitleSwitcher.php:279

Configuration assignments

These are direct assignments inside getEmptyDataObject(), not evaluated effective defaults. Stored plugins.object_data, globals, structured values and conditional branches may alter runtime behavior. Private/default credential values are omitted.

Field Literal default or expression type Literal source label/help Evidence
subtitleDivStyle "" — source
disableSubtitleSettings false — source
disableUTF8Encode false — source
addClosedCaptionIcons false — source
defaultSubtitleIsOff false — source
defaultSubtitleLanguage "en" — source
defaultSubtitleLanguageUseUserLocation true — source
automaticTranscript true — source
automaticTranscriptModelPath '' — source
disableHTMLTrackTags false — source
disableOnAPI false — source
useBigButtonForCC Computed/structured; inspect source — source
bigButtonForCCCstomBg '' — source
bigButtonForCCCstomBgActive '' — source
bigButtonForCCCstomLabel 'Closed Caption' — source

Files and request surface

This inventory distinguishes implementation files from an API specification. Includes, templates, callbacks and CLI workers are not interchangeable HTTP endpoints. Request-field names below are direct source references, not a complete schema or permission declaration.

File Source role Direct request fields observed
SubtitleSwitcher.php plugin entry class —
deleteSubtitle.php PHP page/include/worker; inspect caller lang, videos_id
editor.php PHP page/include/worker; inspect caller videos_id
editorPlainText.php PHP page/include/worker; inspect caller lang, videos_id
functions.php class/helper implementation —
getSubtitles.json.php JSON entry point; inspect caller and guard videos_id
onOffButton.js browser/worker JavaScript; verify loader —
saveSubtitle.php PHP page/include/worker; inspect caller input-b1, isSrt, lang, videos_id
saveSubtitles.json.php JSON entry point; inspect caller and guard lang, videos_id, vtt, vttText
subtitles.json.php JSON entry point; inspect caller and guard videos_id
transcribe.php PHP page/include/worker; inspect caller —
uploadSubtitle.php PHP page/include/worker; inspect caller videos_id

Data and migrations

No CREATE TABLE names were extracted from available plugin SQL. The plugin can still use core tables, PHP-created schema or another component's data. Apply installation/update behavior through the owning plugin; this reference is not a script for running historical migrations manually.

Main-file named symbols

Visibility and implementation semantics must be checked in source. Nonempty string defaults are represented as . This is a symbol reference, not a stable public API promise.

Function or method Source
getTags() 10
getPluginVersion() 18
getDescription() 23
getName() 36
getUUID() 41
getDataObjectDeprecated() 46
getEmptyDataObject() 53
getDefaultVTTFile($videos_id) 77
getDefaultVTTFileFromFilename($filename) 84
onNewVideo($videos_id) 90
isTranscriberInstalled() 98
isValidVTTFile($filename) 103
transcribe($videos_id, $async = true) 119
isTranscribeProcessRunning() 150
getStart() 166
getDefaultLanguage() 184
getVideoTags($videos_id) 203
utf8($text) 241
getVideosManagerListButton() 272
getHeadCode() 279
subtitleOn() 321
getSubtitleFilename($videos_id, $lang) 330

Supporting PHP declarations

These symbols are grouped by source file; inspect the class declaration and visibility before calling them.

functions.php

Declared classes: _Vtt2Srt.

Named symbol Source
vttToArray($string) 5
vttToArray2($string) 32
arrayToVTT($array) 71
timeToSeconds($hms) 85
convertSRTTrack($vtt) 89
getVTTTracks($fileName, $returnArray = false, $byPassCache = false) 102
getVTTCache($fileName) 186
createVTTCache($fileName, $data) 196
deleteVTTCache($fileName) 205
srt2Vtt($srt, $vtt) 211
vtt2srt($vtt, $srt) 246
__construct($input_file, $output_file) 263
run() 268
removeHeader($lines) 283
convert($contents) 301
split($contents) 355

transcribe.php

Named symbol Source
isFileUnchangedForOneMinute($filePath) 162
getCpuUsagePercent() 173
getProcStatTotals() 211
getCpuCoreCount() 238

Diagnostics and validation

  1. Check the installed/enabled version and the dependencies/settings above.
  2. Identify the actual failing page, request, callback or worker and correlate its timestamp with the AVideo log.
  3. Follow the linked method and caller. Check business-state changes and output artifacts as well as HTTP status.
  4. Reproduce the relevant workflow in a test environment. External provider, Encoder, live-server, storage, payment and authenticated flows require their real integrations.

Shared diagnostic workflow. This page is not a security audit or a claim of end-to-end validation.

Clone this wiki locally