Repository navigation
Technical Plugin SendRecordedToEncoder
Starts/stops live recording and sends recordings or DVR clips to the Encoder.
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:
13.6. - Source revision:
fe2c3ae9411e109d10ed680a24e35a188ef147ce. - Entry class file: SendRecordedToEncoder.php.
Confirm the installed plugin version independently of the Streamer version. Configuration defaults below are not a dump of this installation's saved settings.
The on_publish hook can start recording through Live::controlRecordingAsync(). on_record_done processes completed recordings. Correlate each physical recording, live session and Encoder job. Multiple publishes can create separate files; recording presence does not prove conversion/publication succeeded.
| Plugin | Required by declaration | Source reason |
|---|---|---|
| Live | Required | Sends finished Live recordings to the encoder, its core purpose |
| Scheduler | Optional | Optional scheduled recording processing |
Literal runtime plugin references: Chat2, Live. These calls do not mean every referenced plugin is mandatory.
| Override | Implementation |
|---|---|
getTags() |
SendRecordedToEncoder.php:20 |
on_publish($users_id, $live_servers_id, $liveTransmitionHistory_id, $key, $isReconnection) |
SendRecordedToEncoder.php:517 |
getPluginMenu() |
SendRecordedToEncoder.php:540 |
getUserOptions() |
SendRecordedToEncoder.php:546 |
getFooterCode() |
SendRecordedToEncoder.php:662 |
getWatchActionButton($videos_id) |
SendRecordedToEncoder.php:668 |
getVideosManagerListButton() |
SendRecordedToEncoder.php:1068 |
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 |
|---|---|---|---|
webSiteRootURL |
"" |
— | source |
secretRecorderKey |
Private setting; value omitted | — | source |
automaticRecord |
Computed/structured; inspect source | — | source |
saveDVREnable |
true |
— | source |
saveDVRLabel |
'Save Live Now' |
— | source |
saveDVROnDVRTitle |
'on DVR' |
— | source |
saveTheMomentEnable |
true |
Enable save the moment: This will save the specified total of segments from your DVR, for example if your nginx.conf hls_fragment=4s and you select 6 you will save the total of 24 seconds of your video | source |
saveTheMomentLabel |
'Save The moment' |
— | source |
saveTheMomentSegmentsCount |
6 |
Save The moment Segments Count: This will save the specified total of segments from your DVR, for example if your nginx.conf hls_fragment=4s and you select 6 you will save the total of 24 seconds of your video | source |
convertChatIntoCommentsAfterLive |
false |
— | source |
maxSavesPerMinute |
Computed/structured; inspect source | Maximum saves per minute: This will reflect on save the moment and save DVR feature, set 0 to unlimited | source |
downloadTheMomentEnable |
true |
— | source |
downloadTheMomentLabel |
'Download The moment' |
— | source |
downloadTheMomentSegmentsCount |
6 |
Download The moment Segments Count: This will save the specified total of segments from your DVR, for example if your nginx.conf hls_fragment=4s and you select 6 you will save the total of 24 seconds of your video | source |
usersCanSelectAutoRecord |
true |
— | source |
maxRecorderTimeInMinutes |
180 |
— | source |
startRecorderCallback |
Computed/structured; inspect source | Start Recorder Callback: This URL expect to encode | source |
doNotDeleteRecordedIfItIsOnSameServer |
false |
— | source |
showActionButton |
false |
— | source |
encoderFormat |
Computed/structured; inspect source | Encoder Format: Select the encoding format for recorded live streams. "Use Global Default" will follow the VideoHLS plugin setting. | 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 |
|---|---|---|
| Objects/Send_recorder.php | class/helper implementation | — |
| SendRecordedToEncoder.php | plugin entry class |
domain, name, p, path, swfurl, tcurl
|
| View/Send_recorder/add.json.php | JSON entry point; inspect caller and guard |
id, json, key, live_transmitions_id, scheduler_commands_id, status, users_id, videos_id
|
| View/Send_recorder/delete.json.php | JSON entry point; inspect caller and guard | id |
| View/Send_recorder/index.php | PHP page/include/worker; inspect caller | — |
| View/Send_recorder/index_body.php | PHP page/include/worker; inspect caller | — |
| View/Send_recorder/index_head.php | PHP page/include/worker; inspect caller | — |
| View/Send_recorder/list.json.php | JSON entry point; inspect caller and guard | — |
| View/editor.php | PHP page/include/worker; inspect caller | — |
| actionButtonLive.php | PHP page/include/worker; inspect caller | live_index |
| callback.json.php | JSON entry point; inspect caller and guard |
avideoToken, key
|
| chatToComments.json.php | JSON entry point; inspect caller and guard | messages |
| chatToComments.list.json.php | JSON entry point; inspect caller and guard | — |
| chatToComments.php | PHP page/include/worker; inspect caller | — |
| footer.php | PHP page/include/worker; inspect caller | — |
| install/install.sql | schema/migration SQL | — |
| monitor.json.php | JSON entry point; inspect caller and guard | — |
| monitor.php | PHP page/include/worker; inspect caller | — |
| recordStart.json.php | JSON entry point; inspect caller and guard |
avideoToken, key, live_servers_id
|
| recordStop.json.php | JSON entry point; inspect caller and guard |
key, live_servers_id, scheduler_commands_id, token
|
| saveDVR.json.php | JSON entry point; inspect caller and guard |
download, howManySegments, key, live_servers_id
|
| verifyDVRTokenVerification.json.php | JSON entry point; inspect caller and guard | saveDVR |
Tables named in available CREATE TABLE statements: send_recorder.
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 |
|---|---|
getPluginDependencies() |
13 |
getTags() |
20 |
getDescription() |
28 |
getName() |
50 |
getUUID() |
55 |
getPluginVersion() |
60 |
getEmptyDataObject() |
65 |
getEncoderFormat() |
134 |
on_record_done() |
143 |
copyLivePosterToVideo($liveTransmitionRow, $latestHistory, $videoFilename) |
323 |
onStartRecorder($key, $recordLimitInSeconds, $username, $password = '', $live_servers_id = 0) |
385 |
onStopRecorder($send_recorder_id) |
448 |
cancelSchedule($key) |
460 |
isRecording($key) |
476 |
tokenStopRecorder($token) |
485 |
on_publish($users_id, $live_servers_id, $liveTransmitionHistory_id, $key, $isReconnection) |
517 |
getPluginMenu() |
540 |
getUserOptions() |
546 |
canRecord($users_id) |
558 |
canAutoRecord($users_id) |
584 |
canApprove($users_id) |
598 |
recordOptionIsChecked($users_id) |
603 |
userApproved($users_id) |
614 |
canRecordAndRecordOptionIsChecked($users_id) |
635 |
shouldRecordAllLives() |
644 |
allUsersCanRecord() |
650 |
onlySelectedUsersCanRecord() |
656 |
getFooterCode() |
662 |
getWatchActionButton($videos_id) |
668 |
saveDVR($key, $live_servers_id = 0, $howManySegments = 0, $downloadOnly = false, $allowOfflineUser = false) |
677 |
getSaveDVRButton($key, $live_servers_id = 0, $class = '') |
822 |
getsaveTheMomentButton($key, $live_servers_id = 0, $class = '') |
839 |
getdownloadTheMomentButton($key, $live_servers_id = 0, $class = '') |
856 |
chatToComments($live_transmitions_history_id, $videos_id) |
873 |
messageToComments($message, $live_transmitions_history_id, $videos_id) |
904 |
getCommentFromChatMessageId($chat_messages_id) |
928 |
getFromChatMessageId($chat_messages_id) |
939 |
getCommentsFromChatLiveHistory($live_transmitions_history_id) |
954 |
getAllMessagesFromLive($live_transmitions_history_id) |
965 |
API_set_saveDVR($parameters) |
1052 |
useRecorder($key) |
1063 |
getVideosManagerListButton() |
1068 |
These symbols are grouped by source file; inspect the class declaration and visibility before calling them.
Declared classes: Send_recorder.
| Named symbol | Source |
|---|---|
getSearchFieldsNames() |
13 |
getTableName() |
17 |
getAllUsers() |
21 |
getAllLive_transmitions() |
41 |
getAllVideos() |
61 |
getAllScheduler_commands() |
81 |
setId($id) |
101 |
setKey($key) |
105 |
setUsers_id($users_id) |
109 |
setLive_transmitions_id($live_transmitions_id) |
113 |
setVideos_id($videos_id) |
117 |
setStatus($status) |
121 |
setJson($json) |
125 |
setScheduler_commands_id($scheduler_commands_id) |
129 |
getId() |
133 |
getKey() |
137 |
getUsers_id() |
141 |
getLive_transmitions_id() |
145 |
getVideos_id() |
149 |
getStatus() |
153 |
getJson() |
157 |
getScheduler_commands_id() |
161 |
getFromKey($key) |
165 |
isRecording($key) |
191 |
getAllRecording() |
214 |
save() |
233 |
- 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