Harden relay preview mp4 handling

这个提交包含在:
cryptocommuniums-afk
2026-03-17 15:03:33 +08:00
父节点 b1752110fb
当前提交 1adadbad8c
修改 5 个文件,包含 390 行新增21 行删除

查看文件

@@ -8,6 +8,25 @@ export type ChangeLogEntry = {
};
export const CHANGE_LOG_ENTRIES: ChangeLogEntry[] = [
{
version: "2026.03.17-live-camera-relay-mp4-hardening",
releaseDate: "2026-03-17",
repoVersion: "pending",
summary:
"修复实时分析 relay 预览在 Chrome `mp4` 分段下容易失效的问题,并让 live-camera 录制优先回到更稳定的 `webm`。",
features: [
"media 服务在 relay 会话收到第一段 `mp4` 时会额外保留初始化片段,后续滚动缓存即使裁掉旧分段,也能继续为 preview 重建可解码的输入源",
"relay preview 构建会跳过明显异常的小 `mp4` 分段,并优先尝试把保留的初始化片段与当前缓存拼成单一输入后再转成 `preview.webm`",
"如果 relay preview 本轮重建失败,但磁盘上仍有上一版可播放 `preview.webm`,worker 会保留旧预览继续对 viewer 提供播放,而不是直接把同步观看打成永久失败",
"live-camera 的合成录制 mime 选择已改为优先 `video/webm`,Chrome 不再默认上传 fragmented `mp4` relay 分段,从源头减少 `trex/tfhd` 类 ffmpeg 拼接失败",
],
tests: [
"cd media && go test ./...",
"pnpm check",
"pnpm build",
"部署后线上 smoke: 重新开始一条 `/live-camera` 实时分析,确认 relay 新分段优先为 `webm`,viewer 端继续通过 `/media/assets/sessions/.../preview.webm` 拉流且不再快速掉入 `previewStatus=failed`",
],
},
{
version: "2026.03.17-live-camera-media-asset-url",
releaseDate: "2026-03-17",

查看文件

@@ -392,12 +392,6 @@ function pickRecorderMimeType() {
const supported =
typeof MediaRecorder !== "undefined" &&
typeof MediaRecorder.isTypeSupported === "function";
if (
supported &&
MediaRecorder.isTypeSupported("video/mp4;codecs=avc1.42E01E,mp4a.40.2")
) {
return "video/mp4";
}
if (
supported &&
MediaRecorder.isTypeSupported("video/webm;codecs=vp9,opus")
@@ -410,6 +404,12 @@ function pickRecorderMimeType() {
) {
return "video/webm;codecs=vp8,opus";
}
if (
supported &&
MediaRecorder.isTypeSupported("video/mp4;codecs=avc1.42E01E,mp4a.40.2")
) {
return "video/mp4";
}
return "video/webm";
}