Multimedia Examples
This page categorizes multimedia examples by function, covering playback, recording and capture, audio algorithms, display and rendering, Bluetooth audio, cloud agents, communication protocols, checks, and system services.
Playback Examples
Playback examples demonstrate a complete media playback flow: reading and decoding from an SD card, Flash, HTTP, HLS, or MIDI, then outputting to the speaker or display, with touchscreen or serial CLI control.
Example |
Description |
Component Link |
|---|---|---|
pipeline_play_sdcard_music |
Plays music from an SD card, with decode and audio effects. Supports MP3/WAV/FLAC/AAC and other formats. |
|
pipeline_play_multi_source_music |
Switches between HTTP and SD card sources and can insert a Flash tone. Playback of the original track resumes after the tone finishes. |
|
pipeline_loop_play_no_gap |
Uses a GMF task policy to loop multiple SD card tracks with no noticeable gap when switching. |
|
pipeline_play_embed_music |
Plays Flash audio embedded in firmware. It does not require an SD card or network and is suitable for boot tones. |
|
pipeline_play_http_music |
Connects to Wi-Fi, fetches an HTTP URL, then decodes and plays the stream. m3u8/HLS is not supported. |
|
audio_player |
Implements full audio playback with |
|
video_player (esp_player) |
Plays local audio and video with |
|
play_music_control |
Controls multi-source playback from a serial CLI: SD card, HTTP/HTTPS, and Flash tones, with playlist support. |
|
music_player |
Scans MP3/AAC/WAV files on the SD card and shows a playlist and playback controls on a touchscreen. Supports single-track, list, and shuffle modes. |
|
hls_live_stream |
Parses an HLS (m3u8) live stream and decodes it for playback. Suitable for internet radio and live audio. |
|
midi_play |
Plays MIDI files from the SD card. |
|
midi_keyboard |
Receives MIDI messages in real time and synthesizes sound, implementing a simple electronic keyboard. |
|
play_embed_music |
Board example: plays a WAV file embedded in firmware. Used to verify board audio output. |
|
play_sdcard_music |
Board example: plays WAV from the SD card. |
Recording and Capture Examples
Recording and capture examples demonstrate microphone and camera capture. Captured data can be encoded and written to an SD card, uploaded over HTTP, or previewed on a local display.
Example |
Description |
Component Link |
|---|---|---|
pipeline_record_sdcard |
Records from the microphone to the SD card. Supports PCM/MP3/AAC and other formats, with optional low-power recording. |
|
pipeline_record_http |
Captures and encodes microphone audio, then uploads it to a server over HTTP. Suitable for cloud recording or a speech-recognition frontend. |
|
pipeline_record_audio_muxer |
Encodes a recording and muxes it into an MP4/TS container before writing it to the SD card, instead of saving a raw audio stream only. |
|
aec_rec |
Plays an SD card MP3 on one path while the microphone path runs AEC, then encodes and saves the result for echo-cancellation comparison. |
|
audio_capture |
Implements audio capture with |
|
video_capture |
Implements video capture with |
|
av_record_live_display |
Captures camera and microphone data, shows a live LCD preview, and records audio and video as MP4 on the SD card. |
|
live_photo_capture |
Captures a short video, picks a cover frame, and writes a Motion Photo style file to the SD card. |
|
video_muxer |
Muxes camera and microphone streams with ESP Muxer and saves the result to the SD card. |
|
record_to_sdcard |
Board example: records from the microphone to the SD card. |
|
record_and_play |
Board example: plays captured microphone audio on the speaker in real time to verify the audio path. |
Audio Algorithm Examples
Audio algorithm examples demonstrate common audio processing features, including effects, howling suppression, wake-word and command recognition, sample-rate conversion, and spectrum analysis.
Example |
Description |
Component Link |
|---|---|---|
pipeline_audio_effects |
Demonstrates resampling, Sonic time-stretch/pitch-shift, at least 4-way mixing, EQ, and DRC on multiple GMF pipelines. |
|
pipeline_howl |
Karaoke setup with three pipelines: SD accompaniment and microphone are processed separately, then mixed after howling suppression and played from the DAC. |
|
wwe (wake word and commands) |
Implements wake-word, VAD, and command recognition with AFE and can run offline. |
|
asrc_demo |
Converts sample rate, channel count, and bit depth with ASRC so record or playback formats match the target specification. |
|
fft_spectrum_print |
Generates a multi-tone cosine signal, runs a 512-point Q15 real FFT, prints a spectrum bar graph over UART, then checks round-trip error with IFFT. |
|
ae_howl |
Applies |
|
esp_audio_effects_demo |
Demonstrates ALC, Fade, EQ, Sonic, DRC, MBC, Mixer, and basic format conversion one by one. |
Display and Render Examples
Display and render examples demonstrate how to send video frames and PCM audio to the LCD and DAC, covering dual-eye synchronized display, overlays, multi-stream mixing, and LVGL UI verification on the board.
Example |
Description |
Component Link |
|---|---|---|
dual_eyes |
Renders left and right eye streams in sync. Supports side-by-side on one screen or dual-screen output. |
|
video_player (esp_video_render) |
Builds a lightweight local player with |
|
video_render |
Reads MJPEG from the SD card and demonstrates single-stream/multi-stream render, scaling, and a progress-bar overlay. |
|
audio_render |
Implements single-stream PCM playback and multi-stream mixing with |
|
simple_piano |
Implements a polyphonic piano with |
|
display_lvgl |
Initializes the display with board manager and runs an LVGL test UI to verify display and touch. |
|
av_render_test |
Captures camera and microphone data and outputs them to the LCD and I2S together to verify the A/V render path. |
Bluetooth Audio Examples
Bluetooth audio examples demonstrate classic Bluetooth audio, covering A2DP playback, HFP calls, and AVRCP control, with optional LE Audio.
Example |
Description |
Component Link |
|---|---|---|
bt_audio |
One project covers A2DP Source/Sink, HFP calls, and AVRCP control. LE Audio, BIS, and an LVGL touch UI are optional. |
Cloud Agent Examples
Cloud agent examples demonstrate connecting a device to a cloud voice agent, covering real-time voice interaction with Coze, Baidu RTC, and OpenAI Realtime.
Example |
Description |
Component Link |
|---|---|---|
coze_ws_app |
Connects to the Coze WebSocket OpenAPI for two-way streaming voice, with direct talk, wake word, and button barge-in. |
|
voice_assistant_app |
Implements a Baidu RTC voice assistant: conversation, network music playback, and two-way audio mixing. |
|
openai_demo |
Connects to OpenAI Realtime with |
Protocol Examples
Protocol examples demonstrate media transport over the network, including HTTP download and real-time streaming or calls over WebRTC, RTSP, and RTMP.
Example |
Description |
Component Link |
|---|---|---|
pipeline_http_download_to_sdcard |
Downloads a file from a URL to the SD card and prints overall download and write speed when finished. |
|
peer_demo |
Establishes a connection between two ESP boards with |
|
esp_peer_demo |
Component-level |
|
whip_demo |
Pushes device audio and video to a WHIP server. |
|
kvs_master |
Runs as an Amazon KVS MASTER: receives an SDP offer from a browser VIEWER and returns an answer. |
|
kms_demo |
Publishes WebRTC audio and video to a Kurento Media Server so a browser can watch through KMS. |
|
janus_demo |
Publishes media as a Janus VideoRoom publisher using Janus HTTP signaling. |
|
doorbell_demo |
Smart doorbell over AppRTC WebSocket signaling: remote control, live video, and two-way audio. |
|
doorbell_local |
Local doorbell with HTTPS signaling hosted on the device. Includes live video, two-way audio, and optional pedestrian detection. |
|
videocall_demo |
Video call between two devices over a modified AppRTC signaling path. Media uses an |
|
webrtc_usb_camera |
The browser sends a WebRTC stream; the host enumerates the device as a USB UVC camera. |
|
local_jpeg_stream |
Hosts HTTPS signaling on the device and sends camera JPEG to a browser over a WebRTC data channel, with two-way audio. |
|
rtsp_demo |
After Wi-Fi connects, starts an RTSP server or pusher on the device for LAN streaming. |
|
rtmp_demo |
Captures device audio and video and pushes them to an RTMP server through |
Check and Benchmark Examples
Check and benchmark examples verify recording quality, extract media frames, and benchmark components such as playlists.
Example |
Description |
Component Link |
|---|---|---|
esp_audio_analyzer_app |
Captures MIC and loopback together, then saves to the SD card or uploads over Wi-Fi for hardware recording quality and acoustic checks. |
|
extractor_test |
Extracts audio and video frames from media files with |
|
playlist_benchmark |
Benchmarks |
System Service Examples
System service examples demonstrate device-side system features, including low-power sleep, service orchestration, provisioning, configuration management, and OTA updates.
Example |
Description |
Component Link |
|---|---|---|
audio_power_save |
Enters light sleep automatically after connecting, using MQTT keepalive. UART, MQTT, GPIO, or a timer can wake the device, and a sleep tone is played. |
|
services_hub |
Orchestrates Wi-Fi, OTA, CLI, and button services through the event hub and service manager. MCP is optional. |
|
adf_event_hub_example |
Connects five independent services through the event hub and prints the full event stream over UART. The same sources also build on PC. |
|
button_svc_example |
Combines a single GPIO button and an ADC button group, and demonstrates full event subscription. |
|
esp_cli_service_example |
Controls the device from the serial console. |
|
mock_services |
Six mock services demonstrate |
|
wifi_service_example |
Creates a Wi-Fi service, stores profiles encrypted, starts provisioning, and controls the connection from the CLI. |
|
config_manager_example |
Saves multiple application config groups to persistent storage, demonstrating dual slots, default merge, and CRC checks. |
|
ota_http |
Pulls firmware over HTTP with manifest version checks, SHA-256 verification, and resumable download. |
|
ota_fs |
Performs offline OTA from an SD card or USB drive, including multi-partition batch upgrades. |
|
ota_ble |
Pushes firmware over BLE GATT when Wi-Fi is unavailable, using the official ESP BLE OTA app. |