Sample PexTV Web App (PexRTC Example)

PexTV (PexME) is a pexRTC JavaScript web app for desktop browsers that allows a user to start their Pexip or Teams CVI meeting via a simple meeting QR code (generated from a web link) allowing the user to access their meeting without the use of remote control or touch screens.

The mobile web link additionally provides a virtual remote control via the companion web application allowing the user to mute audio\video and end the active call.

The PexME administrator can also apply apply customised branding via an exportable configuration QR code. PexME also supports Pexip Meeting chat receive and has been wrapped as an Android APK for use on current generation Sony Bravia Displays (i.e. BZ30-J X1 SOC running AndroidTV version 10).

[Sample PexMe branding]

The web application uses 3rd party libraries; TOASTIFY for pop-up notifications, ZXING for QR scanning and PubNub IOT cloud service for virtual remote control. VP9 video codec is not support with Sony Bravia. Content receive is via Pexip presentation-in-mix (Infinity V30 feature) which provides people + content in the same video stream. Features such as PIN, chat send and separate content stream have not been implemented.

Settings are configurable and exportable via a desktop web browser which can be used with a 3rd party QR generator such as QR Monkey. The following parameters can be exported to the configuration QR code; custom logo, and custom background images, customised home descriptions and name, maximum call rate and the Pexip Infinity server platform.

[Sample configuration QR code]

Ensuring the images paths and custom descriptions are short will ensure a compact and readable configuration QR code.

The mobile companion application generates the meeting QR code based on a specific URI format allowing the end-user to present a unique QR code to start their meeting and control the meeting once initiated via QR. The concept being that the meeting web link can be shared via email\calendar\SMS.

[Mobile Companion Web App - Meeting QR and virtual remote control]

PexME Live Web App: PexME (Please configure with your Pexip Infinity instance)
PexQR Live Companion Mobile Web Application: Pex Assist (where ?m=YourMeetingUri on your Infinity platform)
PexTV AndroidTV APK’s: Download (must be side loaded with a connected webcam with microphone and permissions accepted at first run)

Source Code

To customize the PexME application you must reference your instance of pexrtc.js in the index.html. This reference is Pexip Infinity version specific.

<script type="text/javascript" src="https://<YourPexipInstance>/static/webrtc/js/pexrtc.js"></script>

You also must also utilise your own PubNub cloud service instance for the Remote Control in both the PexME and PexQR web apps. A free demo PubNub account is utilised which is limited to a set number (40) of monthly users per month.

var virtualRemote = new PubNub({
  publishKey: 'pub-c-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
  subscribeKey: 'sub-c-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
  keepAlive: true, // Keep the connection alive
  presenceTimeout: 600, // Don't timeout for 10 minutes
  uuid: 'PexME_Receiver',


[Sony Bravia AndroidTV]

The AndroidTV APK was built using a wrapped web view of the PexME website using WebIntoApp with the following settings. VP9 and persistent device selection is not supported with AndroidTV. VP9 has been disabled within the application and can also be optionally disabled system wide within the Infinity global configuration. It is recommended that AndroidTV is Ethernet connected to facilitate an optimal network experience. Logitech C930E and Poly EE Cube USB camera are known to work. Other webcams may not work due to driver limitations with Android10 etc.

Please note that neither the Android APK nor web apps are supported.

[WebIntoApp configuration screens]

Troubleshooting & Known Issues:

  1. Ensure the configuration QR codes are valid and short to ensure a consistent read. Note: The configuration QR code should end with a JSON ‘}’ noting that some 3rd party QR generators are size limited and may truncate large datasets. Utilise short images links with a valid PNG or JPG extension rather than lengthy or temporary database links.
  2. Ensure the web camera has a microphone and is connected at first run. The application cannot be used without a microphone. Use the high-speed USB 3 (blue) port.
  3. Ensure you accept the Video and Audio permissions at first run.
  4. Use a FAT32 formatted USB to side load the APK’s (i.e. TV File Commander). Ensure the loader application has access to both storage permissions and the AndroidTV allows installation from unknown sources as the sample APK’s are not published in Google Playstore.
  5. The PexME web application has not been designed or built for mobile devices use.
  6. The companion application remote control may not function if the user has visited the same web link previously. Please refresh mobile browser or clear browser cache to use the remote.
  7. Green flashing on AndroidTV if VP9 video codec is being used (especially when encountering packet loss).
  8. Check video and audio codec selection and usage statistics via Pexip Infinity Liveview. Confirm VP9 video codec is not being used on AndroidTV devices.

This application has been built targeting Pexip Infinity version 30 (and future versions) which is required to support;

  • Presentation-in-mix content receive (PIM is available in Pexip Adaptive Composition layout)
  • VP9 video codec disablement (pexRTC.js)
  • Content audio receive (from WebApp3 - available in Tech Preview in V30)
  • Teams Mirror View (available in Tech Preview in V30))
  • Media Resiliency (available as GA in V29)

Pexip has additional API’s (including management side API) as well as SDK’s including Android mobile which offers additional enhanced lower-level functionality.

– Hope you enjoy the sample pexRTC web application and please share your own enhancements and findings.


Working on some incremental enhancements and when complete will update the main post.

Enhancements include;

  • Improved UX (button slider)
  • Favourite (speed-dial) for calling a common address such as your private meeting room
  • Chat receive (Pexip Meetings) - chat send is from Pexip WebApp3
  • Presenetation-in-mix - audio receive when shared from Pexip WebApp3 or Microsoft Teams
  • In call media statistics (diagnostic purposes)
  • System (Global) and Device QR Configuration (greater flexibility & control)
  • Local layouts including far-end both with and without self-view and a wearables profile (see what I see)


[In Call Media Statistics]

1 Like

thanks my issue has been fixed.

1 Like