feat(editor): 素材面板改造与视频 codec 存量重判 (#419)
* refactor(editor): 画布素材统一到项目素材 - 移除「画布素材」分组、筛选页签、来源徽标与详情「来源」行 - 画布产物(source=canvas)并入「项目素材」组,与普通项目素材一致展示 - 数据层仍写入 canvas 来源标记,仅供追溯,不再驱动任何 UI 分组 * fix(editor): 启动回填重判存量 none 视频的 codec - Repository.PlaybackNoneVideos: 取旧规则遗留(provider=local, playback_status='none')的本地视频 - BackfillPlaybackTranscodes 追加有界重判(每次启动至多 20 条最旧行): H.264 保持 none, H.265/MPEG-4 Part 2 自动触发转码, 使 codec 判定规则变更覆盖规则变更前已导入的文件 - 新增守护测试 TestBackfillRejudgesLegacyNoneVideos: 存量 none 的 H.264 保持、mp4v 转码落 failed * feat(editor): 素材展开改为浮层详情卡,列表不再被挤压 - 移除行内展开块:此前点击素材行会在分组内内联撑开预览+详情+按钮,把列表下方素材挤走 - 新增 AssetDetailSheet 浮层:覆盖在列表视口上方,列表 DOM 原位不动、滚动位置不丢 - 浮层自带头部(类型图标+标题+关闭)、滚动内容区(预览/元数据/描述)与固定底部「添加到时间线」 - 键盘可达:Esc 或关闭按钮退出;聚焦管理 + aria-label + 尊重 prefers-reduced-motion
This commit is contained in:
@@ -301,7 +301,8 @@ func (s *Service) OpenResourcePlaybackRange(userID string, resourceID string) (*
|
||||
}
|
||||
|
||||
// BackfillPlaybackTranscodes 在服务启动后扫描存量本地视频:未判定 codec 的补判定,
|
||||
// H.265 触发转码、H.264 标记 none。幂等:maybeStartPlaybackTranscode 先置
|
||||
// H.265/MPEG-4 Part 2 触发转码、H.264 标记 none;再对旧规则遗留的 none 行做一次
|
||||
// 有界重判(见 PlaybackNoneVideos)。幂等:maybeStartPlaybackTranscode 先置
|
||||
// processing/none 再入库,重复扫描不会重复转码。
|
||||
func (s *Service) BackfillPlaybackTranscodes() {
|
||||
// 上次进程可能崩溃在转码中途(状态卡 processing),先重置为待判定。
|
||||
@@ -309,10 +310,20 @@ func (s *Service) BackfillPlaybackTranscodes() {
|
||||
for {
|
||||
resources, err := s.repo.PlaybackPendingVideos(20)
|
||||
if err != nil || len(resources) == 0 {
|
||||
return
|
||||
break
|
||||
}
|
||||
for i := range resources {
|
||||
s.maybeStartPlaybackTranscode(&resources[i])
|
||||
}
|
||||
}
|
||||
// 旧版本曾把 H.265/MPEG-4 Part 2 误判为浏览器可播并落 none;对存量 none 行
|
||||
// 做一次有界重判(H.264 保持 none,H.265/MPEG-4 Part 2 触发转码),使 codec
|
||||
// 判定规则的变更覆盖规则变更前已导入的文件。每次启动最多重判 20 条最旧行,
|
||||
// 天然收敛且不会重复转码(claim 原子地把 none → processing)。
|
||||
legacy, err := s.repo.PlaybackNoneVideos(20)
|
||||
if err == nil {
|
||||
for i := range legacy {
|
||||
s.maybeStartPlaybackTranscode(&legacy[i])
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user