Repository navigation
Technical Plugin SubtitleSwitcher
Manages subtitle tracks and language selection.
Audience: developers, advanced administrators and AI-assisted diagnosis. Plugin catalog.
- 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.
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.
| 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 |
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 |
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 |
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.
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 |
These symbols are grouped by source file; inspect the class declaration and visibility before calling them.
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 |
| Named symbol | Source |
|---|---|
isFileUnchangedForOneMinute($filePath) |
162 |
getCpuUsagePercent() |
173 |
getProcStatTotals() |
211 |
getCpuCoreCount() |
238 |
- Check the installed/enabled version and the dependencies/settings above.
- Identify the actual failing page, request, callback or worker and correlate its timestamp with the AVideo log.
- Follow the linked method and caller. Check business-state changes and output artifacts as well as HTTP status.
- 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.
Start
Install and update
- Install on Ubuntu 24.04 or 26.04
- Installation Setup Page
- Scheduler cron job (required)
- Set up email
- Use HTTPS
- Own Encoder
- Docker
- Update AVideo
- Backup
- Secure file permissions
- Server command-line tools
- Hidden configuration options
Videos
- Upload a video
- Local Encoder (on your computer)
- Bulk upload by FTP
- Import a channel
- Publish on YouTube and social media
- Privacy options
- Only for logged-in users
- Resolutions by user group
- Storage options
- Move and protect video files
- Video does not play
Users
Live
- Make a live stream
- Stream with OBS
- Own live server
- One live server, many sites
- Live server install errors
- Live does not play
Plugins
Problems
Other
- Translate your site
- Write a plugin (developers)
- Technical reference (developers and advanced administrators)
Old and retired guides