Repository navigation
Technical Plugin Live
Coordinates RTMP ingest callbacks, session history, HLS playback and restream control.
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: AVideo Streamer repository.
- Reported version:
15.3. - Source revision:
7d48f2dfc0289236718a3f9fba7c5ffecff4a37f. - Entry class file: Live.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 PHP plugin coordinates an external live server. on_publish.php invokes Live::_on_publish(), which requests restream work and dispatches recording hooks. HLS generation, every relay destination and recording conversion are separate stages. Correlate the live-history ID and normalized timestamps across them.
| Plugin | Required by declaration | Source reason |
|---|---|---|
| PayPerViewLive | Optional | Optional pay-per-view gating for live streams |
| PlayLists | Optional | Optional scheduled/rebroadcast playlist integration |
| VideoPlaylistScheduler | Optional | Optional calendar/scheduling integration |
Literal runtime plugin references: CustomizeAdvanced, CustomizeUser, LiveUsers, Meet, PayPerViewLive, PlayerSkins, SecureVideosDirectory, SendRecordedToEncoder, TheaterButton, VideoHLS. These calls do not mean every referenced plugin is mandatory.
| Override | Implementation |
|---|---|
getTags() |
Live.php:47 |
getHTMLMenuRight() |
Live.php:75 |
getLivePanel() |
Live.php:91 |
getLiveApplicationArray() |
Live.php:98 |
getDataObjectAdvanced() |
Live.php:425 |
getDataObjectDeprecated() |
Live.php:488 |
getDataObjectExperimental() |
Live.php:508 |
getHeadCode() |
Live.php:718 |
getFooterCode() |
Live.php:782 |
getChartContent() |
Live.php:1701 |
dataSetup() |
Live.php:1717 |
getVideosManagerListButtonTitle() |
Live.php:1930 |
getPluginMenu() |
Live.php:1940 |
getUploadMenuButton() |
Live.php:4140 |
getWatchActionButton($videos_id) |
Live.php:4782 |
getPermissionsOptions() |
Live.php:4824 |
getUserNotificationButton() |
Live.php:4887 |
executeEveryMinute() |
Live.php:4892 |
executeEveryHour() |
Live.php:4922 |
on_publish_done($live_transmitions_history_id, $users_id, $key, $live_servers_id) |
Live.php:4937 |
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 |
|---|---|---|---|
topCopyKeysButtonTitle |
Private setting; value omitted | — | source |
hideTopCopyKeysButton |
Private setting; value omitted | Hide Top Copy Live Keys Button: This will hide the "Copy Live Keys" button on the top menu bar | source |
button_title |
"LIVE" |
Button Title: This is the title that will appear in your button to enter in the Live panel | source |
server_type |
Computed/structured; inspect source | Server type: If is set to public you do not need to configure anything | source |
server |
Computed/structured; inspect source | RTMP Server URL: Usually it is | source |
playerServer |
Computed/structured; inspect source | Player URL: This is a URL to your NGINX server, this URL will be used by the HTML5 player, If your site is HTTPS your player URL MUST be HTTPS as well, usually it is | source |
stats |
Computed/structured; inspect source | Stats Page URL: When you installed the NGINX you also install the stat.xsl, we will use it to grab the information when you have livestreams running, usually it is | source |
restreamerURL |
Computed/structured; inspect source | Restreamer URL: https://github.com/WWBN/AVideo/wiki/Restream | source |
controlURL |
Computed/structured; inspect source | Control URL | source |
controlServer |
Computed/structured; inspect source | Control Server | source |
disableRestream |
false |
Disable Restream: If you check this, we will not send requests to your Restreamer URL | source |
whoCanRestream |
Computed/structured; inspect source | Who can Restream | source |
restreamStandAloneFFMPEG |
'' |
— | source |
restream_resolution |
Computed/structured; inspect source | Restream Output Resolution: Resolution used when re-encoding the live stream. Bitrate, H.264 profile and audio are selected individually for YouTube, Facebook, Twitch, LinkedIn or a generic RTMP destination. Choose "Passthrough" only when the source already complies with every destination. | source |
enableRestreamWatchdog |
true |
Enable Restream Watchdog: When enabled, executeEveryMinute() will detect restreams that unexpectedly disconnected from their destination (e.g. Broken pipe, Error muxing a packet, Error writing trailer, unexpected FFmpeg termination) while the source is still live, and will automatically restart them using the existing restream start flow. Enabled by default. | source |
restreamWatchdogCooldownSeconds |
30 |
Restream Watchdog Cooldown (seconds): Minimum time to wait between automatic restart attempts for the same restream. Default: 30 seconds. | source |
restreamWatchdogMaxAttempts |
3 |
Restream Watchdog Max Attempts: Maximum number of automatic restart attempts allowed within the attempts window below before the watchdog stops retrying automatically for that restream. Default: 3. | source |
restreamWatchdogWindowSeconds |
900 |
Restream Watchdog Attempts Window (seconds): Time window used to count automatic restart attempts towards the max attempts limit above. Default: 900 seconds (15 minutes). | source |
restreamWatchdogHealthyResetSeconds |
600 |
Restream Watchdog Healthy Reset (seconds): How long a restream must stay healthy (running) before the automatic restart attempt counter is reset to zero. Default: 600 seconds (10 minutes). | source |
restreamWatchdogBackoffSequenceSeconds |
Computed/structured; inspect source | Restream Watchdog Backoff Sequence (seconds): Comma-separated reconnect delay for the 1st, 2nd, 3rd... automatic restart attempt (the last value repeats for any further attempt). Applied on top of "Restream Watchdog Cooldown" as a floor. Default: 2,5,10,20,30. | source |
restreamWatchdogBackoffJitterPercent |
20 |
Restream Watchdog Backoff Jitter (%): Random +/- percentage applied to each backoff delay above, so multiple restreams reconnecting after the same outage do not all retry at the exact same instant. Default: 20. | source |
restreamDiagnosticSnapshotIntervalSeconds |
300 |
Restream Diagnostic Snapshot Interval (seconds): Minimum time between best-effort system diagnostic snapshots (CPU/memory/disk/network/DNS/container limits) captured when a restream disconnects unexpectedly. Rate limited to avoid overhead on repeated failures. Default: 300 seconds (5 minutes). | source |
restreamForceProtocolForYouTubeTest |
'' |
Restream: Force Protocol for YouTube (testing only): DIAGNOSTIC USE ONLY, leave "Off" for normal operation. Forces every YouTube restream destination configured via the "Local" provider to use RTMP or RTMPS regardless of what was configured, without changing any encoding parameter or affecting Facebook/Twitch/other destinations. Use this temporarily to isolate whether disconnects are specific to RTMPS, then set back to Off. | source |
restreamForceProtocolForYouTubeTest |
Computed/structured; inspect source | Restream: Force Protocol for YouTube (testing only): DIAGNOSTIC USE ONLY, leave "Off" for normal operation. Forces every YouTube restream destination configured via the "Local" provider to use RTMP or RTMPS regardless of what was configured, without changing any encoding parameter or affecting Facebook/Twitch/other destinations. Use this temporarily to isolate whether disconnects are specific to RTMPS, then set back to Off. | source |
restreamFifoEnabled |
true |
Restream: Enable FIFO Output Recovery: When enabled, restream output uses FFmpeg's "fifo" muxer to automatically recover the OUTPUT connection to the destination (e.g. a brief network hiccup or TLS stall) without restarting the whole FFmpeg process, in addition to the existing Restream Watchdog which remains a second, unconditional recovery layer for anything the FIFO layer cannot recover on its own. Only used for destinations whose provider is in the allow-list below, and only when this host's FFmpeg build is confirmed (via a real capability probe, not just a version number) to support every option this feature needs; every other destination (and passthrough/stream-copy outputs) silently keeps using the previous, unmodified output path. Enabled by default for YouTube: validated with FFmpeg 6.1 against adaptive HLS sources and RTMP/RTMPS destinations that drop and come back mid-stream. | source |
restreamFifoAllowedProviders |
'youtube' |
Restream: FIFO Allowed Providers: Comma-separated list of destination providers allowed to use the FIFO output recovery layer above (detected from the destination URL, e.g. "youtube", "facebook", "twitch", "linkedin", "generic"). Default: youtube only, the only provider validated against this feature so far. Ignored while the setting above is Off. | source |
restreamFifoAttemptRecovery |
true |
Restream: FIFO Attempt Recovery: Maps to FFmpeg's fifo muxer "attempt_recovery" option: when the output connection drops, try to reopen and resume it instead of ending the stream. Default: enabled. | source |
restreamFifoRecoverAnyError |
false |
Restream: FIFO Recover Any Error: Maps to FFmpeg's fifo muxer "recover_any_error" option: also attempt recovery for error types FFmpeg does not classify as a connection failure. More aggressive; keep Off unless a specific destination needs it. | source |
restreamFifoRestartWithKeyframe |
Private setting; value omitted | Restream: FIFO Restart With Keyframe: Maps to FFmpeg's fifo muxer "restart_with_keyframe" option: after a recovered reconnect, resume output starting at the next keyframe instead of a mid-GOP frame, avoiding a visibly broken/green segment on the destination. Default: enabled. | source |
restreamFifoDropPktsOnOverflow |
true |
Restream: FIFO Drop Packets on Overflow: Maps to FFmpeg's fifo muxer "drop_pkts_on_overflow" option: if the internal recovery queue fills up faster than the destination can accept data, drop the oldest queued packets instead of blocking/crashing the encoder. Default: enabled. | source |
restreamFifoRecoveryWaitTime |
2 |
Restream: FIFO Recovery Wait Time (seconds): Maps to FFmpeg's fifo muxer "recovery_wait_time" option: how long to wait before each reconnect attempt. Allowed range: 0.1-30. Default: 2 seconds. | source |
restreamFifoRecoveryWaitStreamtime |
false |
Restream: FIFO Recovery Wait Streamtime: Maps to FFmpeg's fifo muxer "recovery_wait_streamtime" option: measure the recovery wait time above using stream time instead of real (wall-clock) time. Default: Off (wall-clock). | source |
restreamFifoQueueSize |
8192 |
Restream: FIFO Queue Size: Maps to FFmpeg's fifo muxer "queue_size" option: number of packets buffered while a reconnect is attempted. Allowed range: 8-20000. Default: 8192 (matches this codebase's existing -thread_queue_size input buffering). | source |
restreamFifoMaxRecoveryAttempts |
30 |
Restream: FIFO Max Recovery Attempts: Maps to FFmpeg's fifo muxer "max_recovery_attempts" option: how many consecutive output-recovery attempts FFmpeg itself makes before giving up and exiting the process. Allowed range: 0-50 (0 = FFmpeg's own unlimited default - not recommended, prefer a bounded value so a permanently-unreachable destination still exits promptly into the Restream Watchdog's own backoff/attempt-limit logic instead of retrying forever inside a single FFmpeg process). Default: 30, paired with the 2 second Recovery Wait Time default - this is a FLOOR of at least 60 seconds of internal recovery WAIT time before FFmpeg exits, not a reliable upper bound: each reconnect attempt's own TCP/TLS connect time adds on top with no cap, so a slow-to-respond (rather than cleanly refusing) destination can take substantially longer before the Restream Watchdog takes over. | source |
disableDVR |
false |
Disable DVR: Enable or disable the DVR Feature, you can control the DVR length in your nginx.conf on the parameter hls_playlist_length | source |
disableGifThumbs |
false |
Disable Gif Thumbs: This option will disable the Animated Gif render, it will save some hardware capacity from your encoder and may speedup your page | source |
disableLiveThumbs |
false |
Disable Live thumbnails: This option will disable the çive image extraction and will use the user static image, it will save some hardware capacity from your encoder and may speedup your page | source |
hideTopButton |
false |
Hide Top Button: This will hide the "Live Settings" button on the top menu bar | source |
hideUserGroups |
false |
— | source |
hideShare |
false |
— | source |
hideAdvancedStreamKeys |
Private setting; value omitted | — | source |
hidePublicListedOption |
false |
— | source |
publicListedIsTheDefault |
true |
— | source |
hideIsRebroadcastOption |
true |
— | source |
saveLiveIsTheDefault |
true |
Save Live is the Default: https://github.com/WWBN/AVideo/wiki/Record-Live-Stream | source |
useAadaptiveMode |
false |
Adaptive mode: https://github.com/WWBN/AVideo/wiki/Adaptive-Bitrates-on-Livestream | source |
protectLive |
false |
Live Protection: With this your encryption key will be protected, and only your site player will be able to play your videos, download tools will not be able to download your video. if you want to share your live externally you can use the embed and you will still be protected. but if you want to use the m3u8 file you must disable this | source |
doNotShowLiveOnVideosList |
false |
Do not show live on videos list: We will not show the live thumbs on the main Gallery page | source |
doNotShowOnlineOfflineLabel |
false |
Hide the Online/Offline Badge on live streams | source |
doNotShowLiveOnCategoryList |
false |
Do not show live on site category list: We will not show the live thumbs on the main Gallery page | source |
doNotShowOfflineLiveOnCategoryList |
false |
Do not show offline lives on site category list: We will not show the live thumbs on the main Gallery page if it is offline | source |
limitLiveOnVideosList |
12 |
Videos List Limit: This will limit the maximum of videos that you will see in the Videos page | source |
doNotShowGoLiveButton |
false |
Hide Top Live Settings Button: This will hide the "Go Live" button on the top menu bar | source |
doNotShowGoLiveButtonOnUploadMenu |
false |
Hide Live Settings Button on Upload Menu: This will hide the "Live Settings" button on the right upload menu bar | source |
useLiveServers |
false |
Use Live Servers: Check this if you will use External Live Servers https://github.com/WWBN/AVideo/wiki/Live-Plugin#livestream-server-balance | source |
disableMeetCamera |
false |
Disable Meet camera: This requires out Meet Server, with the Meet camera you can use your PC webcam directly in the webpage or mobile to make livestreams | source |
playLiveInFullScreen |
false |
Play Livestream in Full Screen | source |
playLiveInFullScreenOnIframe |
false |
Play Livestream in Full Screen on IFrame | source |
hls_path |
"/HLS/live" |
HLS Path URL: Used only when we stop a Live, we use this path to delete the files | source |
requestStatsTimout |
4 |
Stats Timout: If a remote server (stats page) does not respond we stop waiting after this timeout | source |
cacheStatsTimout |
60 |
Stats Cache Timeout: we will cache the result, this will save some resources | source |
requestStatsInterval |
60 |
Stats Request Interval: how many seconds until request the stats again | source |
callbackSecret |
Private setting; value omitted | RTMP Callback Secret: Required only when your NGINX server is external (not localhost/Docker). Set any strong random string here and add it to your nginx.conf callbacks: on_publish http://your-avideo.com/plugin/Live/on_publish.php?secret=YOUR_SECRET; on_publish_done http://your-avideo.com/plugin/Live/on_publish_done.php?secret=YOUR_SECRET; on_record_done http://your-avideo.com/plugin/Live/on_record_done.php?secret=YOUR_SECRET; — Leave empty if NGINX runs on localhost or Docker. | source |
streamDeniedMsg |
"You can not stream live videos" |
Denied Message: We will show this message when a user is not allowed so watch a livestream | source |
allowMultipleLivesPerUser |
true |
Allow Multiple Lives Per User: Your users will be able to make unlimited livestreams | source |
controllButtonsShowOnlyToAdmin_record_start |
false |
Show Record Start Button Only to Admin: Regular users will not able to see this button | source |
controllButtonsShowOnlyToAdmin_record_stop |
false |
Show Record Stop Button Only to Admin: Regular users will not able to see this button | source |
controllButtonsShowOnlyToAdmin_drop_publisher |
false |
Show Drop Publisher Button Only to Admin: Regular users will not able to see this button | source |
controllButtonsShowOnlyToAdmin_drop_publisher_reset_key |
Private setting; value omitted | Show Drop Publisher and Reset Key Button Only to Admin: Regular users will not able to see this button | source |
controllButtonsShowOnlyToAdmin_save_dvr |
false |
Show Save DVR Button Only to Admin: Regular users will not able to see this button | source |
disable_live_schedule |
false |
Disable Live Schedule | source |
live_schedule_label |
'Upcoming Events' |
Label for Schedule | source |
live_rebroadcasts_label |
'Rebroadcasts' |
Label for Rebroadcasts | source |
reminderText |
Computed/structured; inspect source | Scheduled reminder text: If you setup the live scheduler properly this text will be sent to your subscribers | source |
autoFishLiveEveryHour |
false |
Automatically end offline live sessions every hour: The server will verify if can access the m3u8 file, and finish the live if cannot | source |
showAudioVideoToggleButton |
true |
Show Audio/Video Toggle Button: Enable the button that allows users to switch between video and audio streams during live transmission | source |
enableSendViewers |
true |
Enable Send Viewers Feature: Allow streamers to redirect all viewers to a specified URL and stop the live stream | 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 |
|---|---|---|
| Live.php | plugin entry class |
catName, channelName, debug, key, limitOnceToOne, live_index, live_password, live_schedule, live_schedule_id, live_servers_id, modified, name, playlists_id_live, rowCount, secret, swfurl, tags_id, tcurl, token
|
| Objects/LiveRestreamWatchdog.php | class/helper implementation | — |
| Objects/LiveTransmition.php | class/helper implementation |
c, listed, live_index, live_schedule, live_transmitions_id, playlists_id_live, saveTransmition, u
|
| Objects/LiveTransmitionHistory.php | class/helper implementation | playlists_id_live |
| Objects/LiveTransmitionHistoryLog.php | class/helper implementation | — |
| Objects/Live_restreams.php | class/helper implementation | — |
| Objects/Live_restreams_logs.php | class/helper implementation | — |
| Objects/Live_schedule.php | class/helper implementation | — |
| Objects/Live_servers.php | class/helper implementation | — |
| Objects/StreamAuthCache.php | class/helper implementation | — |
| actionButton.php | PHP page/include/worker; inspect caller | — |
| api/preauthorize.json.php | JSON entry point; inspect caller and guard |
pass, password, user
|
| asyncGetStats.php | PHP page/include/worker; inspect caller | — |
| audience.json.php | JSON entry point; inspect caller and guard |
globalToken, key, live_servers_id
|
| authorizeKeyAccess.php | PHP page/include/worker; inspect caller |
debug, key
|
| calendar.json.php | JSON entry point; inspect caller and guard | — |
| calendar.php | PHP page/include/worker; inspect caller | — |
| commandLineSendAllRecordedToEncoder.php | PHP page/include/worker; inspect caller | — |
| confirmLivePassword.php | PHP page/include/worker; inspect caller |
c, key, live_password, live_schedule, u
|
| control.json.php | JSON entry point; inspect caller and guard |
command, key, live_servers_id, name
|
| controlRecording.php | PHP page/include/worker; inspect caller | — |
| getImage.php | PHP page/include/worker; inspect caller |
c, debug, format, live_index, live_schedule, live_servers_id, playlists_id_live, u
|
| getUploadMenuButton.php | PHP page/include/worker; inspect caller | — |
| index.php | PHP page/include/worker; inspect caller |
c, embed, embedv2, justRedirected, live_index, live_schedule, live_servers_id, noChat, resetKey, u, users_id
|
| indexCol1.php | PHP page/include/worker; inspect caller | — |
| indexCol2.php | PHP page/include/worker; inspect caller | — |
| indexCol3.php | PHP page/include/worker; inspect caller | — |
| install/install.sql | schema/migration SQL | — |
| install/updateV10.0.sql | schema/migration SQL | — |
| install/updateV10.1.sql | schema/migration SQL | — |
| install/updateV10.2.sql | schema/migration SQL | — |
| install/updateV10.3.sql | schema/migration SQL | — |
| install/updateV10.4.sql | schema/migration SQL | — |
| install/updateV10.5.sql | schema/migration SQL | — |
| install/updateV11.1.sql | schema/migration SQL | — |
| install/updateV11.2.sql | schema/migration SQL | — |
| install/updateV12.0.sql | schema/migration SQL | — |
| install/updateV13.0.sql | schema/migration SQL | — |
| install/updateV14.0.sql | schema/migration SQL | — |
| install/updateV15.1.sql | schema/migration SQL | — |
| install/updateV2.0.sql | schema/migration SQL | — |
| install/updateV3.0.sql | schema/migration SQL | — |
| install/updateV4.0.sql | schema/migration SQL | — |
| install/updateV5.0.sql | schema/migration SQL | — |
| install/updateV5.1.sql | schema/migration SQL | — |
| install/updateV5.2.sql | schema/migration SQL | — |
| install/updateV6.0.sql | schema/migration SQL | — |
| install/updateV7.0.sql | schema/migration SQL | — |
| install/updateV7.2.sql | schema/migration SQL | — |
| install/updateV8.0.sql | schema/migration SQL | — |
| install/updateV9.0.sql | schema/migration SQL | — |
| isLiveRunning.json.php | JSON entry point; inspect caller and guard | name |
| keyInfo.php | PHP page/include/worker; inspect caller |
json, key
|
| latestOrLive.php | PHP page/include/worker; inspect caller |
catName, channelName, embed, isClosed, muted, noChat, rowCount, sort, videos_id
|
| m3u8.php | PHP page/include/worker; inspect caller | uuid |
| myLiveControls.php | PHP page/include/worker; inspect caller | — |
| myLiveControls.save.json.php | JSON entry point; inspect caller and guard |
autoRedirect, customMessage, customUrl
|
| on_connect.php | PHP page/include/worker; inspect caller | — |
| on_done.php | PHP page/include/worker; inspect caller | — |
| on_play.php | PHP page/include/worker; inspect caller | — |
| on_play_done.php | PHP page/include/worker; inspect caller | — |
| on_publish.php | PHP page/include/worker; inspect caller |
addr, app, domain, e, key, name, p, s, swfurl, tcurl
|
| on_publish_done.php | PHP page/include/worker; inspect caller |
e, key, name, p, swfurl, tcurl
|
| on_publish_socket_notification.php | PHP page/include/worker; inspect caller | live_servers_id |
| on_record_done.php | PHP page/include/worker; inspect caller | — |
| on_update.php | PHP page/include/worker; inspect caller | — |
| remindMe.json.php | JSON entry point; inspect caller and guard |
deleteIfExists, live_schedule_id, minutesEarlier
|
| remindMe.php | PHP page/include/worker; inspect caller | live_schedule_id |
| removePoster.php | PHP page/include/worker; inspect caller | live_servers_id |
| report.php | PHP page/include/worker; inspect caller | — |
| restreamInBackground.php | PHP page/include/worker; inspect caller | — |
| saveLive.php | PHP page/include/worker; inspect caller |
categories_id, description, isRebroadcast, key, password, title, userGroups, users_id
|
| sendViewers.json.php | JSON entry point; inspect caller and guard |
customMessage, live_key, live_servers_id, viewerUrl
|
| socketMessageLiveOwner.json.php | JSON entry point; inspect caller and guard |
error, key, msg
|
| standAloneFiles/control.json.php | JSON entry point; inspect caller and guard |
app, command, name, token
|
| standAloneFiles/ffmpegCapabilities.php | PHP page/include/worker; inspect caller | — |
| standAloneFiles/ffmpegCapabilitiesTool.php | PHP page/include/worker; inspect caller | — |
| standAloneFiles/functions.php | PHP page/include/worker; inspect caller | — |
| standAloneFiles/getRecordedFile.php | PHP page/include/worker; inspect caller |
file, saveDVR, secret
|
| standAloneFiles/kill_ffmpeg_restream.php | PHP page/include/worker; inspect caller | — |
| standAloneFiles/restreamLogging.php | PHP page/include/worker; inspect caller | — |
| standAloneFiles/restreamProfiles.php | PHP page/include/worker; inspect caller | — |
| standAloneFiles/restreamer.json.php | JSON entry point; inspect caller and guard |
destinations, logFile, m3u8, tokenForAction, user_id
|
| standAloneFiles/saveDVR.json.php | JSON entry point; inspect caller and guard | saveDVR |
| stats.json.php | JSON entry point; inspect caller and guard | name |
| stopLive.php | PHP page/include/worker; inspect caller | key |
| tabs/recommended_stream_settings.php | PHP page/include/worker; inspect caller | — |
| tabs/tabAdmin.php | PHP page/include/worker; inspect caller | — |
| tabs/tabShare.php | PHP page/include/worker; inspect caller | — |
| tabs/tabStreamKey.php | PHP page/include/worker; inspect caller | — |
| tabs/tabStreamSettings.php | PHP page/include/worker; inspect caller |
live_index, live_schedule_id, live_servers_id
|
| tabs/tabStreamSettings.software.php | PHP page/include/worker; inspect caller | — |
| tabs/tabStreamSettings.webcam.php | PHP page/include/worker; inspect caller | — |
| test.php | PHP page/include/worker; inspect caller | statsURL |
| tools/findkey.php | PHP page/include/worker; inspect caller | — |
| tools/reviewKeys.php | PHP page/include/worker; inspect caller | — |
| tools/testRestreams.php | PHP page/include/worker; inspect caller | — |
| uploadPoster.json.php | JSON entry point; inspect caller and guard |
image, liveImgCloseTimeInSeconds, liveImgTimeInSeconds, live_schedule_id, live_servers_id, posterType, ppv_schedule_id
|
| uploadPoster.php | PHP page/include/worker; inspect caller |
file_data, live_schedule_id, live_servers_id
|
| verifyToken.json.php | JSON entry point; inspect caller and guard | token |
| view/Live_restreams/activeLives.php | PHP page/include/worker; inspect caller | — |
| view/Live_restreams/add.json.php | JSON entry point; inspect caller and guard |
id, name, parameters, status, stream_key, stream_url, users_id
|
| view/Live_restreams/delete.json.php | JSON entry point; inspect caller and guard | id |
| view/Live_restreams/getAction.json.php | JSON entry point; inspect caller and guard |
action, live_restreams_id, live_restreams_logs_id, live_transmitions_history_id
|
| view/Live_restreams/getLiveKey.json.php | JSON entry point; inspect caller and guard |
live_restreams_id, live_schedule_id, ppv_schedule_id, token
|
| view/Live_restreams/getLiveKey.php | PHP page/include/worker; inspect caller | — |
| view/Live_restreams/getLogContent.json.php | JSON entry point; inspect caller and guard |
live_restreams_id, live_restreams_logs_id, live_transmitions_history_id
|
| view/Live_restreams/index.php | PHP page/include/worker; inspect caller | — |
| view/Live_restreams/index_body.php | PHP page/include/worker; inspect caller | — |
| view/Live_restreams/index_head.php | PHP page/include/worker; inspect caller | — |
| view/Live_restreams/list.json.php | JSON entry point; inspect caller and guard | users_id |
| view/Live_restreams/livePanel.php | PHP page/include/worker; inspect caller | — |
| view/Live_restreams/livePanelForm.php | PHP page/include/worker; inspect caller | — |
| view/Live_restreams/logHistory.json.php | JSON entry point; inspect caller and guard | live_restreams_id |
| view/Live_restreams/logViewer.php | PHP page/include/worker; inspect caller |
live_restreams_id, live_restreams_logs_id, live_transmitions_history_id
|
| view/Live_restreams/resendRestreamer.json.php | JSON entry point; inspect caller and guard |
live_restreams_id, live_transmitions_history_id
|
| view/Live_restreams/testRestreamer.json.php | JSON entry point; inspect caller and guard | — |
| view/Live_restreams/verifyTokenForAction.json.php | JSON entry point; inspect caller and guard | token |
| view/Live_restreams_logs/add.json.php | JSON entry point; inspect caller and guard |
id, live_restreams_id, logFile, m3u8, responseToken, restreamerURL
|
| view/Live_restreams_logs/delete.json.php | JSON entry point; inspect caller and guard | id |
| view/Live_restreams_logs/index.php | PHP page/include/worker; inspect caller | — |
| view/Live_restreams_logs/index_body.php | PHP page/include/worker; inspect caller | — |
| view/Live_restreams_logs/index_head.php | PHP page/include/worker; inspect caller | — |
| view/Live_restreams_logs/list.json.php | JSON entry point; inspect caller and guard | draw |
| view/Live_schedule/add.json.php | JSON entry point; inspect caller and guard |
description, id, live_servers_id, scheduled_password, scheduled_time, status, title, userGroupsSchedule, users_id_company
|
| view/Live_schedule/delete.json.php | JSON entry point; inspect caller and guard | id |
| view/Live_schedule/index.php | PHP page/include/worker; inspect caller | — |
| view/Live_schedule/index_body.php | PHP page/include/worker; inspect caller | — |
| view/Live_schedule/index_head.php | PHP page/include/worker; inspect caller | — |
| view/Live_schedule/list.json.php | JSON entry point; inspect caller and guard |
draw, sort
|
| view/Live_schedule/panel.php | PHP page/include/worker; inspect caller | live_servers_id |
| view/Live_schedule/panelForm.php | PHP page/include/worker; inspect caller | — |
| view/Live_schedule/panelIndex.php | PHP page/include/worker; inspect caller | — |
| view/Live_schedule/uploadPoster.php | PHP page/include/worker; inspect caller |
live_schedule_id, live_servers_id, ppv_schedule_id
|
| view/Live_servers/add.json.php | JSON entry point; inspect caller and guard |
controlURL, disableDVR, disableGifThumbs, getRemoteFile, id, name, playerServer, protectLive, restreamerURL, rtmp_server, stats_url, status, url, useAadaptiveMode
|
| view/Live_servers/delete.json.php | JSON entry point; inspect caller and guard | id |
| view/Live_servers/index.php | PHP page/include/worker; inspect caller | — |
| view/Live_servers/index_body.php | PHP page/include/worker; inspect caller | — |
| view/Live_servers/index_head.php | PHP page/include/worker; inspect caller | — |
| view/Live_servers/list.json.php | JSON entry point; inspect caller and guard | — |
| view/audience.php | PHP page/include/worker; inspect caller | — |
| view/audioToggleButton.js | browser/worker JavaScript; verify loader | — |
| view/deleteHistory.json.php | JSON entry point; inspect caller and guard | — |
| view/editor.php | PHP page/include/worker; inspect caller | — |
| view/finishAll.json.php | JSON entry point; inspect caller and guard | all |
| view/footer.php | PHP page/include/worker; inspect caller | — |
| view/getActiveLives.json.php | JSON entry point; inspect caller and guard | — |
| view/getRestream.json.php | JSON entry point; inspect caller and guard |
live_transmitions_history_id, restreams_id
|
| view/http-streaming/videojs-http-streaming.cjs.js | browser/worker JavaScript; verify loader | — |
| view/http-streaming/videojs-http-streaming.es.js | browser/worker JavaScript; verify loader | — |
| view/http-streaming/videojs-http-streaming.js | browser/worker JavaScript; verify loader | — |
| view/isOnlineLabel.js | browser/worker JavaScript; verify loader | — |
| view/live.js | browser/worker JavaScript; verify loader | — |
| view/liveVideo.php | PHP page/include/worker; inspect caller |
live_schedule, live_servers_id, ppv_schedule_id
|
| view/loopBGHLS/index.m3u8.php | PHP page/include/worker; inspect caller | res |
| view/loopBGHLS/index.ts.php | PHP page/include/worker; inspect caller |
res, seq
|
| view/loopBGHLS/res240/index.m3u8.php | PHP page/include/worker; inspect caller | — |
| view/loopBGHLS/res360/index.m3u8.php | PHP page/include/worker; inspect caller | — |
| view/loopBGHLS/res480/index.m3u8.php | PHP page/include/worker; inspect caller | — |
| view/loopBGHLS/res720/index.m3u8.php | PHP page/include/worker; inspect caller | — |
| view/menuRight.php | PHP page/include/worker; inspect caller | — |
| view/modeYoutubeLive.php | PHP page/include/worker; inspect caller |
c, embed, live_index, live_schedule, playlists_id_live, u
|
| view/onlineLabel.php | PHP page/include/worker; inspect caller | — |
| view/panel.php | PHP page/include/worker; inspect caller | — |
| view/restreamsActive.json.php | JSON entry point; inspect caller and guard | — |
| view/socket.js | browser/worker JavaScript; verify loader | — |
| view/swfobject.js | browser/worker JavaScript; verify loader | — |
| view/videoEmbeded.php | PHP page/include/worker; inspect caller |
c, live_index, live_schedule, live_servers_id, ppv_schedule_id, u
|
| view/videoEmbededV2.php | PHP page/include/worker; inspect caller |
c, live_index, live_schedule, live_servers_id, ppv_schedule_id, u, webSiteRootURL
|
Tables named in available CREATE TABLE statements: live_restreams, live_restreams_logs, live_schedule, live_servers, live_transmition_history_log, live_transmitions, live_transmitions_has_users_groups, live_transmitions_history.
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() |
28 |
getTags() |
47 |
getDescription() |
57 |
getName() |
70 |
getHTMLMenuRight() |
75 |
getUUID() |
81 |
getPluginVersion() |
86 |
getLivePanel() |
91 |
getLiveApplicationArray() |
98 |
getLiveApplicationModelArray($array) |
264 |
getDataObjectAdvanced() |
425 |
getDataObjectDeprecated() |
488 |
getDataObjectExperimental() |
508 |
getEmptyDataObject() |
516 |
getHeadCode() |
718 |
getFooterCode() |
782 |
getButtonTitle() |
801 |
getKey() |
807 |
getDestinationApplicationName() |
813 |
getDestinationHost() |
821 |
getDestinationPort() |
828 |
getPlayerDestinationHost() |
838 |
getPlayerDestinationPort() |
845 |
getServer($live_servers_id = -1) |
855 |
getAPPName() |
873 |
getControlOrPublic($key, $live_servers_id = 0) |
891 |
getDropURL($key, $live_servers_id = 0) |
916 |
getIsRecording($key, $live_servers_id = 0) |
932 |
getStartRecordURL($key, $live_servers_id = 0) |
946 |
getStopRecordURL($key, $live_servers_id = 0) |
965 |
controlRecording($key, $live_servers_id, $start = true, $try = 0) |
979 |
controlRecordingAsync($key, $live_servers_id, $start = true) |
1025 |
userCanRecordLive($users_id) |
1037 |
getButton($command, $key, $live_servers_id = 0, $iconsOnly = false, $label = "'<string>''<string>'") |
1045 |
getRecordControlls($key, $live_servers_id = 0, $iconsOnly = false) |
1189 |
getAllControlls($key, $live_servers_id = 0, $iconsOnly = false, $btnClass = '') |
1203 |
getRestreamer($live_servers_id = -1) |
1224 |
getControl($live_servers_id = -1) |
1241 |
getRTMPLink($users_id, $forceIndex = false, $doNotCheckUser = false) |
1262 |
getRTMPLinkFromKey($key, $forceIndex = false) |
1268 |
getRTMPLinkWithOutKey($users_id, $short = true) |
1275 |
getRTMPLinkWithOutKeyFromKey($key) |
1282 |
getKeyFromUser($users_id, $doNotCheckUser = false) |
1289 |
getDynamicKey($key) |
1307 |
getPlayerServer($ignoreCDN = false) |
1316 |
getUseAadaptiveMode() |
1339 |
getRemoteFile() |
1352 |
getRemoteFileFromLiveServersID($live_servers_id) |
1357 |
getRemoteFileFromRTMPHost($rtmpHostURI) |
1371 |
assertRtmpCallbackAllowed() |
1388 |
getLiveServersIdRequest() |
1422 |
getLiveScheduleIdRequest() |
1439 |
getM3U8File($uuid, $doNotProtect = false, $ignoreCDN = false) |
1450 |
getDisableGifThumbs() |
1465 |
getStatsURL($live_servers_id = 0) |
1471 |
getStatsObject($live_servers_id = 0, $force_recreate = false, $tries = 0) |
1484 |
createCacheStatsObject($live_servers_id = 0, $requestStatsTimout = 15) |
1547 |
isStatsAccessible($live_servers_id) |
1600 |
get_data($url, $timeout) |
1612 |
logStatsXMLFailure($url, $live_servers_id, $timeout, $data, $statsResponse) |
1662 |
sanitizeStatsLogPreview($data) |
1687 |
getChartTabs() |
1693 |
getChartContent() |
1701 |
saveHistoryLog($key) |
1707 |
dataSetup() |
1717 |
stopLive($users_id) |
1726 |
stopLiveFromkey($key) |
1740 |
startRecording($users_id) |
1786 |
getApplicationName() |
1803 |
stopRecording($users_id) |
1816 |
getLinkToLiveFromUsers_id($users_id, $live_schedule_id = 0) |
1833 |
getLinkToLiveFromUsers_idAndLiveServer($users_id, $live_servers_id, $live_index = null, $live_schedule_id = 0) |
1839 |
getLinkToLiveFromChannelNameAndLiveServer($channelName, $live_servers_id, $live_index = null, $live_schedule_id = 0) |
1852 |
getAvailableLiveServersId() |
1889 |
getLastServersIdFromUser($users_id) |
1899 |
getLastsLiveHistoriesFromUser($users_id, $count = 10) |
1909 |
getLinkToLiveFromUsers_idWithLastServersId($users_id) |
1914 |
getCurrentLiveServersId() |
1920 |
getVideosManagerListButtonTitle() |
1930 |
getPluginMenu() |
1940 |
checkAllFromStats($force_recreate = false) |
1963 |
finishAllFromStats() |
1969 |
unfinishAllFromStats($force_recreate = false) |
2008 |
getStatsApplications($force_recreate = false) |
2039 |
getStats($force_recreate = false) |
2063 |
isAdaptive($key) |
2161 |
getAllServers() |
2173 |
getAvailableLiveServer() |
2183 |
canSeeLiveFromLiveKey($key) |
2236 |
isPasswordProtected($key) |
2245 |
isRebroadcast($key) |
2272 |
canManageLiveFromLiveKey($key, $users_id) |
2298 |
isAPrivateLiveFromLiveKey($key) |
2315 |
getTitleFromUsers_Id($users_id) |
2324 |
getLiveTransmitionObjectFromUsers_id($users_id) |
2336 |
getLiveTransmitionObjectFromKey($key) |
2347 |
_getStats($live_servers_id = 0, $force_recreate = false) |
2393 |
getDescriptionFromKey($key, $description = '') |
2631 |
getTitleFromKey($key, $title = '') |
2660 |
isApplicationListed($key, $listItIfIsAdminOrOwner = true) |
2716 |
isPrivate($key) |
2745 |
byPass() |
2756 |
getLiveParametersFromKey($key) |
2765 |
getLiveIndexFromKey($key) |
2792 |
cleanUpKey($key) |
2798 |
isAdaptiveTransmition($key) |
2812 |
isPlayListTransmition($key) |
2825 |
isSubTransmition($key) |
2836 |
getImage($users_id, $live_servers_id, $playlists_id_live = 0, $live_index = '') |
2847 |
getLatestKeyFromUser($users_id) |
2859 |
getLatest($active = false, $users_id = 0, $categories_id = 0) |
2871 |
isLive($users_id, $live_servers_id = 0, $live_index = '', $force_recreate = false) |
2880 |
isKeyLiveInStatsV2($key, $live_servers_id = 0, $live_index = '', $force_recreate = false, $doNotCheckDatabase = true) |
2908 |
isKeyLiveInStats($key, $live_servers_id = 0, $live_index = '', $force_recreate = false, $doNotCheckDatabase = true) |
2976 |
isLiveAndIsReadyFromKey($key, $live_servers_id = 0, $live_index = '', $force_recreate = false) |
3087 |
getOnlineLivesFromUser($users_id) |
3155 |
getOnlineLivesFromKey($key) |
3161 |
keyIsFromPlaylist($key) |
3175 |
getLiveKey($users_id) |
3186 |
getLiveKeyFromUser($users_id, $live_index = ''<string>'') |
3193 |
getLiveKeyFromRequest($key, $live_index = ''<string>'') |
3199 |
getImageGif($users_id, $live_servers_id = 0, $playlists_id_live = 0, $live_index = '') |
3218 |
getPosterImage($users_id, $live_servers_id, $ppv_schedule_id, $live_schedule_id, $posterType) |
3239 |
getRegularPosterImage($users_id, $live_servers_id, $live_schedule_id, $ppv_schedule_id) |
3293 |
getPrerollPosterImage($users_id, $live_servers_id, $live_schedule_id, $ppv_schedule_id) |
3298 |
getPrerollPosterImageTimes($users_id, $live_servers_id, $live_schedule_id, $ppv_schedule_id) |
3305 |
getPostrollPosterImage($users_id, $live_servers_id, $live_schedule_id, $ppv_schedule_id) |
3322 |
getPostrollPosterImageTimes($users_id, $live_servers_id, $live_schedule_id, $ppv_schedule_id) |
3327 |
posterExists($users_id, $live_servers_id, $live_schedule_id, $ppv_schedule_id, $posterType) |
3343 |
prerollPosterExists($users_id, $live_servers_id, $live_schedule_id, $ppv_schedule_id) |
3372 |
postrollPosterExists($users_id, $live_servers_id, $live_schedule_id, $ppv_schedule_id) |
3377 |
getPosterImageOrFalse($users_id, $live_servers_id) |
3382 |
getLivePosterImage($users_id, $live_servers_id = 0, $playlists_id_live = 0, $live_index = ''<string>'jpg', $live_schedule_id = 0) |
3392 |
getLivePosterImageRelativePath($users_id, $live_servers_id, $ppv_schedule_id, $playlists_id_live = 0, $live_index = ''<string>'jpg', $live_schedule_id = 0, $returnURL = false) |
3399 |
isLiveThumbsDisabled() |
3433 |
getPosterThumbsImage($users_id, $live_servers_id, $cominsoon = false) |
3442 |
getPoster($users_id, $live_servers_id, $key) |
3465 |
getOfflineImage($includeURL = true) |
3506 |
getOnAirImage($includeURL = true) |
3516 |
getComingSoonImage($includeURL = true) |
3526 |
fixOldPosterImage($newDir, $newFile, $oldFile) |
3536 |
_getPosterImage($users_id, $live_servers_id, $ppv_schedule_id, $live_schedule_id = 0, $posterType = 0) |
3562 |
_getPosterThumbsImage($users_id, $live_servers_id, $posterType = 0) |
3585 |
getRestreamReconnectStateFile($key, $live_servers_id) |
3601 |
getRestreamReconnectState($key, $live_servers_id) |
3607 |
saveRestreamReconnectState($key, $live_servers_id, $state) |
3623 |
registerRestreamReconnectEvent($key, $live_servers_id, $liveTransmitionHistory_id, $isReconnection) |
3629 |
markAutoRestreamOnReconnection($key, $live_servers_id) |
3665 |
canAutoRestreamOnReconnection($key, $live_servers_id, $cooldownSeconds = 30) |
3672 |
_on_publish($liveTransmitionHistory_id, $isReconnection) |
3685 |
deleteStatsCache($clearFirstPage = false) |
3718 |
getReverseRestreamObject($m3u8, $users_id, $live_servers_id = -1, $forceIndex = false) |
3743 |
getRestreamObject($liveTransmitionHistory_id, $live_restreams_id = 0) |
3757 |
_getRestreamObject($liveTransmitionHistory_id, $restreamRowItems) |
3807 |
gettRestreamRowItem($restreamsDestination, $id, $live_url) |
3846 |
reverseRestream($m3u8, $users_id, $live_servers_id = -1, $forceIndex = false) |
3853 |
restream($liveTransmitionHistory_id, $live_restreams_id = 0, $test = false, $options = []) |
3882 |
restreamInBackground($liveTransmitionHistory_id) |
3955 |
restreamToDestination($liveTransmitionHistory_id, $restreamsDestination) |
3970 |
getRestreamLogSummary($obj) |
3985 |
sendRestream($obj, $doNotNotifyStreamer = false) |
4011 |
canScheduleLive() |
4102 |
canStreamWithMeet() |
4116 |
getUploadMenuButton() |
4140 |
getAllVideos($status = "", $showOnlyLoggedUserVideos = false, $activeUsersOnly = true) |
4154 |
finishLive($key) |
4271 |
updateVideosUserGroup($videos_id, $key) |
4276 |
notifySocketStats($callBack = '<string>', $array = []) |
4288 |
getImageType($content) |
4308 |
isLiveImage($content) |
4339 |
isDefaultImage($content) |
4344 |
isSendViewersEnabled() |
4350 |
iskeyOnline($key) |
4359 |
getValidNotOnlineLiveIndex($key, $live_index) |
4373 |
getLatestValidNotOnlineLiveIndex($key) |
4393 |
getLivesOnlineFromKey($key) |
4400 |
getFirstLiveOnlineFromKey($key) |
4421 |
getUserHash($users_id) |
4430 |
decryptHash($hash) |
4435 |
getServerURL($key, $users_id, $short = true) |
4442 |
passwordIsGood($key) |
4469 |
checkIfPasswordIsGood($key) |
4497 |
getMediaSession($key, $live_servers_id, $live_schedule_id, $ppv_schedule_id) |
4508 |
getMediaSessionPosters($users_id, $live_servers_id, $live_schedule_id, $ppv_schedule_id) |
4529 |
getInfo($key, $live_servers_id = null, $live_index = ''<string>'', $doNotCheckDatabase = true) |
4542 |
setLiveScheduleReminder($live_schedule_id, $minutesEarlier = 0, $deleteIfExists = false) |
4651 |
getLiveScheduleReminders($live_schedule_id) |
4732 |
getLiveScheduleReminderBaseNameType($live_schedule_id, $minutesEarlier = '') |
4738 |
getScheduleReminderOptions($live_schedule_id) |
4748 |
getWatchActionButton($videos_id) |
4782 |
getProcess($key) |
4788 |
killIfIsRunning($key) |
4806 |
getPermissionsOptions() |
4824 |
getRestreamsIdFromToken($token) |
4833 |
canRestream() |
4845 |
_getUserNotificationButton() |
4875 |
getUserNotificationButton() |
4887 |
executeEveryMinute() |
4892 |
executeEveryHour() |
4922 |
getLiveControls($live_key, $live_servers_id = 0) |
4931 |
on_publish_done($live_transmitions_history_id, $users_id, $key, $live_servers_id) |
4937 |
showAudioVideoToggleButton() |
4963 |
__construct($key, $live_servers_id = 0, $live_index = 0, $playlists_id_live = 0, $live_schedule = 0) |
4990 |
getKey() |
5027 |
getKeyWithIndex($forceIndexIfEnabled = false, $allowOnlineIndex = false) |
5032 |
getIndex($allowOnlineIndex = false) |
5044 |
getLive_servers_id() |
5061 |
getLive_index() |
5066 |
getPlaylists_id_live() |
5071 |
getURL() |
5076 |
getURLEmbed() |
5106 |
getM3U8($doNotProtect = false, $allowOnlineIndex = false, $ignoreCDN = false) |
5112 |
getOnlineM3U8($users_id, $doNotProtect = false) |
5164 |
getRTMPLink($forceIndex = false) |
5183 |
getRTMPLinkWithOutKey($short = true) |
5196 |
These symbols are grouped by source file; inspect the class declaration and visibility before calling them.
Declared classes: LiveRestreamWatchdog.
| Named symbol | Source |
|---|---|
run($objLive = null) |
60 |
checkRestream($live, $restream, $objLive) |
120 |
isProcessConsideredRunning($localProcess, $status) |
179 |
handleHealthy($live_restreams_id, $liveTransmitionHistory_id, $state, $localProcess, $objLive, $label) |
184 |
computeHealthySinceOnObservation($previousHealthySince, $previousKnownPid, $currentPid, $currentPidStartedAt, $now) |
252 |
handleNotRunning($live, $restream, $status, $state, $objLive, $label) |
272 |
mergeFailureObservationIntoState(array $freshState, $now, $failureReason) |
336 |
attemptRestart($live, $restream, $objLive, $label, $failureReason = '') |
345 |
fetchLogStatus($liveTransmitionHistory_id, $live_restreams_id, $live_restreams_logs_id, $action) |
500 |
getLocalProcess($live_restreams_id, $liveTransmitionHistory_id) |
533 |
getProcessStartUnixTime($pid) |
563 |
parseProcStatStartTicks($statContent) |
589 |
computeProcessStartUnixTimeFromTicks($nowUnix, $uptimeSeconds, $startTicks, $ticksPerSecond = 100) |
614 |
evaluateRecheckedProcessState($recheckProcess, $recheckStatus) |
630 |
computeRestreamPhase(array $state, $processRunning, $maxAttemptsReached) |
650 |
classifyFailure($contentStatus) |
664 |
getStateFile($live_restreams_id, $liveTransmitionHistory_id) |
681 |
getState($live_restreams_id, $liveTransmitionHistory_id) |
687 |
emptyState() |
701 |
saveState($live_restreams_id, $liveTransmitionHistory_id, $state) |
716 |
clearState($live_restreams_id, $liveTransmitionHistory_id, $reasonForLog = '') |
722 |
pruneAttempts($attempts, $windowSeconds, $now) |
733 |
acquireLock($live_restreams_id, $liveTransmitionHistory_id) |
754 |
releaseLock($handle) |
770 |
logDiagnosticSnapshot($live, $restream, $contentStatus, $state, $label, $objLive = null) |
782 |
getSourceHost($live) |
823 |
getMemoryInfo() |
841 |
getFfmpegProcessCount() |
860 |
getLastLogLines($contentStatus, $numberOfLines) |
870 |
getConfigInt($objLive, $field, $default) |
883 |
getConfigString($objLive, $field, $default) |
891 |
getBackoffSequence($objLive) |
905 |
maskSecret($value) |
918 |
Declared classes: LiveTransmition.
| Named symbol | Source |
|---|---|
getSearchFieldsNames() |
22 |
getTableName() |
26 |
getId() |
30 |
getTitle() |
34 |
getPublic() |
38 |
getSaveTransmition() |
42 |
getUsers_id() |
46 |
getCategories_id() |
50 |
getKey() |
58 |
getDescription() |
62 |
setId($id) |
66 |
setTitle($title) |
70 |
setPublic($public) |
76 |
setSaveTransmitionAutomatic() |
80 |
setPublicAutomatic() |
89 |
setSaveTransmition($saveTransmition) |
98 |
setUsers_id($users_id) |
102 |
setCategories_id($categories_id) |
106 |
setKey($key) |
110 |
setDescription($description) |
114 |
loadByUser($user_id) |
120 |
loadByKey($uuid) |
132 |
getFromDbByUser($user_id, $refreshCache = false, $allowOnlineIndex = false) |
144 |
createTransmitionIfNeed($user_id) |
176 |
resetTransmitionKey($user_id) |
202 |
getFromRequest() |
215 |
getFromDbByUserName($userName) |
233 |
getFromDbByChannelName($channelName, $allowOnlineIndex = false) |
253 |
getFromDbBySchedule($live_schedule_id) |
271 |
keyExists($key, $checkSchedule = true) |
290 |
save() |
352 |
deleteGroupsTrasmition() |
393 |
insertGroup($users_groups_id) |
402 |
isAPrivateLive() |
408 |
getGroups() |
412 |
userCanSeeTransmition() |
430 |
getFromKey($key, $checkSchedule = true) |
468 |
keyNameFix($key) |
472 |
getShowOnTV() |
485 |
setShowOnTV($showOnTV) |
489 |
getPassword() |
493 |
setPassword($password): void |
497 |
getIsRebroadcast() |
501 |
setIsRebroadcast($isRebroadcast): void |
505 |
canSaveTransmition($users_id) |
509 |
getUsers_idOrCompanyFromKey($key) |
514 |
Declared classes: LiveTransmitionHistory.
| Named symbol | Source |
|---|---|
getSearchFieldsNames() |
27 |
getTableName() |
32 |
getUsers_id_company(): int |
37 |
setUsers_id_company($users_id_company): void |
42 |
getId() |
47 |
getTitle() |
52 |
getDescription() |
57 |
getKey() |
64 |
getCreated() |
69 |
getModified() |
74 |
getUsers_id() |
83 |
setId($id) |
88 |
getFinished() |
93 |
getDomain() |
98 |
getJson() |
103 |
setDomain($domain) |
108 |
setJson($json) |
113 |
setTitle($title) |
118 |
setDescription($description) |
126 |
setKey($key) |
132 |
setCreated($created) |
137 |
setModified($modified) |
142 |
setUsers_id($users_id) |
147 |
getLive_servers_id() |
152 |
getModifiedTime() |
157 |
getLive_index() |
162 |
getLive_cleanKey() |
171 |
getMax_viewers_sametime() |
180 |
getTotal_viewers() |
185 |
setMax_viewers_sametime($max_viewers_sametime): void |
190 |
setTotal_viewers($total_viewers): void |
195 |
getApplicationObject($liveTransmitionHistory_id) |
204 |
isPrivate($liveTransmitionHistory_id) |
265 |
isRebroadcast($liveTransmitionHistory_id) |
285 |
isPasswordProtected($liveTransmitionHistory_id) |
298 |
getStatsAndAddApplication($liveTransmitionHistory_id) |
308 |
getCleankeyName($key) |
358 |
getStatsAndRemoveApplication($liveTransmitionHistory_id) |
370 |
setLive_servers_id($live_servers_id) |
402 |
recordAudienceSample($historyId, $secondsInactive = 60) |
408 |
getAllFromUser($users_id = 0, $onlyWithViewers = false, $onlyActive = false, $limit = 0, $reportOrder = '') |
427 |
getAllActiveFromUser($users_id = 0) |
486 |
isLive($key, $live_servers_id = 0) |
491 |
getLatest($key = '', $live_servers_id = null, $active = false, $users_id = 0, $categories_id = 0) |
512 |
finish($key) |
576 |
finishFromTransmitionHistoryId($live_transmitions_history_id) |
586 |
updateModifiedTime($live_transmitions_history_id) |
610 |
unfinishFromTransmitionHistoryId($live_transmitions_history_id) |
627 |
finishALL($olderThan = '') |
646 |
deleteALL() |
663 |
finishALLOffline() |
676 |
getLatestFromUser($users_id) |
705 |
getLatestFromKey($key, $strict = false) |
711 |
getLatestIndexFromKey($key) |
749 |
getLastsLiveHistoriesFromUser($users_id, $count = 10, $finishedOnly = false) |
755 |
getActiveLives($live_servers_id = '', $checkLive = true, $users_id = 0, $categories_id = 0) |
783 |
getActiveLiveFromUser($users_id, $live_servers_id = ''<string>'', $count = 1) |
855 |
save() |
929 |
deleteAllFromLiveServer($live_servers_id) |
993 |
delete() |
1015 |
getLinkToLive($live_transmitions_history_id) |
1023 |
getUsers_idOrCompany($live_transmitions_history_id) |
1036 |
Declared classes: LiveTransmitionHistoryLog.
| Named symbol | Source |
|---|---|
getSearchFieldsNames() |
16 |
getTableName() |
21 |
getLive_transmitions_history_id() |
26 |
getUsers_id() |
31 |
getSession_id() |
36 |
getUser_agent() |
41 |
setUser_agent($user_agent) |
46 |
getIp() |
51 |
setIp($ip) |
56 |
setLive_transmitions_history_id($live_transmitions_history_id) |
61 |
setUsers_id($users_id) |
66 |
setSession_id($session_id) |
71 |
addLog($live_transmitions_history_id) |
76 |
getFromHistoryAndSession($live_transmitions_history_id, $session_id) |
88 |
getTotalFromHistoryAndIP($live_transmitions_history_id, $ip) |
104 |
getAllFromHistory($live_transmitions_history_id) |
123 |
save() |
140 |
deleteAllFromHistory($live_transmitions_history_id) |
159 |
Declared classes: Live_restreams.
| Named symbol | Source |
|---|---|
getSearchFieldsNames() |
15 |
getTableName() |
19 |
setId($id) |
23 |
setName($name) |
27 |
setStream_url($stream_url) |
32 |
setStream_key($stream_key) |
36 |
setStatus($status) |
40 |
setParameters($parameters) |
44 |
setUsers_id($users_id) |
48 |
getId() |
52 |
getName() |
56 |
getStream_url() |
60 |
getStream_key() |
64 |
getStatus() |
68 |
getParameters() |
72 |
getUsers_id() |
76 |
getAllFromUser($users_id, $status = '<string>') |
80 |
getAllFromLiveTransmitionHistory($live_transmitions_history_id, $status = '<string>') |
125 |
getProviderName($parameters) |
151 |
checkIfTokenIsExpired($parameters) |
167 |
save() |
199 |
Declared classes: Live_restreams_logs.
| Named symbol | Source |
|---|---|
getSearchFieldsNames() |
10 |
getTableName() |
15 |
setId($id) |
20 |
setRestreamer($restreamer) |
25 |
setM3u8($m3u8) |
34 |
setLogFile($logFile) |
42 |
setJson($json) |
48 |
setLive_transmitions_history_id($live_transmitions_history_id) |
53 |
setLive_restreams_id($live_restreams_id) |
58 |
getId() |
64 |
getRestreamer() |
72 |
getM3u8() |
77 |
getLogFile() |
82 |
getJson() |
87 |
getLive_transmitions_history_id() |
92 |
getLive_restreams_id() |
97 |
getLatest($live_transmitions_history_id, $live_restreams_id) |
103 |
getHistoryByRestream($live_restreams_id, $users_id = 0) |
129 |
getURL($live_transmitions_history_id, $live_restreams_id, $live_restreams_logs_id, $action = '<string>') |
160 |
getURLFromTransmitionAndRestream($live_transmitions_history_id, $live_restreams_id, $action = '<string>') |
219 |
getToken($action, $live_transmitions_history_id, $live_restreams_id, $live_restreams_logs_id, $users_id = 0) |
231 |
verifyToken($token, $secondsValid = 3600) |
245 |
Declared classes: Live_schedule.
| Named symbol | Source |
|---|---|
getSearchFieldsNames() |
24 |
getTableName() |
29 |
getUsers_id_company(): int |
34 |
setUsers_id_company($users_id_company): void |
38 |
getJson() |
42 |
setJson($json) |
46 |
getUserGroups() |
54 |
setUserGroups($usergroups) |
73 |
getAllUsers() |
90 |
getAllLive_servers() |
109 |
getPosterPaths($live_schedule_id, $ppv_schedule_id, $posterType=0) |
128 |
getPosterURL($live_schedule_id, $ppv_schedule_id, $posterType=0) |
162 |
isLive($live_schedule_id) |
171 |
getAll($users_id=0, $activeHoursAgo=false) |
181 |
getAllActiveLimit($users_id=0,$limit = 100) |
227 |
setId($id) |
263 |
setTitle($title) |
268 |
setDescription($description) |
274 |
setKey($key) |
279 |
setUsers_id($users_id) |
284 |
setLive_servers_id($live_servers_id) |
288 |
setScheduled_time($scheduled_time) |
293 |
setScheduledPHPtime($scheduled_time) |
298 |
_setTimezone($timezone) |
305 |
setStatus($status) |
310 |
setPoster($poster) |
315 |
setPublic($public) |
320 |
setSaveTransmition($saveTransmition) |
325 |
setShowOnTV($showOnTV) |
330 |
getId() |
335 |
getTitle() |
340 |
getDinamicTitle() |
345 |
getDescription() |
351 |
getKey() |
356 |
getUsers_id() |
361 |
getLive_servers_id() |
366 |
getScheduled_time() |
374 |
getTimezone() |
379 |
getStatus() |
384 |
getPoster() |
389 |
getPublic() |
394 |
getSaveTransmition() |
399 |
getShowOnTV() |
404 |
save() |
409 |
delete() |
460 |
clearScheduleCache() |
473 |
keyExists($key) |
482 |
getScheduled_password() |
512 |
getPassword() |
516 |
setScheduled_password( #[\SensitiveParameter] $scheduled_password ): void |
520 |
getUsers_idOrCompany($live_schedule_id) |
527 |
userCanSeeTransmition() |
536 |
isAPrivateLive() |
579 |
getIsRebroadcast() |
585 |
Declared classes: Live_servers.
| Named symbol | Source |
|---|---|
getSearchFieldsNames() |
22 |
getTableName() |
27 |
setId($id) |
32 |
setName($name) |
37 |
setUrl($url) |
43 |
setStatus($status) |
48 |
setRtmp_server($rtmp_server) |
53 |
setPlayerServer($playerServer) |
58 |
setStats_url($stats_url) |
63 |
setDisableDVR($disableDVR) |
68 |
setDisableGifThumbs($disableGifThumbs) |
73 |
setUseAadaptiveMode($useAadaptiveMode) |
78 |
setProtectLive($protectLive) |
83 |
setGetRemoteFile($getRemoteFile) |
88 |
getId() |
93 |
getName() |
98 |
getUrl() |
103 |
getStatus() |
108 |
getRtmp_server() |
113 |
getPlayerServer() |
120 |
getStats_url() |
125 |
getDisableDVR() |
130 |
getDisableGifThumbs() |
135 |
getUseAadaptiveMode() |
140 |
getProtectLive() |
145 |
getGetRemoteFile() |
153 |
getRestreamerURL() |
158 |
setRestreamerURL($restreamerURL) |
163 |
getControlURL() |
168 |
setControlURL($controlURL) |
173 |
getStatsFromId($live_servers_id, $force_recreate = false) |
178 |
getAllActive() |
200 |
getServerFromRTMPHost($rtmpHostURI) |
225 |
getServerIdFromRTMPHost($rtmpHostURI) |
244 |
save() |
255 |
delete() |
266 |
Declared classes: StreamAuthCache.
| Named symbol | Source |
|---|---|
initCacheDir() |
17 |
getCacheKey($ip, $streamKey) |
32 |
getCacheFile($ip, $streamKey) |
42 |
create($streamKey, $users_id) |
56 |
get($streamKey, $ip = null) |
86 |
delete($streamKey, $ip = null) |
130 |
cleanup() |
151 |
getTTL() |
181 |
processPreauthorization($username, $password) |
194 |
| Named symbol | Source |
|---|---|
_getRemoteAddrFromServerArray($server) |
11 |
_isPrivateOrLoopbackIP($ip) |
25 |
_getForwardedClientIpFromServerArray($server) |
34 |
_getRealIpAddr() |
69 |
getClientIdentifier() |
86 |
isAVideoUA() |
99 |
getTmpFilePath($liveKey) |
107 |
getCpuUsage() |
115 |
getDynamicTolerance($baseTolerance = 600) |
152 |
cleanOldCacheFiles($currentTmpFile) |
171 |
| Named symbol | Source |
|---|---|
createEvent($id, $weekday, $startMinute, $endMinute, $customTitle = '<string>', $backgroundColor = '<string>', $borderColor = '<string>', $textColor = '<string>', $extendedProps = [], $weekOffset = null) |
22 |
createEventFromTimestamps($id, $startTimestamp, $endTimestamp, $customTitle = '<string>', $backgroundColor = '<string>', $borderColor = '<string>', $textColor = '<string>', $extendedProps = []) |
63 |
| Named symbol | Source |
|---|---|
humanFileSize($size, $unit = "") |
52 |
| Named symbol | Source |
|---|---|
logToFile($msg) |
7 |
| Named symbol | Source |
|---|---|
matchWithRequest($row) |
45 |
| Named symbol | Source |
|---|---|
ffmpeg_capabilitiesSafeExec($binary, array $args, $timeoutSeconds = FFMPEG_CAPABILITY_EXEC_TIMEOUT_SECONDS) |
35 |
ffmpeg_parseVersion($versionOutput) |
129 |
ffmpeg_hasToken($haystack, $token) |
157 |
ffmpeg_hasMuxer($muxersOutput, $name) |
165 |
ffmpeg_hasDemuxer($demuxersOutput, $name) |
170 |
ffmpeg_hasProtocol($protocolsOutput, $name) |
175 |
ffmpeg_hasEncoder($encodersOutput, $name) |
180 |
ffmpeg_hasFilter($filtersOutput, $name) |
185 |
ffmpeg_detectTlsBackend($buildconfOutput) |
194 |
ffmpeg_hasReadableCaBundle() |
219 |
ffmpeg_cfrSyncOption($helpFullOutput, $versionInfo = null) |
243 |
ffmpegDetectCfrSyncOption($ffmpegBinary, $timeoutSeconds = FFMPEG_CAPABILITY_EXEC_TIMEOUT_SECONDS) |
264 |
ffmpeg_parseFifoMuxerOptions($helpOutput) |
281 |
ffmpegDetectCapabilities($ffmpegBinary, $timeoutSeconds = FFMPEG_CAPABILITY_EXEC_TIMEOUT_SECONDS) |
307 |
ffmpegFifoMuxerFullySupported($capabilities) |
378 |
ffmpegCapabilitiesSummaryText($capabilities) |
409 |
| Named symbol | Source |
|---|---|
ffmpegCapToolPrintUsageAndExit() |
37 |
ffmpegCapToolParseArgs(array $argv) |
43 |
ffmpegCapToolCheckTcpConnectivity($host, $port, $timeoutSeconds = 5) |
67 |
| Named symbol | Source |
|---|---|
getRestreamsRuning() |
2 |
isRestreamFfmpegCommandLine($commandLine, $live_restreams_id, $liveTransmitionHistory_id) |
73 |
findRestreamProcessIds(array $processLines, $live_restreams_id, $liveTransmitionHistory_id) |
100 |
isRestreamRuning($live_restreams_id, $liveTransmitionHistory_id) |
114 |
| Named symbol | Source |
|---|---|
tailFile($file, $lines = 50) |
17 |
restreamProcessWritesToLog($pid, $logFile) |
50 |
formatLastModifiedTime($timestamp) |
70 |
_humanFileSize($size, $unit = "") |
74 |
| Named symbol | Source |
|---|---|
rl_hostname() |
23 |
rl_containerId() |
34 |
rl_newCorrelationId() |
58 |
rl_logEvent($event, array $fields = array()) |
76 |
rl_tailFile($path, $maxBytes = 65536) |
97 |
rl_truncateLogFileIfTooLarge($path, $maxBytes = 2097152) |
122 |
rl_shouldEmitSnapshot($key, $minIntervalSeconds = 300) |
141 |
rl_safeExec($command) |
162 |
rl_getDiagnosticSnapshot(array $context = array()) |
184 |
rl_getCgroupInfo() |
273 |
| Named symbol | Source |
|---|---|
redactDestinationForLog($url) |
18 |
clearCommandURL($url) |
35 |
buildAutomaticRestreamDestination($streamUrl, $streamKey, $expectedScheme = '') |
64 |
getAutomaticRestreamDestinationPair($response) |
93 |
shouldAttemptAutomaticRestreamFallback($primaryDestination, $fallbackDestination, $initialConnectionFailed) |
132 |
automaticRestreamLaunchSamplesIndicateFailure(array $firstSample, array $secondSample) |
157 |
restreamHostMatches($host, array $domains) |
176 |
getRestreamProvider($url) |
188 |
isYouTubeRestreamDestination($url) |
207 |
isRestreamHlsSource($sourceUrl) |
215 |
getRestreamInputReconnectOptions($sourceUrl, $reconnectOnNetworkError = true) |
229 |
getRestreamOutputTail($destinationUrl, $tlsVerify = '') |
241 |
getRestreamTlsOptions($destinationUrl, $tcurl) |
246 |
getAudioConfiguration($source) |
259 |
getRestreamVideoProfile($destinationUrl, $resolution = 720) |
281 |
getRestreamVideoConfiguration($destinationUrl, $resolution = 720) |
334 |
applyRestreamProtocolTestOverride(array $destinations, $forceProtocol) |
356 |
getDestinationHostPort($url) |
382 |
redactSecretsInText($text) |
403 |
parseFfmpegProgressLine($text) |
470 |
classifyFfmpegFailure($stderrTail, array $context = array()) |
526 |
computeRestreamBackoffDelaySeconds($attemptNumber, array $sequence, $jitterPercent = 0, $randomFn = null) |
570 |
getRestreamFifoConfigBounds() |
629 |
getRestreamFifoDefaultAllowedProviders() |
654 |
sanitizeRestreamFifoConfig($raw) |
665 |
ffmpegEscapeFormatOptValue($value) |
728 |
getRestreamFifoFormatOpts($destinationUrl, $tcurl) |
740 |
getRestreamFifoOutputTail($destinationUrl, $tcurl, array $fifoConfig, $streamMap = '') |
773 |
getRestreamFifoStreamMapFromProbe($probe) |
819 |
probeRestreamFifoStreamMap($ffmpegBinary, $sourceUrl, $userAgent = '', $timeoutSeconds = 20) |
863 |
shouldUseRestreamFifoForDestination($destinationUrl, array $fifoConfig, $capabilities) |
908 |
isValidRecoveryRestreamRequest($live_restreams_id, $recoveryMode) |
956 |
| Named symbol | Source |
|---|---|
getFfmpegCapabilitiesCached($ffmpegBinary) |
29 |
_addLastSlash($word) |
280 |
_hasLastSlash($word) |
285 |
sanitizeLogFileComponent($value, $default = '<string>') |
290 |
_getLiveKey($token) |
305 |
runRestream($robj) |
571 |
notifyStreamer($robj) |
630 |
verifyTokenForAction($token) |
662 |
postToURL($url, $data_string, $timeLimit = 10) |
673 |
_isURL200($url, $forceRecheck = false) |
732 |
_make_path($path) |
779 |
startRestream($m3u8, $restreamsDestinations, $logFile, $robj, $tries = 1, $startTime = null, $fallbackDestination = '') |
806 |
getRestreamFifoOutputTailOrEmpty($destinationUrl, $tcurl, array $fifoConfig, $capabilities, $isPassthrough, $sourceUrl, $userAgent) |
1217 |
automaticRestreamInitialConnectionFailed($launch, $robj, $allowBlockingProbe = true) |
1242 |
getAutomaticRestreamLaunchSample($launch, $robj) |
1262 |
isRestreamProcessIdRunning($pid) |
1302 |
stopAutomaticRestreamLaunch($launch, $robj) |
1324 |
getRestreamRequestSummary($robj) |
1347 |
buildRtmpTcurl(string $url): string |
1369 |
isOpenSSLEnabled() |
1390 |
whichffmpeg() |
1407 |
getRestreamProcessIdsByMarkers($robj) |
1421 |
getProcess($robj) |
1433 |
killIfIsRunning($robj) |
1498 |
replaceSlashesForPregMatch($str) |
1546 |
_object_to_array($obj) |
1551 |
_addQueryStringParameter($url, $varname, $value) |
1568 |
| Named symbol | Source |
|---|---|
copyDirectory($src, $dst) |
187 |
setLastSegments($DVRFile, $total) |
231 |
| Named symbol | Source |
|---|---|
liveStatsTestUrlGetContents($url, $timeout = 0) |
43 |
liveIsAllowedStatsTestURL($url) |
135 |
liveNormalizeStatsTestURL($url) |
170 |
liveStatsTestWget($url, $filename) |
178 |
liveStatsTestLog($msg) |
203 |
| Named symbol | Source |
|---|---|
listLogFiles($directory) |
11 |
parseFfmpegLog($filePath) |
30 |
getLogFileInfo($directory, $fileName) |
114 |
| Named symbol | Source |
|---|---|
debugLog($line) |
74 |
- 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.
Related test filenames (name matches only; not executed by generation):
- tests/Integration/liveAudience.js
- tests/Unit/LatestOrLiveMediaTest.php
- tests/Unit/LiveFfmpegCapabilitiesTest.php
- tests/Unit/LiveOnPublishRestreamInBackgroundTest.php
- tests/Unit/LiveRecordedFileTransferTest.php
- tests/Unit/LiveRecordingControlTest.php
- tests/Unit/LiveRestreamFifoOutputTest.php
- tests/Unit/LiveRestreamLoggingTest.php
- tests/Unit/LiveRestreamProcessMatchTest.php
- tests/Unit/LiveRestreamProfilesTest.php
- tests/Unit/LiveRestreamWatchdogTest.php
- tests/live-restream-kill-stale-log-regression.php
- tests/live-restream-start-concurrency-regression.php
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