Skip to content

Technical Plugin WebRTC

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

Technical: WebRTC plugin

Connects browser capture to WebRTC2RTMP and the live pipeline.

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

Source baseline

  • Review date: 2026-10-29. Method: static source analysis; runtime/provider behavior was not exercised.
  • Code ownership: AVideo Streamer repository.
  • Reported version: 1.1.
  • Source revision: 7d48f2dfc0289236718a3f9fba7c5ffecff4a37f.
  • Entry class file: WebRTC.php.

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

Behavior and operational checks

A separate binary handles WebRTC-to-RTMP. It reads certificates at startup, so a renewed file and the served certificate can differ. Its FFmpeg child processes indicate active capture. Check the listener and served certificate rather than treating thread entries as separate servers.

Dependencies

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

Literal runtime plugin references: Live, YPTSocket. These calls do not mean every referenced plugin is mandatory.

Hook integration

Override Implementation
getTags() WebRTC.php:9
executeEveryMinute() WebRTC.php:54
getPluginMenu() WebRTC.php:200
getHTMLMenuRight() WebRTC.php:207

Configuration assignments

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

Field Literal default or expression type Literal source label/help Evidence
port 3000 — source
autoStartServerIfIsInactive true — source
quickGoLiveEnabled true Enable Quick Go Live: Show a one-click "Go Live" button in the top menu bar source
quickGoLiveButtonTitle 'Go Live' Quick Go Live Button Title source

Files and request surface

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

File Source role Direct request fields observed
WebRTC.php plugin entry class —
api.js browser/worker JavaScript; verify loader —
call/callUser.php PHP page/include/worker; inspect caller users_id
call/caller.js browser/worker JavaScript; verify loader —
call/events.js browser/worker JavaScript; verify loader —
call/index.php PHP page/include/worker; inspect caller avideoIframe, roomId
events.js browser/worker JavaScript; verify loader —
functions.php PHP page/include/worker; inspect caller —
index.php PHP page/include/worker; inspect caller avideoIframe
panel.buttons.php PHP page/include/worker; inspect caller —
panel.medias.php PHP page/include/worker; inspect caller —
panel.php PHP page/include/worker; inspect caller —
quickGoLive.json.php JSON entry point; inspect caller and guard —
status.json.php JSON entry point; inspect caller and guard —
status.php PHP page/include/worker; inspect caller —
tools/forceAll.php PHP page/include/worker; inspect caller —
tools/start.php PHP page/include/worker; inspect caller —
tools/stop.php PHP page/include/worker; inspect caller —
tools/update.php PHP page/include/worker; inspect caller —
video.php PHP page/include/worker; inspect caller —
view/menuRight.php PHP page/include/worker; inspect caller —
view/quickGoLive.js browser/worker JavaScript; verify loader —

Data and migrations

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

Main-file named symbols

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

Function or method Source
getTags() 9
getDescription() 15
getName() 23
getUUID() 28
getPluginVersion() 33
getEmptyDataObject() 38
executeEveryMinute() 54
restartIfCertificateIsOutdated() 70
getCertificateFileValidTo($domain) 109
getServedCertificateValidTo($port, $domain) 125
hasChildProcesses($pid) 151
getServerPids() 166
startIfIsInactive() 183
checkIfIsActive() 191
getPluginMenu() 200
getHTMLMenuRight() 207
getJson() 212
getLog() 228
getWebRTC2RTMPAssetVersionFile() 238
getWebRTC2RTMPAssetFile() 244
getWebRTC2RTMPJsonFile() 250
getWebRTC2RTMPFile() 256
getWebRTC2RTMPLogFile() 262
getWebRTC2RTMPLockFile() 268
updateFileIfNeed() 274
checkAndUpdate() 283
startServer() 341
launchServer($port, $file, $log) 392
stopServer() 417

Supporting PHP declarations

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

functions.php

Named symbol Source
encrypt_data($plaintext, $salt) 9
decrypt_data($ciphertextB64, $salt) 38
getWebRTCInfo() 59
getWebRTC2RTMPURL() 76

Diagnostics and validation

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

Related test filenames (name matches only; not executed by generation):

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

Clone this wiki locally