# 多媒体例程

[English]

本页按功能分类列出多媒体例程，覆盖播放、录音与采集、音频算法、显示与渲染、蓝牙音频、云端智能体、传输协议、检测与系统服务。

## 播放例程

播放例程演示完整的媒体播放流程：从 SD 卡、Flash、HTTP、HLS、MIDI 等音源读取并解码，再输出到扬声器或屏幕，并提供触摸屏或串口命令行控制。

例程名称 | 简介 | 例程组件链接
--- | --- | ---
pipeline_play_sdcard_music | 从 SD 卡播放音乐，经解码和音效处理后输出，支持 MP3/WAV/FLAC/AAC 等。 | gmf_examples
pipeline_play_multi_source_music | 支持在 HTTP 与 SD 卡音源之间切换，并可插入 Flash 提示音；提示音结束后恢复原曲播放。 | gmf_examples
pipeline_loop_play_no_gap | 基于 GMF 任务策略实现 SD 卡多首音乐无缝循环，切换时无明显停顿。 | gmf_examples
pipeline_play_embed_music | 播放嵌入固件的 Flash 音频，不依赖 SD 卡或网络，适用于开机提示音。 | gmf_examples
pipeline_play_http_music | 连接 Wi-Fi 后按 HTTP URL 拉流并解码播放。不支持 m3u8/HLS。 | gmf_examples
audio_player | 基于 `esp_player` 实现完整音频播放：解复用、解码、播放控制，并可配置 2–4 路混音到同一 DAC。 | esp_player
video_player (esp_player) | 基于 `esp_player` 播放本地音视频：解复用、解码、A/V 同步，画面输出至 LCD，音频输出至扬声器。 | esp_player
play_music_control | 通过串口 CLI 控制多源播放：SD 卡、HTTP/HTTPS、Flash 提示音，并支持播放列表。 | adf_examples
music_player | 扫描 SD 卡中的 MP3/AAC/WAV，在触摸屏上显示歌曲列表和播放控件，支持单曲/列表/随机。 | adf_examples
hls_live_stream | 解析 HLS（m3u8）直播流并解码播放，适用于网络电台和在线直播音频。 | esp_hls_stream
midi_play | 从 SD 卡播放 MIDI 文件。 | esp_midi
midi_keyboard | 实时接收 MIDI 消息并合成发声，实现简易电子琴。 | esp_midi
play_embed_music | 板卡例程：直接播放固件内的 WAV，用于验证板卡音频输出。 | esp_board_manager
play_sdcard_music | 板卡例程：从 SD 卡播放 WAV。 | esp_board_manager

## 录音与采集例程

录音与采集例程演示麦克风与摄像头采集。采集数据可编码后写入 SD 卡、经 HTTP 上传，或在本地屏幕上预览。

例程名称 | 简介 | 例程组件链接
--- | --- | ---
pipeline_record_sdcard | 从麦克风录音并保存到 SD 卡，支持 PCM/MP3/AAC 等，可启用低功耗录音。 | gmf_examples
pipeline_record_http | 麦克风采集并编码后，通过 HTTP 上传到指定服务器，适用于云端录音或语音识别前端。 | gmf_examples
pipeline_record_audio_muxer | 录音编码后经 muxer 封装为 MP4/TS 等容器再写入 SD，而非仅保存裸音频流。 | gmf_examples
aec_rec | 一路播放 SD 卡 MP3，另一路麦克风经 AEC 后编码保存，用于对比回声消除效果。 | gmf_ai_audio
audio_capture | 基于 `esp_capture` 实现音频采集，覆盖基础录音、AEC、写文件和自定义处理，无需自行搭建处理链。 | esp_capture
video_capture | 基于 `esp_capture` 实现视频采集：单帧、录像、叠加、双路，并可保存到 SD。 | esp_capture
av_record_live_display | 采集摄像头和麦克风数据，在 LCD 上持续预览，同时将音视频录制为 MP4 写入 SD。 | adf_examples
live_photo_capture | 采集短视频并自动提取封面帧，封装为 Motion Photo 风格文件后写入 SD。 | esp_live_photo
video_muxer | 基于 ESP Muxer 将摄像头与麦克风两路流混流后保存到 SD。 | esp_muxer
record_to_sdcard | 板卡例程：将麦克风录音保存到 SD 卡。 | esp_board_manager
record_and_play | 板卡例程：麦克风采集的音频实时从扬声器输出，用于验证音频通路。 | esp_board_manager

