radar.png：由 MapLibre GL JS 官方示例 radar0.gif 无损转为 RGBA PNG。
原图：https://maplibre.org/maplibre-gl-js/docs/assets/radar0.gif
示例：https://maplibre.org/maplibre-gl-js/docs/examples/animate-a-series-of-images/

视频演示运行时读取并缓存 MapLibre 官方示例引用的 drone.mp4，不提交视频文件。
视频：https://static-assets.mapbox.com/mapbox-gl-js/drone.mp4
示例：https://maplibre.org/maplibre-gl-js/docs/examples/add-a-video/

图片使用已有图片解码器；视频使用内置 re_mp4 0.5.1 和 rusty_h264-decoder/common 0.16.0。
运行时无需 FFmpeg、系统视频解码器或额外安装；解码在后台线程进行，无音频。
支持普通（非分片）MP4 中的 H.264（8 位、逐行、YUV420），输入最高约 1080p，按原始时间戳循环播放。
显示等比例缩小至 960×540 以内；当前按有限范围 BT.601 转换颜色（不处理 HDR 或其它色彩标记）。
媒体下载上限 64 MiB；视频最长 1 小时、最多 216000 帧；最多缓存 16 帧用于显示顺序重排。
切换演示或移除叠加会取消解码并释放缓存。
四角为图片左上、右上、右下、左下，支持凸四边形；当前演示使用平面地图，不贴合起伏地形。
媒体配置由顶部演示宿主处理，尚未作为公开脚本数据源接口发布。

test-pattern-h264.mp4：仓库自行生成的 96×64、24 FPS、12 帧测试图案（H.264 Main，包含 B 帧）。
仅用于测试；不属于无人机演示素材。运行测试不需要 FFmpeg。
生成命令：ffmpeg -f lavfi -i testsrc2=size=96x64:rate=24 -frames:v 12 -c:v libx264 -profile:v main -x264-params bframes=2:b-adapt=0:keyint=12:scenecut=0 -pix_fmt yuv420p -movflags +faststart test-pattern-h264.mp4
test-pattern-h264.sha256：参考解码器输出的逐帧 YUV420 SHA256，按显示顺序排列，用于验证颜色平面和 B 帧顺序。

test-pattern-vfr-h264.mp4：由上述测试图案变速生成，前 6 帧间隔 1/24 秒，之后间隔 1/12 秒，用于验证可变帧率和 B 帧时间戳。
