Repository navigation
Technical Reference Encoder 02
Audience: developers and AI-assisted code lookup. Review date: 2026-10-29. Static inventory, not an endpoint specification, functional audit or integration-test result. Source files were read without executing application handlers. Nonempty string defaults are omitted.
Declared classes/interfaces/traits: EncoderCron.
| Named function/method | Source line |
|---|---|
getFileName($rootPath) |
16 |
shellQuote($value) |
22 |
getCommand($rootPath, $php) |
27 |
buildFile($rootPath, $php, $user) |
35 |
normalizeRoot($rootPath) |
42 |
Declared classes/interfaces/traits: EncoderMonitor.
| Named function/method | Source line |
|---|---|
defaults() |
63 |
getConfig() |
89 |
getGroup($status) |
104 |
getMonitoredStatuses() |
122 |
getMonitorFields() |
131 |
minutesBetween($from, $to) |
136 |
decideJob(array $job, $monitor, $now, array $cfg, $autoRetryPending = false) |
154 |
isWorkerGone(array $job, $pidRunning = null) |
230 |
isEncoderProcess($pid) |
257 |
isWorkerCommand($cmdline) |
269 |
decideDeadWorker(array $job, array $row, $gone, $now, array $cfg) |
279 |
getErrorReason($status_obs) |
294 |
decideSystemChecks(array $stats, array $cfg) |
328 |
run() |
353 |
classifyStreamerIssue($response) |
511 |
recordCronError($message) |
531 |
getStatusReport() |
545 |
filterRelevantStreamerIssues(array $issues, array $jobs, array $adminIds) |
578 |
getDashboardData($jobLimit = 30) |
597 |
getSupersededJobIds(array $jobs) |
676 |
wasSkippedByDeadline($response) |
704 |
isConnectionFailure($response) |
709 |
isAlertAccepted($response) |
714 |
isStreamerPaused($streamers_id, $now, array $cfg, array &$paused) |
722 |
pauseStreamer($streamers_id, $now, array &$paused) |
730 |
trackQueueIdle(array $stats, $now) |
741 |
isDue($stateName, $now, $minutes) |
755 |
recoverDeadWorker(array $job) |
761 |
sendOwnerAlert(array $job, array $row, array $decision, $now, array $cfg, $position, &$response, $deadline) |
795 |
applySendResult(array $row, $alert, $now, $response) |
836 |
markAlertHandled(array $row, $alert, $now, $result) |
855 |
runSystemChecks(array $stats, $now, array $cfg, array &$paused, array &$issues, $deadline) |
865 |
getAdminStreamerIds() |
946 |
monitorTable() |
956 |
stateTable() |
962 |
query($sql) |
968 |
execute($sql, $types, array $params) |
978 |
tablesExist() |
996 |
getDatabaseNow() |
1016 |
getJobs(array $cfg) |
1022 |
saveMonitorRow(array $row, $previous) |
1045 |
jobExists($id) |
1082 |
deleteFinishedRows() |
1088 |
getState($name) |
1094 |
deleteState($name) |
1107 |
setStreamerIssue($streamers_id, $issue) |
1112 |
setState($name, $value) |
1121 |
Declared classes/interfaces/traits: EncoderVersion.
| Named function/method | Source line |
|---|---|
installed($root) |
9 |
resolvePath($base, $path) |
71 |
git($command, &$ok = null) |
76 |
comparison($data) |
84 |
check($installed, $request) |
92 |
retryAt($status, $headers, $now) |
119 |
github($path, $cacheDirectory, $request = null) |
138 |
githubResponse($path) |
191 |
Declared classes/interfaces/traits: FTPDownloader.
| Named function/method | Source line |
|---|---|
__construct($ftpUrl) |
13 |
parseFtpUrl($ftpUrl) |
20 |
connect() |
72 |
queueFiles() |
86 |
copy($ftpUrl, $savePath) |
102 |
close() |
119 |
Declared classes/interfaces/traits: Format.
| Named function/method | Source line |
|---|---|
getSearchFieldsNames() |
78 |
getTableName() |
83 |
loadFromOrder($order) |
89 |
getFromOrder($order) |
101 |
run($pathFileName, $encoder_queue_id) |
120 |
runMultiResolution($pathFileName, $encoder_queue_id, $order) |
175 |
sendImages($file, $encoder_queue_id) |
218 |
mp3ToSpectrum($pathFileName, $encoder_queue_id) |
225 |
mp3ToSpectrumHLS($pathFileName, $encoder_queue_id) |
237 |
mp3ToSpectrumMP4($pathFileName, $encoder_queue_id) |
260 |
mp3ToSpectrumWEBM($pathFileName, $encoder_queue_id) |
278 |
runVideoToSpectrum($pathFileName, $encoder_queue_id) |
296 |
runVideoToAudio($pathFileName, $encoder_queue_id) |
327 |
runBothVideo($pathFileName, $encoder_queue_id) |
345 |
runBothAudio($pathFileName, $encoder_queue_id) |
362 |
autoCreateMP3IfNeeded($pathFileName, $encoder_queue_id, $order) |
383 |
preProcessHLS($destinationFile) |
417 |
getResolution($pathFileName) |
461 |
getAudioTracks($pathFileName) |
500 |
getDynamicCommandFromMP4($pathFileName, $encoder_queue_id) |
532 |
getDynamicCommandFromWebm($pathFileName, $encoder_queue_id) |
537 |
getAvailableConfigurations() |
551 |
getAvailableResolutions() |
566 |
getClosestAvailableResolution($height) |
572 |
getAvailableResolutionsInfo() |
587 |
getAvailableResolutionsInfoForUser($streamersId) |
623 |
sanitizeResolutions($resolutions) |
677 |
getSelectedResolutions() |
716 |
getFinalResolutions($userAllowedResolutions, $encoderEnabledResolutions) |
735 |
getSelectedResolutionsWithUserRestrictions($streamersId) |
764 |
loadEncoderConfiguration($streamersId) |
781 |
getDynamicCommandFromFormat($pathFileName, $encoder_queue_id, $format_id) |
819 |
preProcessDynamicHLS($pathFileName, $destinationFile, $encoder_queue_id) |
912 |
posProcessHLS($destinationFile, $encoder_queue_id) |
1036 |
fixFile($pathFileName, $encoder_queue_id) |
1051 |
exec($format_id, $pathFileName, $destinationFile, $encoder_queue_id, $try = 0) |
1075 |
progressFileHasVideosWithErrors($progressFilename) |
1159 |
videoFileHasErrors($filename, $allowed_extensions = true) |
1203 |
getLastValidationError() |
1265 |
getFFmpegFailureMessage($progressFile, $exitCode) |
1270 |
summarizeFFmpegError($content, $exitCode) |
1284 |
execOrder($format_order, $pathFileName, $destinationFile, $encoder_queue_id) |
1301 |
getFromName($name) |
1356 |
createIfNotExists($name) |
1375 |
getId() |
1393 |
getName() |
1398 |
getCode() |
1403 |
getCreated() |
1408 |
getModified() |
1413 |
getExtension() |
1418 |
setId($id) |
1423 |
setName($name) |
1428 |
setCode($code) |
1437 |
setCreated($created) |
1446 |
setModified($modified) |
1451 |
setExtension($extension) |
1456 |
getExtension_from() |
1465 |
setExtension_from($extension_from) |
1470 |
getOrder() |
1475 |
setOrder($order) |
1480 |
Declared classes/interfaces/traits: HLSProcessor.
| Named function/method | Source line |
|---|---|
setStage($encoder, $msg) |
9 |
createMP3AndPM4IfNeed($pathFileName, $destinationFile, $encoder = null) |
18 |
createHLSWithAudioTracks($pathFileName, $destinationFile, $encoder_queue_id) |
46 |
getFFmpegCommandForResolution($inputFile, $resolution, $bitrate, $framerate, $audioTracks, $keyInfoFile, $outputFile) |
207 |
getResolution($pathFileName) |
230 |
countAudioTracks($pathFileName) |
238 |
getAudioTracks($pathFileName) |
244 |
getScaledWidth($pathFileName, $targetHeight) |
269 |
getDefaultWidth($targetHeight) |
290 |
Declared classes/interfaces/traits: EncoderLocalEncoderPromotion.
| Named function/method | Source line |
|---|---|
getURL($streamerURL, $settings) |
6 |
getLaunchURL($encoderURL, $streamerURL, $settings) |
20 |
requestLoginCode($challenge) |
26 |
isFailedURLImport($job, $streamersId) |
56 |
getSourceURL($job, $streamersId) |
65 |
Declared classes/interfaces/traits: Login.
| Named function/method | Source line |
|---|---|
modifyUrl($url) |
10 |
run( $user, #[\SensitiveParameter] $pass, $aVideoURL, $encodedPass = false ) |
25 |
logoff() |
194 |
isLogged() |
205 |
isAdmin() |
225 |
isStreamerAdmin() |
229 |
canBulkEncode() |
233 |
canUpload() |
247 |
canStream() |
252 |
canComment() |
257 |
canCreateCategory() |
261 |
getTheme() |
265 |
getStreamerURL() |
269 |
getStreamerUser() |
273 |
getStreamerPass() |
281 |
getStreamerUserId() |
289 |
getStreamerId() |
296 |
getAllowedResolutions($streamersId) |
307 |
retryLoginWithDatabaseCredentials($streamersId) |
353 |
Declared classes/interfaces/traits: MP3Processor.
| Named function/method | Source line |
|---|---|
createMP3($pathFileName, $destinationFile, $encoder_queue_id = 0) |
5 |
generateFFmpegCommand($inputFile, $outputFile, $audioBitrate) |
32 |
Declared classes/interfaces/traits: MP4Processor.
| Named function/method | Source line |
|---|---|
createMP4MaxResolutionFromQueueId($pathFileName, $encoder_queue_id, $maxResolution = 1080) |
6 |
createMP4MaxResolution($pathFileName, $destinationFile, $maxResolution = 1080) |
23 |
createMP4($pathFileName, $destinationFile, $encoder_queue_id = 0, $inputResolution = null) |
32 |
getResolution($pathFileName) |
85 |
getClosestResolution($inputResolution, $allowedResolutions) |
91 |
generateFFmpegCommand($inputFile, $outputFile, $resolution, $encodingSettings) |
106 |
Declared classes/interfaces/traits: ObjectInterface, ObjectYPT.
| Named function/method | Source line |
|---|---|
getTableName() |
6 |
getSearchFieldsNames() |
8 |
load($id) |
17 |
__construct($id) |
29 |
getFromDb($id) |
37 |
getAll() |
51 |
getTotal() |
74 |
getSqlFromPost() |
92 |
getSqlSearchFromPost() |
130 |
save() |
155 |
getAllFields() |
230 |
delete() |
264 |
Declared classes/interfaces/traits: ServerMonitor.
| Named function/method | Source line |
|---|---|
getMemoryLinux($obj) |
5 |
getMemoryNetBSD($obj) |
25 |
getMemory() |
56 |
humanFileSize($size, $unit = "") |
80 |
Declared classes/interfaces/traits: Streamer.
| Named function/method | Source line |
|---|---|
getSearchFieldsNames() |
11 |
getTableName() |
16 |
get($user, $siteURL) |
22 |
getFirst() |
59 |
getFirstURL() |
80 |
getStreamerURL() |
90 |
createIfNotExists($user, $pass, $siteURL, $encodedPass = false) |
108 |
requestAuthentication($credential, $encoded) |
137 |
getJobStatus($videosId, $hash, $withCredentials = false) |
142 |
requestSiteJSON($endpoint, #[\SensitiveParameter] $fields) |
156 |
refreshAuthentication( #[\SensitiveParameter] $password = null ) |
189 |
save() |
226 |
verify() |
240 |
isURLAllowed($siteURL) |
281 |
getId() |
327 |
getSiteURL() |
332 |
getUser() |
341 |
getPass() |
346 |
getCreated() |
351 |
getModified() |
356 |
setId($id) |
361 |
setSiteURL($siteURL) |
366 |
setUser($user) |
374 |
setPass($pass) |
379 |
setCreated($created) |
390 |
setModified($modified) |
395 |
getPriority() |
400 |
setPriority($priority) |
405 |
getIsAdmin() |
410 |
setIsAdmin($isAdmin) |
415 |
getJson() |
420 |
setJson($json) |
425 |
revalidateToken($streamers_id, $provider) |
433 |
getAccessToken($streamers_id, $provider) |
510 |
Declared classes/interfaces/traits: Upload.
| Named function/method | Source line |
|---|---|
getTableName() |
13 |
getSearchFieldsNames() |
19 |
loadFromEncoder($encoders_id, $resolution, $format) |
24 |
create($encoders_id, $file) |
47 |
deleteFile($encoders_id) |
78 |
getId() |
98 |
getEncoder_id() |
103 |
getResolution() |
108 |
getFormat() |
113 |
getVideos_id() |
118 |
getStatus() |
123 |
setEncoders_id($encoders_id) |
128 |
setResolution($resolution) |
133 |
setFormat($format) |
138 |
setVideos_id($videos_id) |
143 |
setStatus($status) |
148 |
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