## 音频算法例程

音频算法例程演示常见音频处理能力，包括音效、啸叫抑制、唤醒与命令词、采样率转换和频谱分析。

例程名称 | 简介 | 例程组件链接
--- | --- | ---
pipeline_audio_effects | 基于多条 GMF 处理链演示重采样、Sonic 变速变调、至少 4 路混音、EQ 和 DRC。 | gmf_examples
pipeline_howl | 卡拉 OK 三路处理链：SD 伴奏与麦克风分别处理后，经啸叫抑制再混音，从 DAC 输出。 | gmf_examples
wwe (唤醒与命令词) | 基于 AFE 实现唤醒词、VAD 和命令词识别，可离线运行。 | gmf_ai_audio
asrc_demo | 基于 ASRC 进行采样率、声道数和位深转换，将录音或播放格式对齐到目标规格。 | esp_asrc
fft_spectrum_print | 生成多频余弦信号，执行 512 点 Q15 实数 FFT，经串口打印频谱柱状图，再通过 IFFT 校验往返误差。 | gmf_fft
ae_howl | 麦克风经 `esp_ae_howl` 抑制啸叫后，与 SD 卡背景音乐混音播放。 | esp_audio_effects
esp_audio_effects_demo | 逐项演示 ALC、Fade、EQ、Sonic、DRC、MBC、Mixer 和基本格式转换。 | esp_audio_effects

## 显示与渲染例程

显示与渲染例程演示如何把视频帧和 PCM 音频送到 LCD 与 DAC，覆盖双目同步显示、画面叠加、多路混音，以及板卡 LVGL 界面验证。

例程名称 | 简介 | 例程组件链接
--- | --- | ---
dual_eyes | 同步渲染左右眼画面，支持单屏并排或双屏输出。 | esp_video_render
video_player (esp_video_render) | 基于 `esp_video_render` 实现轻量本地播放器：从 SD 提取、解码、渲染，并提供 overlay UI。 | esp_video_render
video_render | 读取 SD 卡 MJPEG，演示单流/多流渲染、缩放和进度条 overlay。 | esp_video_render
audio_render | 基于 `esp_audio_render` 实现单路 PCM 播放和多路混音，也可播放网络解码后的音频。 | esp_audio_render
simple_piano | 基于 `esp_audio_render` 实现复音钢琴：多轨同时发声并实时渲染到 DAC。 | esp_audio_render
display_lvgl | 基于 board manager 初始化屏幕，并运行 LVGL 测试界面，用于验证显示和触摸。 | esp_board_manager
av_render_test | 采集摄像头和麦克风数据，经 LCD 与 I2S 同步输出，用于验证音视频渲染链路。 | av_render

## 蓝牙音频例程

蓝牙音频例程演示经典蓝牙音频能力，覆盖 A2DP 播放、HFP 通话和 AVRCP 控制，并可按需启用 LE Audio。

例程名称 | 简介 | 例程组件链接
--- | --- | ---
bt_audio | 同一工程覆盖 A2DP Source/Sink、HFP 通话和 AVRCP 控制；可选启用 LE Audio、BIS 和 LVGL 触屏 UI。 | esp_bt_audio

## 云端智能体例程

云端智能体例程演示设备与云端语音智能体的对接，覆盖扣子、百度 RTC 和 OpenAI Realtime 的实时语音交互。

例程名称 | 简介 | 例程组件链接
--- | --- | ---
coze_ws_app | 对接扣子 WebSocket OpenAPI，支持直接对话、唤醒和按键打断的双向流式语音交互。 | adf_examples
voice_assistant_app | 基于百度 RTC 实现语音助手：支持对话、播放网络音乐，并将两路音频混音输出。 | adf_examples
openai_demo | 基于 `esp_webrtc` 连接 OpenAI Realtime，实现实时语音对话，并演示 function call 控制设备。 | esp-webrtc-solution

## 传输协议例程

传输协议例程演示媒体在网络上的传输，包括 HTTP 下载，以及基于 WebRTC、RTSP、RTMP 的实时推流与通话。

