# VDO.Ninja Codec Support Detector
Check browser codec support for VDO.Ninja. Detect hardware acceleration for video encoding and decoding.
Author: Steve Seguin

# Video Codec Support Detector

## Codec Detection

This tool detects video and audio codecs supported by your browser and identifies hardware acceleration capabilities for both encoding and decoding.

Detection Mode: Testing Both Encode/Decode
Video Codecs
Audio Codecs
Raw Data
Codec Usage Guide

### Video Codec Support

Click "Start Comprehensive Detection" to begin...

### Audio Codec Support

Click "Start Comprehensive Detection" to begin...

### Raw Detection Data

### How to Use Codecs in VDO.Ninja

#### Video Codec Selection (&codec)

Control which codec is used to encode and transmit video.

Basic Usage
https://vdo.ninja/?view=abc123&codec=h264
https://vdo.ninja/?room=xxx7654&scene&bitrate=2000&codec=vp9
Option
Description
Use Case
`h264`
Request H.264 codec
Better battery life on mobile devices, hardware acceleration on many devices
`vp8`
Request VP8 codec
Default codec, works on most devices
`vp9`
Request VP9 codec
Better compression, cleaner image for screen sharing
`av1`
Request AV1 codec
Most advanced compression, requires Chrome v90+
`h265`
Request H.265/HEVC codec
High efficiency codec, limited browser support
`webp`
Request WebP codec
Alternative image-based codec
`hardware`
Android-specific option for hardware encoding
Android devices struggling with video quality
`av1,h264`
Comma-separated fallback options
Try AV1 first, fall back to H264 if not supported
Selection Tips

- H.264: Hardware accelerated on many devices, good for mobile battery life
- VP8: Default choice, software-encoded but compatible with most devices
- VP9: Better quality at same bitrate vs VP8, but more CPU intensive
- AV1: Best compression ratio but highest CPU usage, limited device support
- H.265: Limited browser support, needs command-line flags in Chrome

Important Notes

- The `&codec` parameter is added to the viewer-side (use with `&view` or `&scene`)
- Hardware encoding capabilities vary by device, OS, and browser.
- H.264 hardware encoding might use less battery but sometimes has compatibility issues
- AV1 and VP9 tends to look better for screen sharing but uses more CPU
- AV1 tends to offer more accurate colours; useful for chroma green screening
- Use the detection tool above to see which codecs have hardware acceleration on your device

#### Recording Options (&record)

Configure how video and audio are recorded to disk.

Basic Usage
https://vdo.ninja/?push=abc123&record=2000
https://vdo.ninja/?push=xxx7654&record=0
Option
Description
Use Case
`0`
No video, audio recorded as 32bit PCM lossless
High-quality audio only recording
`-120` (negative)
No video, audio at specified kbps (OPUS)
Audio-only recording with specific bitrate
`2000` (positive)
Video bitrate in kbps
Video recording with specific quality setting
`false` or `off`
Disable recording feature
Prevents user from recording
Recording Notes

- Recorded file format is WebM with VP8/H264 video and OPUS/PCM audio
- Default bitrate is approximately 4000 kbps if not specified
- The director of a room will be notified when a user is recording
- The director can trigger recording remotely
- Video/audio is saved in real-time to the local download folder
- Recording should be stopped manually before closing the browser

#### Recording Codec Selection (&recordcodec)

Set the specific codec used when recording to disk.

Basic Usage
https://vdo.ninja/?push=abc123&record=2000&recordcodec=h264
Option
Description
`h264`
Record using H.264 codec
`vp8`
Record using VP8 codec (default fallback)
`vp9`
Record using VP9 codec
`av1`
Record using AV1 codec
Important Notes

- The container format is always WebM regardless of codec, unless using Safari, and maybe then its MP4
- If a codec is not supported, it will fall back to VP8
- Especially useful for Chrome on Android where VP8 performance can be poor
- Remember to add `&record` to enable the recording function
- Use `&rc` as a shorter alias for `&recordcodec`

#### Advanced WebRTC Features

WebRTC supports additional features like SVC (Scalable Video Coding) and WHiP.

SVC (Scalable Video Coding)

SVC allows a single bitstream to have multiple resolutions, frame rates, or quality layers.

- Improves streaming adaptability for viewers with different connection qualities
- Support varies by browser and codec
- Common modes include L1T1 (single layer), L2T1 (2 spatial layers), S2T1 (2 temporal layers)
- The detection tool above shows supported SVC modes for your browser

WHiP (WebRTC HTTP ingest Protocol)

WHiP is a standardized protocol for sending WebRTC streams to a server.

- Enables WebRTC streaming to CDNs and streaming platforms
- Simpler to implement than custom signaling servers
- Useful for broadcast scenarios with many viewers
- Check your streaming platform documentation for WHiP support details

H.265/HEVC Support

H.265 (HEVC) offers excellent compression efficiency but has limited browser support. Visit our H.265 guide for detailed instructions on:

- Enabling H.265 in Chrome using command-line flags
- Browser compatibility information
- Fallback strategies using comma-separated codec preferences
- Testing your browser's H.265 support