@ai-matrx/抓获
AI Matrx捕捉套件——作为可再用回放套件的有观点的iPhone风格相机体验.
歌词法: 云集是这个系统的作用,而不是附加. CameraCapture 需要一个 CaptureCloudPort (最近的拇指,图书库打开器,编辑-图像持续). 东道主决定如何到达云层——永远不要.
滴入快速启动( 任意反应主机)
不需要媒体运行时间——包装自己的引擎:
import { useState } from "react";
import {
CameraCapture,
CameraFeed,
useDefaultCaptureEngine,
type CaptureMediaItem,
} from "@ai-matrx/capture/react";
export function Camera() {
const [mode, setMode] = useState<"photo" | "video">("photo");
const [items, setItems] = useState<CaptureMediaItem[]>([]);
const add = (file: File, kind: "photo" | "video") =>
setItems((xs) => [
...xs,
{ key: crypto.randomUUID(), kind, src: URL.createObjectURL(file) },
]);
const engine = useDefaultCaptureEngine({
onPhoto: (f) => add(f, "photo"),
onVideo: (f) => add(f, "video"),
onFiles: (fs) => [...fs].forEach((f) =>
add(f, f.type.startsWith("video/") ? "video" : "photo")),
});
return (
<div style={{ position: "fixed", inset: 0 }}>
<CameraCapture
engine={engine}
preview={<CameraFeed engine={engine} />}
mode={mode}
onModeChange={setMode}
media={{
items,
onDelete: (key) => setItems((xs) => xs.filter((x) => x.key !== key)),
onReplacePhoto: (key, blob) =>
setItems((xs) => xs.map((x) =>
x.key === key
? { ...x, src: URL.createObjectURL(blob) }
: x)),
}}
cloud={{ recentsThumb: null, onOpenLibrary: () => {/* your gallery */} }}
/>
</div>
);
}
这就是整条线:电影取景器,刷相取景器(调整手势+邻居)
预装入+分辨率缓存),以替换语义编辑器来进行裁剪/旋转编辑器,
双塔选项网格、计时器、火炬/分区(当硬件报告时),
上传道和安全区处理全部来自包. 主机为
他们自己的相机运行时间( AI Matrx) 通过自定义 CaptureCameraEngine
而非默认项目; 持续项目提供 resolve() 改为
src 和软件包缓存分辨率.
里面的东西
CameraCapture——所组装的铬:半透明近黑条下充血饲料;上巴(接近-中插槽-火炬-外加-选项);真缩放药丸(只有轨迹能力-无假);VIDEO-PHOTO-UPROAD模式行(上载为一等);最近拇指-快取;翻转;诚实芯片(录制时钟能活出隐藏的铬).OptionsGridPanel—— 二塔选项表面 (reveal,后为动作) : Flash (torch), Timer (0/3/10s), Grid, Aspect (full/4: 3/1: 1/16:9), 曝光(当硬件报告一个范围时), 外加被主机注入的瓦片.ImageEditSheet——即时浏览器编辑:收割(free/1:1/4:3/16:9),旋转,翻转;画布再编码出原始像素.CaptureSheet——iOS风格的系统工作表(内容+"繁忙"的瞬态变体).useTrackControls• 诚实的火炬/区域/曝光MediaTrackCapabilities。 。 。 .- 基于槽的可扩展性( N)
CaptureCameraSlots)——为域名加成(状态芯片,选项牌等附加模式,如SCAN,模式选择器上行,上行)打入的插槽. 无插件框架 .
里面没有什么(按设计)
- 没有强制主机运行时间 . 软件包包括
useDefaultCaptureEngine(仅限)getUserMedia执行情况src/engine/),用于无跑时主机. 现有相机运行时间的 AppsCaptureCameraEngine; AI Matrx这样做是为了租赁管理,记录器日记和诊断. - 没有网络,没有存储 由
src/laws.test.ts。 。 。 . - 粘着-介质渲染(hum,灯盒,耐用活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活
@ai-matrx/media。 。 。 . - 仅录音 UX ——
@ai-matrx/browser-audio。 。 。 . - QR 解码是它自己的子路径:
@ai-matrx/capture/qr(从@ai-matrx/kit/qr; 数据jsqr折返是懒入的).
默认引擎和注入的主机适配器都通过
finalizeCapturedVideo: 已发射/ 最终 Blob MIME 具有权威性, 文件名
扩展匹配,交付持续时间为正整数.
用法草图
import { CameraCapture } from "@ai-matrx/capture/react";
import type { CaptureCameraEngine, CaptureCloudPort } from "@ai-matrx/capture";
<CameraCapture
engine={engine} // host camera runtime adapter
cloud={cloud} // REQUIRED — recents thumb, library, save-edited
mode={mode}
onModeChange={setMode}
preview={<YourLivePreview />}
onClose={close}
blockedSheet={{ body: <p>…</p>, actions: [...] }}
slots={{ optionTiles: [...], statusChips: <...>, extraModes: [{ id: "scan", label: "Scan", onSelect: openScanner }] }}
/>
参考主机集成为 matrx- 前端 features/capture-camera/ 商业摄入量表面 /commerce/intake/v2 作为工作域扩展的例子.