例程名称 | 简介 | 例程组件链接
--- | --- | ---
pipeline_http_download_to_sdcard | 按 URL 将文件下载到 SD 卡，完成后打印下载和写入的整体速度。 | gmf_examples
peer_demo | 两块 ESP 板基于 `esp_peer` 建立连接，通过模拟音频和数据通道实现简易聊天。 | esp-webrtc-solution
esp_peer_demo | `esp_peer` 组件级演示：双角色实时通信，包含音频流和数据通道消息。 | esp_peer
whip_demo | 基于 WHIP 将设备音视频推流到 WHIP 服务器。 | esp-webrtc-solution
kvs_master | ESP 作为 Amazon KVS MASTER，接收浏览器 VIEWER 的 SDP offer 并回传 answer。 | esp-webrtc-solution
kms_demo | 向 Kurento Media Server 发布 WebRTC 音视频，浏览器经 KMS 观看。 | esp-webrtc-solution
janus_demo | 作为 Janus VideoRoom publisher，经 Janus HTTP 信令发布媒体流。 | esp-webrtc-solution
doorbell_demo | 基于 AppRTC WebSocket 信令的智能门铃：远程控制、实时视频、双向音频。 | esp-webrtc-solution
doorbell_local | 设备自建 HTTPS 信令的本地门铃，包含实时视频、双向音频，可选行人检测。 | esp-webrtc-solution
videocall_demo | 两台设备经改造版 AppRTC 信令实现视频通话，媒体经 `esp_webrtc` 数据通道传输。 | esp-webrtc-solution
webrtc_usb_camera | 浏览器经 WebRTC 送流，主机侧将设备识别为 USB UVC 摄像头。 | esp-webrtc-solution
local_jpeg_stream | 设备自建 HTTPS 信令，将摄像头 JPEG 经 WebRTC 数据通道推送到浏览器，并支持双向音频。 | esp-webrtc-solution
rtsp_demo | 连接 Wi-Fi 后在设备上启动 RTSP 服务端或推流端，供局域网拉流。 | esp-webrtc-solution
rtmp_demo | 采集设备音视频，经 `esp_media_protocols` 推流到 RTMP 服务器。 | esp-webrtc-solution

## 检测与压测例程

检测与压测例程用于检查录音质量、验证媒体抽帧，以及对播放列表等组件做性能压测。

例程名称 | 简介 | 例程组件链接
--- | --- | ---
esp_audio_analyzer_app | 同时采集 MIC 和回采，保存到 SD 或经 Wi-Fi 上传，用于硬件录音质量和声学检查。 | adf_examples
extractor_test | 基于 `esp_extractor` 从媒体文件中提取音视频帧，用于验证解复用和抽帧。 | esp_extractor
playlist_benchmark | 在 SD 卡上对 `esp_playlist` 各操作进行性能压测，经串口打印单次平均耗时。 | esp_playlist

## 系统服务例程

系统服务例程演示设备侧系统能力，包括低功耗休眠、服务编排、配网、配置管理和 OTA 升级。

例程名称 | 简介 | 例程组件链接
--- | --- | ---
audio_power_save | 联网后通过 MQTT keepalive 自动进入 light sleep，可由 UART/MQTT/GPIO/定时器唤醒，并播放休眠提示音。 | adf_examples
services_hub | 基于 event hub 和 service manager 编排 Wi-Fi、OTA、CLI 与按键服务，可选启用 MCP。 | adf_examples
adf_event_hub_example | 五个独立服务经 event hub 互联，经串口打印完整事件流；同一份源码也可在 PC 上构建。 | adf_event_hub
button_svc_example | 将单 GPIO 按键和 ADC 多按键组一并接入，演示完整事件订阅。 | esp_button_service
esp_cli_service_example | 通过串口命令控制设备。 | esp_cli_service
mock_services | 六个 mock 服务演示 `esp_service` 的创建、启动、暂停/恢复、销毁和事件订阅。 | esp_service
wifi_service_example | 创建 Wi-Fi service，加密保存 profile，启动配网，并通过 CLI 控制连接。 | esp_wifi_service
config_manager_example | 将多组应用配置保存到持久化介质，演示双槽、默认值合并和 CRC 校验。 | esp_config_manager
ota_http | 通过 HTTP 拉取固件：清单版本检查、SHA-256 校验、断点续传。 | esp_ota_service
ota_fs | 基于 SD 卡或 U 盘进行离线 OTA，支持多分区批量升级。 | esp_ota_service
ota_ble | 无 Wi-Fi 时通过 BLE GATT 推送固件，配合官方 ESP BLE OTA APP。 | esp_ota_service

提供有关此文档的反馈