
Label Studio Video 标签详解视频标注配置、播放器参数与 FFmpeg 预处理实战【免费下载链接】label-studioLabel Studio is a multi-type data labeling and annotation tool with standardized output format项目地址: https://gitcode.com/GitHub_Trending/la/label-studioLabel Studio 的Video标签用于在标注界面中播放并展示视频文件支撑视频分类、转写transcription、帧级分类、目标跟踪与时间轴分段等典型标注任务。本文以官方 Video 标签文档为骨架结合前端编辑器源码Video.js与仓库内置的视频标注模板label_studio/annotation_templates/videos/系统讲解视频格式兼容性要求、FFmpeg 预处理命令、全部标签参数、播放速度控制机制以及分类、转写、跟踪等完整标注配置示例。适用场景与数据约束Video标签专门处理video类型的数据适合两类最常见的标注需求视频分类对整段视频做出类别判断配合Choices等输出控件使用视频转写观看视频并记录文本内容配合TextArea使用。在此基础上它也是帧级分类配合TimelineLabels、目标跟踪配合VideoRectangle与Labels和时间轴分段配合Timeline等高级任务的播放基础。从源码结构看Video 标签模型通过toNames关联查找labels、timeline、videorectangle、videovector等控制标签见 Video.js说明它是整个视频标注生态的播放容器。视频格式与编码为什么必须做预处理Label Studio依赖浏览器来播放视频并计算总帧数因此视频的封装格式与编码必须被浏览器普遍支持。官方推荐的组合是容器MP4视频编码H.264AVC音频编码AAC该组合在现代浏览器中兼容性最好能最大程度避免总时长检测错误、播放异常等问题。同时视频应转换为恒定帧率CFR理想值为 30 fps以避免帧数偏差、重复帧或丢帧问题文件内所有音视频流的时长必须一致否则会出现多余的总帧数。这些限制的根本原因在于编辑器需要把时间映射为离散的帧号Video.js 中的frame、length、currentFrame等状态均以帧为基准帧率与时长不准确会直接导致标注区间错位。FFmpeg 转码命令详解官方文档提供了两个 FFmpeg 命令。第一个用于提取视频流的精确时长第二个用于重新编码为标准格式# 提取视频流的精确时长秒 DUR$(ffprobe -v error -select_streams v:0 -show_entries streamduration -of defaultnokey1:noprint_wrappers1 input.mp4) # 重新编码为推荐格式 ffmpeg -i input_video.mp4 -c:v libx264 -profile:v high -level 4.0 -pix_fmt yuv420p -r 30 -c:a aac -b:a 128k -to $DUR output_video.mp4各参数含义如下参数作用-i input_video.mp4指定源视频-c:v libx264使用 H.264 编码器-profile:v high -level 4.0设置兼容性参数覆盖大多数设备-pix_fmt yuv420p采用大多数浏览器兼容的像素格式-r 30强制恒定 30 fps若能 100% 确定源视频已是恒定帧率可省略此参数-c:a aac -b:a 128k音频编码为 AAC码率 128 kbps-to $DUR容器时钟到达视频结束时间戳即停止输出自动丢弃多余音频尾巴output_video.mp4转码后可直接用于 Label Studio 的文件建议转码前用以下命令全面检查视频的所有参数格式、流信息、帧率、时长ffprobe -v error -show_format -show_streams -print_format json input.mp4Video 标签参数速查参数类型默认值说明namestring—元素名称必填valuestring—视频的 URL必填常以$video引用任务数据字段frameRatenumber24视频每秒帧数默认 24可直接使用任务数据如$fpssyncstring—需要同步的音频/视频对象名称用于音视频同步标注mutedbooleanfalse是否静音播放heightnumber600视频播放器高度像素timelineHeightnumber64带标注区域的时间轴高度像素defaultPlaybackSpeednumber1播放器加载时的初始播放速度minPlaybackSpeednumber1允许的最小播放速度defaultPlaybackSpeed不能低于该值注意官方参数速查表中minPlaybackSpeed的文档默认值标为1但从编辑器源码看标签模型实际将minplaybackspeed的默认值设为0.25见 Video.js并在初始化时将最小允许速度钳制在0.25至10之间Video.js。文档默认值1意味着默认情况下最小速度即为正常速度若要允许慢放需显式指定更小的minPlaybackSpeed。参数在源码中的处理细节帧率归一化frameRate在初始化时会被解析并归一化——若任务数据中无有效值则回退到24若值小于 1如0.5表示每 2 秒一帧会被转换为1 / frameRate见 Video.js。因此你既可以在配置中写死数值也可以写成frameRate$fps引用任务数据字段。播放速度钳制源码设定了MIN_PLAYBACK_SPEED 0.25、MAX_PLAYBACK_SPEED 10minPlaybackSpeed会被限制在[0.25, 10]defaultPlaybackSpeed则被限制在[minPlaybackSpeed, 10]区间内Video.js且播放器初始速度直接取defaultPlaybackSpeed。这意味着配置里写的defaultPlaybackSpeed即使超出范围也会被安全钳制不会导致播放器异常。基础用法示例示例一最小配置仅播放视频View Video namevideo value$video / /View示例二自定义播放速度View Video namevideo value$video defaultPlaybackSpeed2 minPlaybackSpeed1.5 / /View播放器载入后会以 2 倍速启动且速度调节不能低于 1.5 倍速。注意defaultPlaybackSpeed不能小于minPlaybackSpeed源码中会将前者钳制到[minPlaybackSpeed, 10]区间。示例三视频分类View Video namevideo value$video / Choices namech toNamevideo Choice valuePositive / Choice valueNegative / /Choices /View仓库内置的视频分类模板与上述结构一致并在示例数据中给出了 predictions 结果格式from_name为choice、to_name为video、type为choices可直接参考。示例四视频转写View Video namevideo value$video / TextArea nameta toNamevideo / /View进阶应用结合其他标签构建完整标注场景Video标签通常与以下控制标签组合使用构成完整的视频标注工作流视频目标跟踪VideoRectangle LabelsVideoRectangle 标签专门为视频目标跟踪设计需要与Video和Labels配合使用。仓库内置的视频目标跟踪模板View Labels namevideoLabels toNamevideo allowEmptytrue Label valueMan backgroundblue/ Label valueWoman backgroundred/ Label valueOther backgroundgreen/ /Labels !-- 请仔细指定 FPS它将用于该项目所有视频 -- Video namevideo value$video framerate25.0/ VideoRectangle namebox toNamevideo / /View该模板特别注明frameRate此处写作framerate会影响所有项目视频的帧号映射务必按实际视频填写。编辑器仓库中的视频目标跟踪示例也是同样的结构Labels Video VideoRectangle。视频帧级分类TimelineLabels帧级分类模板在视频下方的时间轴上逐帧打标签View TimelineLabels namevideoLabels toNamevideo Label valueMovement background#c813ec/ Label valueStill background#1d81cd/ Label valueSlow Motion background#54d651/ /TimelineLabels Video namevideo value$video timelineHeight120 / /View其中timelineHeight120用于放大带标注区域的时间轴高度默认 64方便帧级精细标注。Video 模型中的timelineControl视图见 Video.js会通过toNames自动关联类型包含timeline的控制标签。时间轴分段Timeline 与音视频同步仓库还提供了视频时间轴分段示例由于 Video 标签本身不直接提供时间段选择控件该示例通过Audio标签的sync机制与 HTML 视频叠加实现逐段标注。这印证了sync参数的用途——将播放状态播放/暂停/跳转同步到指定对象见 Video.js 中的triggerSync/handleSync等同步动作实现。数据准备注意事项上述模板的示例数据均以/static/samples/opossum_snow.mp4作为$video字段值。在实际项目中value可以是直接指向视频文件的 URL如对象存储、本地文件存储地址引用任务数据字段$video字段值由 数据导入 或外部存储io_storages提供。小结使用Video标签的关键要点格式先行统一转码为 MP4 H.264 AAC、恒定帧率推荐 30 fps并保证音视频流时长一致这是浏览器播放与帧数计算正确的前提参数按需配置frameRate可用$fps引用任务数据、timelineHeight、muted、sync、播放速度参数等均可在标签上直接声明播放器初始化时会自动做帧率归一化与速度钳制组合使用分类用Choices、转写用TextArea、目标跟踪用VideoRectangleLabels、帧级分类用TimelineLabels所有控制标签都通过toName指向Video的name源码可追溯标签的默认值与参数校验逻辑可在 web/libs/editor/src/tags/object/Video/Video.js 中查看相关标注模板位于 label_studio/annotation_templates/videos/。【免费下载链接】label-studioLabel Studio is a multi-type data labeling and annotation tool with standardized output format项目地址: https://gitcode.com/GitHub_Trending/la/label-studio创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考