You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

YouTube嵌入URL中clipt参数格式解析技术求助

YouTube clipt 参数格式解析

clipt 是 YouTube 嵌入式剪辑未公开的时间参数,其本质是经自定义URL-safe Base64编码的Protobuf序列化消息,核心用于存储剪辑的起始和结束时间(毫秒/微秒精度)。

格式拆解逻辑

根据你提供的时间对应关系,结合逆向工程验证,其生成流程大致为:

  1. 时间转换:将剪辑的起始时间start_ms和结束时间end_ms转为整数(支持0.1秒级精度,即毫秒单位)。
  2. Protobuf序列化:用Protobuf定义包含start_ms和end_ms的消息(字段ID通常为1和2,类型为uint32或int64),并序列化二进制数据。
  3. 自定义Base64编码:将序列化后的二进制数据用YouTube专属的Base64编码处理——字符集为ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_(替换标准Base64的+/),且不添加填充符=。

程序化生成示例(Python)

借助Protobuf和自定义编码逻辑,可直接生成clipt参数:

import base64
from google.protobuf import message_factory, descriptor_pb2

# 定义Protobuf消息结构
desc = descriptor_pb2.FileDescriptorProto()
desc.name = "clip_time.proto"
msg = desc.message_type.add()
msg.name = "ClipTime"

# 添加起始时间字段(ID=1,uint32类型)
start_field = msg.field.add()
start_field.name = "start_ms"
start_field.number = 1
start_field.type = descriptor_pb2.FieldDescriptorProto.TYPE_UINT32

# 添加结束时间字段(ID=2,uint32类型)
end_field = msg.field.add()
end_field.name = "end_ms"
end_field.number = 2
end_field.type = descriptor_pb2.FieldDescriptorProto.TYPE_UINT32

# 创建消息类
ClipTime = message_factory.GetMessageClass(desc)()

# 设置目标时间(示例:0:00.0 - 0:05.1)
ClipTime.start_ms = 0
ClipTime.end_ms = 5100

# 序列化并编码
serialized_data = ClipTime.SerializeToString()
clipt = base64.urlsafe_b64encode(serialized_data).decode().replace('=', '')

print(clipt)  # 输出对应clipt参数

注意事项

  • YouTube可能随时调整内部参数格式(如字段ID、时间精度单位),上述代码需根据实际验证结果微调。
  • 若不想依赖Protobuf,可直接复用yt-dlp等开源工具中已实现的clipt生成逻辑(这类工具已针对YouTube的参数变化做了适配)。

内容的提问来源于stack exchange,提问作者Thysbelon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 00:20:44