华为云用户手册
-
响应示例 状态码:200 Demo Information { "result_code" : "LIVE.100000000", "result_msg" : "SUC CES S", "domain" : "push.testott.hls.com", "app_name" : "ott", "id" : "test"} 状态码:400 Error response { "result_code" : "LIVE.100011001", "result_msg" : "Request parameters is invalid, channel state has been turned OFF", "domain" : "push.testott.hls.com", "app_name" : "ott", "id" : "test"}
-
请求参数 表2 请求Header参数 参数 是否必选 参数类型 描述 X-Auth-Token 是 String 用户Token,使用Token鉴权方式时必选。通过调用 IAM 服务获取用户Token接口获取(响应消息头中X-Subject-Token的值)。 Access-Control-Allow-Internal 否 String 服务鉴权Token,服务开启鉴权,必须携带Access-Control-Allow-Internal访问服务。 Access-Control-Allow-External 否 String 服务鉴权Token,服务开启鉴权,必须携带Access-Control-Allow-External访问服务。 表3 请求Body参数 参数 是否必选 参数类型 描述 domain 是 String 频道推流 域名 app_name 是 String 组名或应用名 id 是 String 频道ID。频道唯一标识,为必填项。 state 是 String 频道状态 ON:频道下发成功后,自动启动拉流、转码、录制等功能 OFF:仅保存频道信息,不启动频道
-
响应参数 状态码:200 表4 响应Body参数 参数 参数类型 描述 result_code String 错误码 result_msg String 错误描述 domain String 推流域名 app_name String 组名或应用名,为必填项 id String 频道ID。频道唯一标识,为必填项 sources Array of SourceRsp objects 推流URL列表。创建频道时,只有入流协议为RTMP_PUSH时,会返回推流URL列表 表5 SourceRsp 参数 参数类型 描述 url String RTMP推流地址 bitrate Integer 码率。 单位:bps。取值范围:(0,104,857,600](100Mbps) width Integer 分辨率对应宽的值。取值范围:0 - 4096(4K) height Integer 分辨率对应高的值。取值范围:0 - 2160(4K) enable_snapshot Boolean 描述是否使用该流做截图 状态码:400 表6 响应Body参数 参数 参数类型 描述 result_code String 错误码 result_msg String 错误描述 domain String 推流域名 app_name String 组名或应用名,为必填项 id String 频道ID。频道唯一标识,为必填项
-
请求示例 PUT https://{endpoint}/v1/{project_id}/ott/channels/input{ "domain" : "push.testott.hls.com", "app_name" : "ott", "id" : "test", "input" : { "input_protocol" : "RTMP_PUSH", "sources" : [ { "width" : 100, "bitrate_for3u8" : false, "enable_snapshot" : false, "bitrate" : 1024, "passphrase" : "", "url" : "rtmp://192.168.8.158/ott/adtestdrm?vhost=pull.testott.hls.com", "height" : 100 } ] }}
-
响应示例 状态码:200 Demo Information { "result_code" : "LIVE.100000000", "result_msg" : "SUCCESS", "domain" : "push.testott.hls.com", "app_name" : "ott", "id" : "test"} 状态码:400 Error response { "result_code" : "LIVE.103011019", "result_msg" : "The resource to access is not exists", "domain" : "push.testott.hls.com", "app_name" : "test", "id" : "test-abc"}
-
响应参数 状态码:200 表13 响应Body参数 参数 参数类型 描述 result_code String 错误码 result_msg String 错误描述 domain String 推流域名 app_name String 组名或应用名,为必填项 id String 频道ID。频道唯一标识,为必填项 sources Array of SourceRsp objects 推流URL列表。创建频道时,只有入流协议为RTMP_PUSH时,会返回推流URL列表 表14 SourceRsp 参数 参数类型 描述 url String RTMP推流地址 bitrate Integer 码率。 单位:bps。取值范围:(0,104,857,600](100Mbps) width Integer 分辨率对应宽的值。取值范围:0 - 4096(4K) height Integer 分辨率对应高的值。取值范围:0 - 2160(4K) enable_snapshot Boolean 描述是否使用该流做截图 状态码:400 表15 响应Body参数 参数 参数类型 描述 result_code String 错误码 result_msg String 错误描述 domain String 推流域名 app_name String 组名或应用名,为必填项 id String 频道ID。频道唯一标识,为必填项
-
请求参数 表2 请求Header参数 参数 是否必选 参数类型 描述 X-Auth-Token 是 String 用户Token,使用Token鉴权方式时必选。通过调用IAM服务获取用户Token接口获取(响应消息头中X-Subject-Token的值)。 Access-Control-Allow-Internal 否 String 服务鉴权Token,服务开启鉴权,必须携带Access-Control-Allow-Internal访问服务。 Access-Control-Allow-External 否 String 服务鉴权Token,服务开启鉴权,必须携带Access-Control-Allow-External访问服务。 表3 请求Body参数 参数 是否必选 参数类型 描述 domain 是 String 频道推流域名 app_name 是 String 组名或应用名 id 是 String 频道ID。频道唯一标识,为必填项 input 否 InputStreamInfo object 频道出流信息 表4 InputStreamInfo 参数 是否必选 参数类型 描述 input_protocol 是 String 频道入流协议 FLV_PULL RTMP_PUSH HLS_PULL SRT_PULL SRT_PUSH sources 否 Array of SourcesInfo objects 频道主源流信息。入流协议为RTMP_PUSH和SRT_PUSH时,非必填项。其他情况下,均为必填项。 secondary_sources 否 Array of SecondarySourcesInfo objects 备入流数组,非必填项。如果有备入流,则主备入流必须保证路数、codec和分辨率均一致。入流协议为RTMP_PUSH时,无需填写。 failover_conditions 否 FailoverConditions object 非必填,频道供应商提供的主备音视频流URL切换的配置。 max_bandwidth_limit 否 Integer 当入流协议为HLS_PULL时,需要配置的最大带宽。 用户提供的拉流URL中,针对不同码率的音视频,均会携带带宽参数“BANDW IDT H”。 如果这里配置最大带宽,媒体直播服务从URL拉流时,会选择小于最大带宽且码率最大的音视频流,推流到源站。 如果这里未配置最大带宽,媒体直播服务从URL拉流时,会默认选择“BANDWIDTH”最高的音视频流,推流到源站。 ip_port_mode 否 Boolean 当推流协议为SRT_PUSH时,如果配置了直推源站,编码器不支持输入streamid,需要打开设置为true ip_whitelist 否 String SRT_PUSH类型时,客户push ip白名单 scte35_source 否 String 广告的scte35信号源。 仅HLS_PULL类型的频道支持此配置,且目前仅支持SEGMENTS。 ad_triggers 否 Array of strings 广告触发器配置。 包含如下取值: Splice insert:拼接插入 Provider advertisement:提供商广告 Distributor advertisement:分销商广告 Provider placement opportunity:提供商置放机会 Distributor placement opportunity:分销商置放机会 audio_selectors 否 Array of InputAudioSelector objects 设置音频选择器,最多设置8个音频选择器 表5 SourcesInfo 参数 是否必选 参数类型 描述 url 否 String 频道源流URL,用于外部拉流 bitrate 否 Integer 码率。无需直播转码时,此参数为必填项 单位:bps。取值范围:(0,104,857,600](100Mbps) width 否 Integer 分辨率对应宽的值,非必填项 取值范围:0 - 4096(4K) height 否 Integer 分辨率对应高的值,非必填项 取值范围:0 - 2160(4K) enable_snapshot 否 Boolean 描述是否使用该流做截图 bitrate_for3u8 否 Boolean 是否使用bitrate来固定码率。默认值:false passphrase 否 String 协议为SRT_PUSH时的加密信息 backup_urls 否 Array of strings 备入流地址列表 stream_id 否 String 频道为SRT_PULL类型时,拉流地址的Stream ID。 latency 否 Integer 频道为SRT_PULL类型时的拉流时延。 表6 SecondarySourcesInfo 参数 是否必选 参数类型 描述 url 否 String 频道源流URL,用于外部拉流 bitrate 否 Integer 码率。无需直播转码时,此参数为必填项 单位:bps。取值范围:(0,104,857,600](100Mbps) width 否 Integer 分辨率对应宽的值,非必填项 取值范围:0 - 4096(4K) height 否 Integer 分辨率对应高的值,非必填项 取值范围:0 - 2160(4K) bitrate_for3u8 否 Boolean 是否使用bitrate来固定码率。默认值:false passphrase 否 String 协议为SRT_PUSH时的加密信息 backup_urls 否 Array of strings 备入流地址列表 stream_id 否 String 频道为SRT_PULL类型时,拉流地址的Stream ID。 latency 否 Integer 频道为SRT_PULL类型时的拉流时延。 表7 FailoverConditions 参数 是否必选 参数类型 描述 input_loss_threshold_msec 否 Integer 入流停止的时长阈值。到达此阈值后,自动触发主备切换。 单位:毫秒,取值范围:0 - 3600000。 非必填,默认填2000ms。 input_preference 否 String 以主入流URL为第一优先级(PRIMARY)或主备URL平等切换(EQUAL)。 如果是平等切换时,使用的是备URL,不会自动切换至主URL。 非必填,默认值为EQUAL。 表8 InputAudioSelector 参数 是否必选 参数类型 描述 name 是 String 音频选择器的名称。仅支持大小写字母、数字、中划线和下划线。 同一个频道中每个选择器的名称需要唯一。 selector_settings 否 AudioSelectorSettings object 设置音频选择器 表9 AudioSelectorSettings 参数 是否必选 参数类型 描述 audio_language_selection 否 AudioSelectorLangSelection object 设置语言选择器 audio_pid_selection 否 AudioSelectorPidSelection object 设置PID选择器 audio_hls_selection 否 AudioSelectorHlsSelection object 设置Hls选择器 表10 AudioSelectorLangSelection 参数 是否必选 参数类型 描述 language_code 是 String 语言简称,输入2或3个小写字母的语言代码。 language_selection_policy 否 String 语言输出策略。 取值如下: LOOSE:宽松匹配,示例“eng”会优先匹配源流中语言为English的音轨,如果匹配不到,则选择PID最小的音轨。 STRICT:严格匹配,示例“eng”会严格匹配源流中语言为English的音轨,如果匹配不到,媒体直播服务会自动补齐一个静音分片,当终端使用此音频选择器播放视频时,会静音播放。 表11 AudioSelectorPidSelection 参数 是否必选 参数类型 描述 pid 是 Integer 设置PID的值 表12 AudioSelectorHlsSelection 参数 是否必选 参数类型 描述 name 是 String hls音频选择器名 group_id 是 String hls音频选择器gid
-
响应参数 状态码:200 表4 响应Body参数 参数 参数类型 描述 result_code String 错误码 result_msg String 错误描述 domain String 推流域名 app_name String 组名或应用名,为必填项 id String 频道ID。频道唯一标识,为必填项 sources Array of SourceRsp objects 推流URL列表。创建频道时,只有入流协议为RTMP_PUSH时,会返回推流URL列表 表5 SourceRsp 参数 参数类型 描述 url String RTMP推流地址 bitrate Integer 码率。 单位:bps。取值范围:(0,104,857,600](100Mbps) width Integer 分辨率对应宽的值。取值范围:0 - 4096(4K) height Integer 分辨率对应高的值。取值范围:0 - 2160(4K) enable_snapshot Boolean 描述是否使用该流做截图 状态码:400 表6 响应Body参数 参数 参数类型 描述 result_code String 错误码 result_msg String 错误描述 domain String 推流域名 app_name String 组名或应用名,为必填项 id String 频道ID。频道唯一标识,为必填项
-
响应示例 状态码:200 Demo Information { "result_code" : "LIVE.100000000", "result_msg" : "SUCCESS", "domain" : "push.testott.hls.com", "app_name" : "ott", "id" : "test"} 状态码:400 Error response { "result_code" : "LIVE.103011019", "result_msg" : "The resource to access is not exists", "domain" : "push.testott.hls.com", "app_name" : "ott", "id" : "test22"}
-
请求参数 表2 请求Header参数 参数 是否必选 参数类型 描述 X-Auth-Token 是 String 用户Token,使用Token鉴权方式时必选。通过调用IAM服务获取用户Token接口获取(响应消息头中X-Subject-Token的值)。 Access-Control-Allow-Internal 否 String 服务鉴权Token,服务开启鉴权,必须携带Access-Control-Allow-Internal访问服务。 Access-Control-Allow-External 否 String 服务鉴权Token,服务开启鉴权,必须携带Access-Control-Allow-External访问服务。 表3 请求Body参数 参数 是否必选 参数类型 描述 domain 是 String 频道推流域名 app_name 是 String 组名或应用名 id 是 String 频道ID。频道唯一标识,为必填项 name 是 String 频道名称
-
错误码 当您调用API时,如果遇到“APIGW”开头的错误码,请参见API网关错误码进行处理。 状态码 错误码 错误信息 描述 处理措施 400 LIVE.100011001 Invalid request parameter. 请求参数非法。 可能缺少必要参数,或者参数值格式不正确,具体错误信息请查看错误描述 error_detail 字段。 400 LIVE.100011004 The protocol is not supported. The API only supports the HTTPS protocol. 协议不支持,当前API仅支持https协议,不支持http协议 请使用https协议 400 LIVE.100011006 This API is not supported in this version or is in the maintenance state. 本版本内不支持此接口或该接口处于维护状态 请稍后重试或者联系客服人员帮忙解决 400 LIVE.100011008 The API is in the maintenance state. 当前接口处于停服维护状态 请稍后重试,或提交工单,申请技术客服协助解决问题 400 LIVE.100011009 The requested user does not exist. 请求用户不存在 请确认用户的输入信息是否正确 400 LIVE.100011011 The method specified in the request is not supported. 处理禁用请求中指定的方法 确认请求的http方法是否正确 400 LIVE.100011012 Unsupported media type. 不支持的媒体类型异常 提交工单,申请技术客服协助解决问题 400 LIVE.100011013 You have not completed real-name authentication. 用户没有实名认证 请先进行实名认证 400 LIVE.100011022 LIVE.Record task exist. 录制任务已存在 停止录制命令下发之后,再次对相同流下发开始录制命令,必须间隔10秒以上。 400 LIVE.103011018 The resource already exists. 资源已存在 确认要操作的资源是否已经存在 400 LIVE.103011020 The maximum number of domain names has been reached. 域名数量超过配额 超过租户最大域名添加上限,删除不必要的域名再添加;如确有必要超额添加,请提交工单申请技术客服审核 400 LIVE.103011021 Failed to access the database. 访问DB失败 提交工单,申请技术客服协助解决问题 400 LIVE.103011022 This operation is not allowed in the current state. 当前域名的状态不支持此操作 确认域名当前状态:非停用状态不可修改、删除 400 LIVE.103011024 The ICP number does not exist. 域名对应的ICP编号不存在 请检查ICP编号是否正确 400 LIVE.103011025 The approved ICP number cannot be modified. 审核通过的许可证号不允许修改 ICP编号在首次添加审核通过后不允许修改,如有修改必要请提交工单,申请技术客服协助解决问题 400 LIVE.103011026 The domain name is in the blacklist. 域名在黑名单网站中 更换合法注册的域名进行操作 400 LIVE.103011027 The domain name is in the blacklist. 域名在非法接入黑名单中 更换合法注册的域名进行操作 400 LIVE.103011029 The domain name is in gray configuration. 此域名存在灰度配置,配置下发失败 提交工单,申请技术客服协助解决问题 400 LIVE.103011030 This domain name has customized configuration. 此域名存在定制化配置,配置下发失败 提交工单,申请技术客服协助解决问题 401 LIVE.100011002 Identity authentication failed. 身份认证失败。 一般是由于签名计算错误导致的,请参考文档中签名方法部分。 401 LIVE.100011003 You do not have permission to access the API. 未授权访问接口 请联系主账号管理员开通接口权限 401 LIVE.100011014 Your account is not allowed to access the service, because it is frozen, deleted, or has insufficient balance. 用户当前状态不允许访问,比如冻结、删除、余额不足。 华为云账户异常,请确认是否处于欠费冻结或停用状态 401 LIVE.100011015 Project ID verification failed. projectID校验失败 确认请求中的项目ID及请求头部 403 LIVE.103011016 Invalid request content. 请求内容非法 请求参数不合规范 404 LIVE.103011019 The resource does not exist. 资源不存在 确认要操作的资源是否存在或租户账号信息是否正确 500 LIVE.100011000 Internal communication error. 内部服务器通信异常 提交工单,申请技术客服协助解决问题 500 LIVE.100011005 Internal server error. 服务器内部出现错误 请稍后重试或者联系客服人员帮忙解决 500 LIVE.100011007 The number of concurrent API requests exceeds the upper limit. 接口请求超过并发限制 提交工单,申请技术客服协助解决问题 500 LIVE.103011017 Failed to synchronize data to CDN. 同步数据到CDN失败 确认域名是否已经备案并向有关部门申请取得许可;如果确认域名合法依然失败,请提交工单,申请技术客服协助解决问题 500 LIVE.103011023 Failed to synchronize the domain name to GSLB. 同步域名到GSLB失败 提交工单,申请技术客服协助解决问题 500 LIVE.103011028 Failed to synchronize the domain name to DNS. 同步域名到DNS失败 提交工单,申请技术客服协助解决问题 父主题: 附录
-
操作步骤 获取用户Token,用于调用媒体直播接口时进行认证鉴权。 详细信息请参见构造请求。以“华北-北京四”为示例,若您需要调用其它区域的媒体直播接口,请替换成对应区域的IAM终端节点。 POST https://iam.cn-north-4.myhuaweicloud.com/v3/auth/tokensContent-Type: application/json{ "auth": { "identity": { "methods": [ "password" ], "password": { "user": { "name": "username", "password": "password", "domain": { "name": "domainname" } } } }, "scope": { "project": { "name": "projectname" } } }} 如图1所示,红框中的信息为获取用户Token。 图1 获取用户Token 选择POST请求方法,并输入请求URI。 POST https://live.cn-north-4.myhuaweicloud.com/v1/{project_id}/ott/channels “live.cn-north-4.myhuaweicloud.com”为媒体直播服务的终端节点,您可以在使用前必读中获取。 调用IAM接口的区域需与调用媒体直播接口的区域一致,如调用“cn-north-4”区域的IAM接口获取用户Token,则该Token仅能用于调用“cn-north-4”区域媒体直播接口的鉴权。 在请求消息头中增加“X-Auth-Token”,值设置为1中获取的用户Token。 在请求消息体中传入如下所示的参数,具体参数说明可参考新建OTT频道接口。 { "domain": "push.domain.com", "app_name": "ott", "id": "testChannel", "name": "testChannel", "input": { "input_protocol": "FLV_PULL", "sources": [ { "url": "http://push.domain.com/ott/testChannel/index.flv", "bitrate": 2048, "width": 2096, "height": 1024 } ] }, "record_settings": { "rollingbuffer_duration": 3600 }, "encoder_settings": [ { "template_id": "hd" } ], "endpoints": [ { "hls_package": [ { "url": "pull.domain.com/ott/testChannel/index.m3u8", "stream_selection": [ { "key": "bitrate=900000-1800000", "max_bandwidth": 1800000, "min_bandwidth": 900000 } ], "segment_duration_seconds": 4, "encryption": { "level": "content", "resource_id": "test", "system_ids": [ "FairPlay" ], "url": "http://IP:Port/tkm/v1/owner/Data", "speke_version": "1.0", "request_mode": "direct_http", "http_headers": [ { "key": "Authorization", "value": "Basic aHVhd2VpY********************XM1Qjd6" } ] } } ] } ], "state": "ON"} 请求响应成功后,无返回参数,状态码为201 Created。 若请求失败,返回如下所示的错误码及错误描述,状态码为400 Bad Request。 "result_code": "LIVE.100011001","result_msg": "Request parameters is invalid"
-
请求示例 PUT https://{endpoint}/v1/{project_id}/ott/channels/encorder-settings{ "domain" : "push.testott.hls.com", "app_name" : "ott", "id" : "test", "encoder_settings" : [ { "template_id" : "ld" } ]}
-
响应示例 状态码:200 Demo Information { "result_code" : "LIVE.100000000", "result_msg" : "SUCCESS", "domain" : "push.testott.hls.com", "app_name" : "ott", "id" : "test"} 状态码:400 Error response { "result_code" : "LIVE.103011019", "result_msg" : "The resource to access is not exists", "domain" : "push.testott.hls.com", "app_name" : "ott", "id" : "test2"}
-
请求参数 表2 请求Header参数 参数 是否必选 参数类型 描述 X-Auth-Token 是 String 用户Token,使用Token鉴权方式时必选。通过调用IAM服务获取用户Token接口获取(响应消息头中X-Subject-Token的值)。 Access-Control-Allow-Internal 否 String 服务鉴权Token,服务开启鉴权,必须携带Access-Control-Allow-Internal访问服务。 Access-Control-Allow-External 否 String 服务鉴权Token,服务开启鉴权,必须携带Access-Control-Allow-External访问服务。 表3 请求Body参数 参数 是否必选 参数类型 描述 domain 是 String 频道推流域名 app_name 是 String 组名或应用名 id 是 String 频道ID。频道唯一标识,为必填项 encoder_settings 否 Array of encoder_settings objects 转码模板配置 encoder_settings_expand 否 EncoderSettingsExpand object 音频输出配置 表4 encoder_settings 参数 是否必选 参数类型 描述 template_id 否 String 转码模板ID 表5 EncoderSettingsExpand 参数 是否必选 参数类型 描述 audio_descriptions 否 Array of audio_descriptions objects 音频输出配置的描述信息 表6 audio_descriptions 参数 是否必选 参数类型 描述 name 是 String 音频输出配置的名称。仅支持大小写字母,数字,中划线(-),下划线(_)。 同一个频道不同的音频输出配置名称,不允许重复。 audio_selector_name 是 String 音频选择器名称 language_code_control 否 String 语言代码控制。这里的设置不会修改音频实际的语言,只会修改音频对外展示的语言。 包含如下选项: FOLLOW_INPUT:如果所选音频选择器对应的输出音频有语言,则与其保持一致,否则会以这里配置的语言代码和流名称进行兜底。推荐当前选项,为默认值。 USE_CONFIGURED:用户根据实际情况自定义输出音频的语言和流名称。 language_code 否 String 语言代码,输入2或3个小写字母。 stream_name 否 String 流名称
-
响应参数 状态码:200 表7 响应Body参数 参数 参数类型 描述 result_code String 错误码 result_msg String 错误描述 domain String 推流域名 app_name String 组名或应用名,为必填项 id String 频道ID。频道唯一标识,为必填项 sources Array of SourceRsp objects 推流URL列表。创建频道时,只有入流协议为RTMP_PUSH时,会返回推流URL列表 表8 SourceRsp 参数 参数类型 描述 url String RTMP推流地址 bitrate Integer 码率。 单位:bps。取值范围:(0,104,857,600](100Mbps) width Integer 分辨率对应宽的值。取值范围:0 - 4096(4K) height Integer 分辨率对应高的值。取值范围:0 - 2160(4K) enable_snapshot Boolean 描述是否使用该流做截图 状态码:400 表9 响应Body参数 参数 参数类型 描述 result_code String 错误码 result_msg String 错误描述 domain String 推流域名 app_name String 组名或应用名,为必填项 id String 频道ID。频道唯一标识,为必填项
-
AK/SK认证 AK/SK签名认证方式仅支持消息体大小在12MB以内,12MB以上的请求请使用Token认证。 AK/SK认证就是使用AK/SK对请求进行签名,在请求时将签名信息添加到消息头,从而通过身份认证。 AK(Access Key ID):访问密钥ID。与私有访问密钥关联的唯一标识符;访问密钥ID和私有访问密钥一起使用,对请求进行加密签名。 SK(Secret Access Key):私有访问密钥。与访问密钥ID结合使用,对请求进行加密签名,可标识发送方,并防止请求被修改。 使用AK/SK认证时,您可以基于签名算法使用AK/SK对请求进行签名,也可以使用专门的签名SDK对请求进行签名。详细的签名方法和SDK使用方法请参见API签名指南。 签名SDK只提供签名功能,与服务提供的SDK不同,使用时请注意。
-
Token认证 Token的有效期为24小时,需要使用一个Token鉴权时,可以先缓存起来,避免频繁调用。 Token在计算机系统中代表令牌(临时)的意思,拥有Token就代表拥有某种权限。Token认证就是在调用API的时候将Token加到请求消息头中,从而通过身份认证,获得操作API的权限。Token可通过调用获取用户Token接口获取。 调用本服务API需要项目级别的Token,即调用获取用户Token接口时,请求body中auth.scope的取值需要选择project,如下所示。 { "auth": { "identity": { "methods": [ "password" ], "password": { "user": { "name": "username", //IAM用户名 "password": $ADMIN_PASS, //IAM用户密码,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全 "domain": { "name": "domainname" //IAM用户所属账号名 } } } }, "scope": { "project": { "name": "xxxxxxxx" //项目名称 } } }} 获取Token 后,再调用其他接口时,您需要在请求消息头中添加“X-Auth-Token”,其值即为Token。例如Token值为“ABCDEFJ....”,则调用接口时将“X-Auth-Token: ABCDEFJ....”加到请求消息头即可,如下所示。 123 POST https://iam.cn-north-4.myhuaweicloud.com/v3.0/OS-USER/usersContent-Type: application/jsonX-Auth-Token: ABCDEFJ.... 您还可以通过这个视频教程了解如何使用Token认证:https://bbs.huaweicloud.com/videos/101333。
-
请求示例 PUT https://{endpoint}/v1/{project_id}/ott/channels/record-settings{ "domain" : "push.testott.hls.com", "app_name" : "ott", "id" : "test", "record_settings" : { "rollingbuffer_duration" : 3600 }}
-
响应示例 状态码:200 Demo Information { "result_code" : "LIVE.100000000", "result_msg" : "SUCCESS", "domain" : "push.testott.hls.com", "app_name" : "ott", "id" : "test"} 状态码:400 Error response { "result_code" : "LIVE.103011019", "result_msg" : "The resource to access is not exists", "domain" : "push.testott.hls.com", "app_name" : "ott", "id" : "test2"}
-
状态码 调用 视频直播 API时,可能返回的状态码如表1所示。 表1 状态码 返回值 说明 200 OK 请求正常。 201 Created 创建类的请求完全成功。 202 Accepted 已经接受请求,但未处理完成。 204 No Content 请求完全成功,同时HTTP响应不包含响应体。 400 Bad Request 非法请求。 建议直接修改该请求,不要重试该请求。 401 Unauthorized 在客户端提供认证信息后,返回该状态码,表明服务端指出客户端所提供的认证信息不正确或非法。 403 Forbidden 请求被拒绝访问。 返回该状态码,表明请求能够到达服务端,且服务端能够理解用户请求,但是拒绝做更多的事情,因为该请求被设置为拒绝访问,建议直接修改该请求,不要重试该请求。 404 Not Found 所请求的资源不存在。 建议直接修改该请求,不要重试该请求。 405 Method Not Allowed 请求中带有该资源不支持的方法。 建议直接修改该请求,不要重试该请求。 406 Not Acceptable 服务器无法根据客户端请求的内容特性完成请求。 407 Proxy Authentication Required 请求要求代理的身份认证,与401类似,但请求者应当使用代理进行授权。 408 Request Timeout 服务器等候请求时发生超时。 客户端可以随时再次提交该请求而无需进行任何更改。 409 Conflict 服务器在完成请求时发生冲突。 返回该状态码,表明客户端尝试创建的资源已经存在,或者由于冲突请求的更新操作不能被完成。 500 Internal Server Error 表明服务端能被请求访问到,但是不能理解用户的请求。 501 Not Implemented 服务器不支持请求的功能,无法完成请求。 502 Bad Gateway 充当网关或代理的服务器,从远端服务器接收到了一个无效的请求。 503 Service Unavailable 被请求的服务无效。 建议直接修改该请求,不要重试该请求。 504 Gateway Timeout 网关超时。 父主题: 附录
-
功能特性 华为云媒体直播提供了创建媒体直播转码模板、创建频道等功能,广泛地用于直播业务的PGC平台等场景。具体如表1所示。 表1 功能特性 类别 特性名称 特性说明 直播控制台 总览 支持查看直播的今日下行流量、下行带宽峰值等数据。 支持变更直播的CDN计费模式。 域名管理 支持新增、删除、停用、启用媒体直播推流域名和播放域名。 频道管理 支持创建、启用、修改、停用、删除频道。 直播转码 支持创建、修改、删除媒体直播转码模板。 业务监控 支持查看播放域名的监控信息,包括下行带宽/流量、请求响应返回的所有状态码和下行并发数。 云资源授权 如果频道需要开启DRM加密,且“对接模式”设置为“FunctionGraph代理访问”,需要提前开启FunctionGraph资源委托授权。授权成功后,媒体直播服务才能查询用户的函数、工作流、触发器,并调用函数。 回看和时移地址生成 支持获取频道回看和时移地址,回看频道历史播放内容。
-
响应参数 状态码:200 表5 响应Body参数 参数 参数类型 描述 result_code String 错误码 result_msg String 错误描述 domain String 推流域名 app_name String 组名或应用名,为必填项 id String 频道ID。频道唯一标识,为必填项 状态码:400 表6 响应Body参数 参数 参数类型 描述 result_code String 错误码 result_msg String 错误描述 domain String 推流域名 app_name String 组名或应用名,为必填项 id String 频道ID。频道唯一标识,为必填项
-
请求参数 表2 请求Header参数 参数 是否必选 参数类型 描述 X-Auth-Token 是 String 用户Token,使用Token鉴权方式时必选。通过调用IAM服务获取用户Token接口获取(响应消息头中X-Subject-Token的值)。 Access-Control-Allow-Internal 否 String 服务鉴权Token,服务开启鉴权,必须携带Access-Control-Allow-Internal访问服务。 Access-Control-Allow-External 否 String 服务鉴权Token,服务开启鉴权,必须携带Access-Control-Allow-External访问服务。 表3 请求Body参数 参数 是否必选 参数类型 描述 domain 是 String 频道推流域名 app_name 是 String 组名或应用名 id 是 String 频道ID。频道唯一标识,为必填项 record_settings 否 record_settings object 回看录制的配置信息。 表4 record_settings 参数 是否必选 参数类型 描述 rollingbuffer_duration 否 Integer 最大回看录制时长。在此时间段内会连续不断的录制,为必选项 单位:秒。取值为“0”时,表示不支持录制;最大支持录制14天。
-
应用场景 广播电视直播 助力广电与运营商媒资上云,提供7*24小时的广播级直播体验。同等画质下提供更高的压缩率、更优的用户体验和更低的分发成本,且全球覆盖的CDN节点能更好地覆盖直播。 大型赛事直播 支持本地覆盖直播流量高地,加上广覆盖的CDN节点,有助于实现跨境直播、大型直播赛事等流量突发场景。支持SRT弱网传输,通过实时打包封装提供码率自适应播放,支持覆盖多终端。 影视娱乐直播 基于强大的实时转码能力支持高码率、高帧率影视大片直播,基于DRM加密和数字水印技术支持高价值媒资内容的版权保护。 基于SSAI广告插入能力支持FAST服务,有助于商业变现。
-
概述 视频直播服务为您提供了Referer防盗链、Key防盗链和IP黑白名单鉴权机制,对访问者的身份进行识别和过滤,符合规则的才可使用直播服务。 其中,Key防盗链鉴权功能旨在保护直播源站资源不被非法下载盗用。采用Referer防盗链方法添加Referer黑、白名单方式可以解决部分盗链问题。但是,由于Referer内容可以伪造,所以Referer防盗链方式不能很好的保护直播源站的资源。因此,建议采用Key防盗链鉴权方式保护直播源站资源更为安全有效。视频直播服务鉴权机制如表1所示。 表1 直播鉴权 项目 描述 配置 Referer防盗链 您可以配置访问的Referer黑白名单,对访问者身份进行识别和过滤。 请参见Referer防盗链。 Key防盗链 您可以配置防盗链Key,通过URL鉴权方式保障直播资源的安全。 请参见Key防盗链。 IP黑白名单 您可以配置访问的IP黑白名单,对访问者身份进行识别和过滤。 请参见IP黑白名单。 父主题: 播放鉴权
-
管理频道 频道新增完成后,您还可以根据实际需要进行如下操作。 启用频道 频道创建完成后,若您需要使用,请单击操作列的“启动”,启用频道。 停用频道 如果频道需要停止,请单击操作列的“停止”,停用频道。 修改频道配置 如果需要修改频道,请单击操作列的“管理”,修改频道的配置项。如果修改的频道是启用状态,那么修改完成后,自动重启,重启耗时约30s。频道重启过程中,音视频流会中断,待重启完成后,自动恢复。 删除频道 如果频道需要删除,需要先停用,再单击操作列的“删除”,删除频道。
-
注意事项 一个租户最多支持创建500个频道。如果有更多的频道需求,请提交工单扩容。 所有频道仅支持单码率入流,且必须经过转码后,才能提供多码率出流。 RTMP_PUSH类型的频道需要配置RTMP协议的推流域名。SRT_PUSH类型的频道需要配置SRT协议的推流域名。 所以同一个域名,不支持同时创建“SRT_PUSH”和“RTMP_PUSH”类型的频道。 “SRT_PUSH”输入类型的频道,为了保障可靠性,必须满足下述条件: “SRT_PUSH”输入类型的频道支持主备双URL,编码器要同时向主备双URL推流。 如果编码器支持streamid,默认只返回一个输入URL,示例如图1所示。 如果需要主备Region同时双推,请提交工单处理。 图1 频道详情 如果编码器不支持streamid,会同时返回主备输入URL,示例如图2所示。 图2 频道详情 编码器推流断链时,需具备主动重推能力。建议断链重推周期小于一个分片时长。 频道DRM加密使用FunctionGraph函数时,不会携带FunctionGraph版本信息,默认使用最新版本。 如果DRM故障会返回404。 基于可靠性考虑,如果您针对HLS_PULL/SRT_PULL类型频道配置了备拉流地址,针对SRT_PUSH频道对备入流进行了推流的情况下,我们会同步在备Region进行转码并产生相应转码计费。
-
产品特性 支持主流多协议主备流输入 支持多种媒体入流协议RTMP、SRT、HLS、FLV。支持为每一个传输流提供主备输入地址,保证传输流的稳定可靠。 支持高质量转码 为客户提供多分辨率、多码率、多帧率的转码功能。支持H.264、H.265,提供标准转码和高清低码,支持在同等画质基础上提供更低码率,有效提升用户体验,降低分发成本。 支持多协议实时转封装输出 提供直播、回看与时移服务,支持多协议HLS、DASH、MSS输出。关联转码模板进行实时打包,实现自适应码率分发。 结合VOD源站提供live-to-VOD服务,实现精彩赛事等录制内容永久保存和多渠道分发。 支持DRM数字版权保护 支持主流加密方案Fairplay、Widevine、PlayReady和MultiDRM,确保用户高价值媒资内容不泄露。 支持SSAI广告插入和广告跟踪(公测中) 支持服务端线性广告pre-roll、mid-roll插入能力。基于弹性服务架构,提供无缝衔接与低延迟的广告体验和精准的广告跟踪服务。 流质量监控 支持频道维度的分钟级入流质量监控能力,方便用户实时监控流质量。支持查看下行流量、下行带宽、状态码和下行并发数。
-
鉴权方式B 鉴权方式B主要通过Key、timestamp和StreamName计算鉴权串。 鉴权URL格式 原始URL?txSecret=md5(Key + StreamName + txTime)&txTime=hex(timestamp) 表3 鉴权字段描述 字段 描述 txTime 播放URL的有效时间,为Unix时间戳的十六进制结果。 如果当前txTime的值大于当前请求的时间则可以正常播放,否则播放会被后台拒绝。 示例:5eed5888(即2020.06.20 08:30:00) Key 在控制台设置的防盗链Key值,具体请参见开启Key防盗链。 txSecret URL中的加密参数。 通过将key,StreamName,txTime依次拼接的字符串进行MD5加密算法得出。 txSecret = md5(Key + StreamName + txTime) 时长 鉴权URL的有效时间长度。 若txTime设置为当前时间,有效时间设置为1249s,则播放URL过期时间为当前时间+ 1249s。 鉴权URL示例 以生成播放鉴权地址为例,推流鉴权地址的生成与播放鉴权地址的生成同理。 原始URL:http://test-play.example.com/livetest/huawei1.flvKey:GCTbw44s6MPLh4GqgDpnfuFHgy25EnlyStreamName:huawei1txTime:5eed5888时长:1249s 根据计算公式,得到txSecret。 txSecret = md5(GCTbw44s6MPLh4GqgDpnfuFHgy25Enlyhuawei15eed5888) = 5cdc845362c332a4ec3e09ac5d5571d6 则鉴权播放地址为: http://test-play.example.com/livetest/huawei1.flv?txSecret=5cdc845362c332a4ec3e09ac5d5571d6&txTime=5eed5888
共99354条
- 1
- ...
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
- 91
- 92
- 93
- 94
- 95
- 96
- 97
- 98
- 99
- 100
- 101
- 102
- 103
- 104
- 105
- 106
- 107
- 108
- 109
- 110
- 111
- 112
- 113
- 114
- 115
- 116
- 117
- 118
- 119
- 120
- 121
- 122
- 123
- 124
- 125
- 126
- 127
- 128
- 129
- 130
- 131
- 132
- 133
- 134
- 135
- 136
- 137
- 138
- 139
- 140
- 141
- 142
- 143
- 144
- 145
- 146
- 147
- 148
- 149
- 150
- 151
- 152
- 153
- 154
- 155
- 156
- 157
- 158
- 159
- 160
- 161
- 162
- 163
- 164
- 165
- 166
- 167
- 168
- 169
- 170
- 171
- 172
- 173
- 174
- 175
- 176
- 177
- 178
- 179
- 180
- 181
- 182
- 183
- 184
- 185
- 186
- 187
- 188
- 189
- 190
- 191
- 192
- 193
- 194
- 195
- 196
- 197
- 198
- 199
- 200
- 201
- 202
- 203
- 204
- 205
- 206
- 207
- 208
- 209
- 210
- 211
- 212
- 213
- 214
- 215
- 216
- 217
- 218
- 219
- 220
- 221
- 222
- 223
- 224
- 225
- 226
- 227
- 228
- 229
- 230
- 231
- 232
- 233
- 234
- 235
- 236
- 237
- 238
- 239
- 240
- 241
- 242
- 243
- 244
- 245
- 246
- 247
- 248
- 249
- 250
- 251
- 252
- 253
- 254
- 255
- 256
- 257
- 258
- 259
- 260
- 261
- 262
- 263
- 264
- 265
- 266
- 267
- 268
- 269
- 270
- 271
- 272
- 273
- 274
- 275
- 276
- 277
- 278
- 279
- 280
- 281
- 282
- 283
- 284
- 285
- 286
- 287
- 288
- 289
- 290
- 291
- 292
- 293
- 294
- 295
- 296
- 297
- 298
- 299
- 300
- 301
- 302
- 303
- 304
- 305
- 306
- 307
- 308
- 309
- 310
- 311
- 312
- 313
- 314
- 315
- 316
- 317
- 318
- 319
- 320
- 321
- 322
- 323
- 324
- 325
- 326
- 327
- 328
- 329
- 330
- 331
- 332
- 333
- 334
- 335
- 336
- 337
- 338
- 339
- 340
- 341
- 342
- 343
- 344
- 345
- 346
- 347
- 348
- 349
- 350
- 351
- 352
- 353
- 354
- 355
- 356
- 357
- 358
- 359
- 360
- 361
- 362
- 363
- 364
- 365
- 366
- 367
- 368
- 369
- 370
- 371
- 372
- 373
- 374
- 375
- 376
- 377
- 378
- 379
- 380
- 381
- 382
- 383
- 384
- 385
- 386
- 387
- 388
- 389
- 390
- 391
- 392
- 393
- 394
- 395
- 396
- 397
- 398
- 399
- 400
- 401
- 402
- 403
- 404
- 405
- 406
- 407
- 408
- 409
- 410
- 411
- 412
- 413
- 414
- 415
- 416
- 417
- 418
- 419
- 420
- 421
- 422
- 423
- 424
- 425
- 426
- 427
- 428
- 429
- 430
- 431
- 432
- 433
- 434
- 435
- 436
- 437
- 438
- 439
- 440
- 441
- 442
- 443
- 444
- 445
- 446
- 447
- 448
- 449
- 450
- 451
- 452
- 453
- 454
- 455
- 456
- 457
- 458
- 459
- 460
- 461
- 462
- 463
- 464
- 465
- 466
- 467
- 468
- 469
- 470
- 471
- 472
- 473
- 474
- 475
- 476
- 477
- 478
- 479
- 480
- 481
- 482
- 483
- 484
- 485
- 486
- 487
- 488
- 489
- 490
- 491
- 492
- 493
- 494
- 495
- 496
- 497
- 498
- 499
- 500
- 501
- 502
- 503
- 504
- 505
- 506
- 507
- 508
- 509
- 510
- 511
- 512
- 513
- 514
- 515
- 516
- 517
- 518
- 519
- 520
- 521
- 522
- 523
- 524
- 525
- 526
- 527
- 528
- 529
- 530
- 531
- 532
- 533
- 534
- 535
- 536
- 537
- 538
- 539
- 540
- 541
- 542
- 543
- 544
- 545
- 546
- 547
- 548
- 549
- 550
- 551
- 552
- 553
- 554
- 555
- 556
- 557
- 558
- 559
- 560
- 561
- 562
- 563
- 564
- 565
- 566
- 567
- 568
- 569
- 570
- 571
- 572
- 573
- 574
- 575
- 576
- 577
- 578
- 579
- 580
- 581
- 582
- 583
- 584
- 585
- 586
- 587
- 588
- 589
- 590
- 591
- 592
- 593
- 594
- 595
- 596
- 597
- 598
- 599
- 600
- 601
- 602
- 603
- 604
- 605
- 606
- 607
- 608
- 609
- 610
- 611
- 612
- 613
- 614
- 615
- 616
- 617
- 618
- 619
- 620
- 621
- 622
- 623
- 624
- 625
- 626
- 627
- 628
- 629
- 630
- 631
- 632
- 633
- 634
- 635
- 636
- 637
- 638
- 639
- 640
- 641
- 642
- 643
- 644
- 645
- 646
- 647
- 648
- 649
- 650
- 651
- 652
- 653
- 654
- 655
- 656
- 657
- 658
- 659
- 660
- 661
- 662
- 663
- 664
- 665
- 666
- 667
- 668
- 669
- 670
- 671
- 672
- 673
- 674
- 675
- 676
- 677
- 678
- 679
- 680
- 681
- 682
- 683
- 684
- 685
- 686
- 687
- 688
- 689
- 690
- 691
- 692
- 693
- 694
- 695
- 696
- 697
- 698
- 699
- 700
- 701
- 702
- 703
- 704
- 705
- 706
- 707
- 708
- 709
- 710
- 711
- 712
- 713
- 714
- 715
- 716
- 717
- 718
- 719
- 720
- 721
- 722
- 723
- 724
- 725
- 726
- 727
- 728
- 729
- 730
- 731
- 732
- 733
- 734
- 735
- 736
- 737
- 738
- 739
- 740
- 741
- 742
- 743
- 744
- 745
- 746
- 747
- 748
- 749
- 750
- 751
- 752
- 753
- 754
- 755
- 756
- 757
- 758
- 759
- 760
- 761
- 762
- 763
- 764
- 765
- 766
- 767
- 768
- 769
- 770
- 771
- 772
- 773
- 774
- 775
- 776
- 777
- 778
- 779
- 780
- 781
- 782
- 783
- 784
- 785
- 786
- 787
- 788
- 789
- 790
- 791
- 792
- 793
- 794
- 795
- 796
- 797
- 798
- 799
- 800
- 801
- 802
- 803
- 804
- 805
- 806
- 807
- 808
- 809
- 810
- 811
- 812
- 813
- 814
- 815
- 816
- 817
- 818
- 819
- 820
- 821
- 822
- 823
- 824
- 825
- 826
- 827
- 828
- 829
- 830
- 831
- 832
- 833
- 834
- 835
- 836
- 837
- 838
- 839
- 840
- 841
- 842
- 843
- 844
- 845
- 846
- 847
- 848
- 849
- 850
- 851
- 852
- 853
- 854
- 855
- 856
- 857
- 858
- 859
- 860
- 861
- 862
- 863
- 864
- 865
- 866
- 867
- 868
- 869
- 870
- 871
- 872
- 873
- 874
- 875
- 876
- 877
- 878
- 879
- 880
- 881
- 882
- 883
- 884
- 885
- 886
- 887
- 888
- 889
- 890
- 891
- 892
- 893
- 894
- 895
- 896
- 897
- 898
- 899
- 900
- 901
- 902
- 903
- 904
- 905
- 906
- 907
- 908
- 909
- 910
- 911
- 912
- 913
- 914
- 915
- 916
- 917
- 918
- 919
- 920
- 921
- 922
- 923
- 924
- 925
- 926
- 927
- 928
- 929
- 930
- 931
- 932
- 933
- 934
- 935
- 936
- 937
- 938
- 939
- 940
- 941
- 942
- 943
- 944
- 945
- 946
- 947
- 948
- 949
- 950
- 951
- 952
- 953
- 954
- 955
- 956
- 957
- 958
- 959
- 960
- 961
- 962
- 963
- 964
- 965
- 966
- 967
- 968
- 969
- 970
- 971
- 972
- 973
- 974
- 975
- 976
- 977
- 978
- 979
- 980
- 981
- 982
- 983
- 984
- 985
- 986
- 987
- 988
- 989
- 990
- 991
- 992
- 993
- 994
- 995
- 996
- 997
- 998
- 999
- 1000
- 1001
- 1002
- 1003
- 1004
- 1005
- 1006
- 1007
- 1008
- 1009
- 1010
- 1011
- 1012
- 1013
- 1014
- 1015
- 1016
- 1017
- 1018
- 1019
- 1020
- 1021
- 1022
- 1023
- 1024
- 1025
- 1026
- 1027
- 1028
- 1029
- 1030
- 1031
- 1032
- 1033
- 1034
- 1035
- 1036
- 1037
- 1038
- 1039
- 1040
- 1041
- 1042
- 1043
- 1044
- 1045
- 1046
- 1047
- 1048
- 1049
- 1050
- 1051
- 1052
- 1053
- 1054
- 1055
- 1056
- 1057
- 1058
- 1059
- 1060
- 1061
- 1062
- 1063
- 1064
- 1065
- 1066
- 1067
- 1068
- 1069
- 1070
- 1071
- 1072
- 1073
- 1074
- 1075
- 1076
- 1077
- 1078
- 1079
- 1080
- 1081
- 1082
- 1083
- 1084
- 1085
- 1086
- 1087
- 1088
- 1089
- 1090
- 1091
- 1092
- 1093
- 1094
- 1095
- 1096
- 1097
- 1098
- 1099
- 1100
- 1101
- 1102
- 1103
- 1104
- 1105
- 1106
- 1107
- 1108
- 1109
- 1110
- 1111
- 1112
- 1113
- 1114
- 1115
- 1116
- 1117
- 1118
- 1119
- 1120
- 1121
- 1122
- 1123
- 1124
- 1125
- 1126
- 1127
- 1128
- 1129
- 1130
- 1131
- 1132
- 1133
- 1134
- 1135
- 1136
- 1137
- 1138
- 1139
- 1140
- 1141
- 1142
- 1143
- 1144
- 1145
- 1146
- 1147
- 1148
- 1149
- 1150
- 1151
- 1152
- 1153
- 1154
- 1155
- 1156
- 1157
- 1158
- 1159
- 1160
- 1161
- 1162
- 1163
- 1164
- 1165
- 1166
- 1167
- 1168
- 1169
- 1170
- 1171
- 1172
- 1173
- 1174
- 1175
- 1176
- 1177
- 1178
- 1179
- 1180
- 1181
- 1182
- 1183
- 1184
- 1185
- 1186
- 1187
- 1188
- 1189
- 1190
- 1191
- 1192
- 1193
- 1194
- 1195
- 1196
- 1197
- 1198
- 1199
- 1200
- 1201
- 1202
- 1203
- 1204
- 1205
- 1206
- 1207
- 1208
- 1209
- 1210
- 1211
- 1212
- 1213
- 1214
- 1215
- 1216
- 1217
- 1218
- 1219
- 1220
- 1221
- 1222
- 1223
- 1224
- 1225
- 1226
- 1227
- 1228
- 1229
- 1230
- 1231
- 1232
- 1233
- 1234
- 1235
- 1236
- 1237
- 1238
- 1239
- 1240
- 1241
- 1242
- 1243
- 1244
- 1245
- 1246
- 1247
- 1248
- 1249
- 1250
- 1251
- 1252
- 1253
- 1254
- 1255
- 1256
- 1257
- 1258
- 1259
- 1260
- 1261
- 1262
- 1263
- 1264
- 1265
- 1266
- 1267
- 1268
- 1269
- 1270
- 1271
- 1272
- 1273
- 1274
- 1275
- 1276
- 1277
- 1278
- 1279
- 1280
- 1281
- 1282
- 1283
- 1284
- 1285
- 1286
- 1287
- 1288
- 1289
- 1290
- 1291
- 1292
- 1293
- 1294
- 1295
- 1296
- 1297
- 1298
- 1299
- 1300
- 1301
- 1302
- 1303
- 1304
- 1305
- 1306
- 1307
- 1308
- 1309
- 1310
- 1311
- 1312
- 1313
- 1314
- 1315
- 1316
- 1317
- 1318
- 1319
- 1320
- 1321
- 1322
- 1323
- 1324
- 1325
- 1326
- 1327
- 1328
- 1329
- 1330
- 1331
- 1332
- 1333
- 1334
- 1335
- 1336
- 1337
- 1338
- 1339
- 1340
- 1341
- 1342
- 1343
- ...
- 1344
- 1345
- 1346
- 1347
- 1348
- 1349
- 1350
- 1351
- 1352
- 1353
- 1354
- 1355
- 1356
- 1357
- 1358
- 1359
- 1360
- 1361
- 1362
- 1363
- 1364
- 1365
- 1366
- 1367
- 1368
- 1369
- 1370
- 1371
- 1372
- 1373
- 1374
- 1375
- 1376
- 1377
- 1378
- 1379
- 1380
- 1381
- 1382
- 1383
- 1384
- 1385
- 1386
- 1387
- 1388
- 1389
- 1390
- 1391
- 1392
- 1393
- 1394
- 1395
- 1396
- 1397
- 1398
- 1399
- 1400
- 1401
- 1402
- 1403
- 1404
- 1405
- 1406
- 1407
- 1408
- 1409
- 1410
- 1411
- 1412
- 1413
- 1414
- 1415
- 1416
- 1417
- 1418
- 1419
- 1420
- 1421
- 1422
- 1423
- 1424
- 1425
- 1426
- 1427
- 1428
- 1429
- 1430
- 1431
- 1432
- 1433
- 1434
- 1435
- 1436
- 1437
- 1438
- 1439
- 1440
- 1441
- 1442
- 1443
- 1444
- 1445
- 1446
- 1447
- 1448
- 1449
- 1450
- 1451
- 1452
- 1453
- 1454
- 1455
- 1456
- 1457
- 1458
- 1459
- 1460
- 1461
- 1462
- 1463
- 1464
- 1465
- 1466
- 1467
- 1468
- 1469
- 1470
- 1471
- 1472
- 1473
- 1474
- 1475
- 1476
- 1477
- 1478
- 1479
- 1480
- 1481
- 1482
- 1483
- 1484
- 1485
- 1486
- 1487
- 1488
- 1489
- 1490
- 1491
- 1492
- 1493
- 1494
- 1495
- 1496
- 1497
- 1498
- 1499
- 1500
- 1501
- 1502
- 1503
- 1504
- 1505
- 1506
- 1507
- 1508
- 1509
- 1510
- 1511
- 1512
- 1513
- 1514
- 1515
- 1516
- 1517
- 1518
- 1519
- 1520
- 1521
- 1522
- 1523
- 1524
- 1525
- 1526
- 1527
- 1528
- 1529
- 1530
- 1531
- 1532
- 1533
- 1534
- 1535
- 1536
- 1537
- 1538
- 1539
- 1540
- 1541
- 1542
- 1543
- 1544
- 1545
- 1546
- 1547
- 1548
- 1549
- 1550
- 1551
- 1552
- 1553
- 1554
- 1555
- 1556
- 1557
- 1558
- 1559
- 1560
- 1561
- 1562
- 1563
- 1564
- 1565
- 1566
- 1567
- 1568
- 1569
- 1570
- 1571
- 1572
- 1573
- 1574
- 1575
- 1576
- 1577
- 1578
- 1579
- 1580
- 1581
- 1582
- 1583
- 1584
- 1585
- 1586
- 1587
- 1588
- 1589
- 1590
- 1591
- 1592
- 1593
- 1594
- 1595
- 1596
- 1597
- 1598
- 1599
- 1600
- 1601
- 1602
- 1603
- 1604
- 1605
- 1606
- 1607
- 1608
- 1609
- 1610
- 1611
- 1612
- 1613
- 1614
- 1615
- 1616
- 1617
- 1618
- 1619
- 1620
- 1621
- 1622
- 1623
- 1624
- 1625
- 1626
- 1627
- 1628
- 1629
- 1630
- 1631
- 1632
- 1633
- 1634
- 1635
- 1636
- 1637
- 1638
- 1639
- 1640
- 1641
- 1642
- 1643
- 1644
- 1645
- 1646
- 1647
- 1648
- 1649
- 1650
- 1651
- 1652
- 1653
- 1654
- 1655
- 1656
- 1657
- 1658
- 1659
- 1660
- 1661
- 1662
- 1663
- 1664
- 1665
- 1666
- 1667
- 1668
- 1669
- 1670
- 1671
- 1672
- 1673
- 1674
- 1675
- 1676
- 1677
- 1678
- 1679
- 1680
- 1681
- 1682
- 1683
- 1684
- 1685
- 1686
- 1687
- 1688
- 1689
- 1690
- 1691
- 1692
- 1693
- 1694
- 1695
- 1696
- 1697
- 1698
- 1699
- 1700
- 1701
- 1702
- 1703
- 1704
- 1705
- 1706
- 1707
- 1708
- 1709
- 1710
- 1711
- 1712
- 1713
- 1714
- 1715
- 1716
- 1717
- 1718
- 1719
- 1720
- 1721
- 1722
- 1723
- 1724
- 1725
- 1726
- 1727
- 1728
- 1729
- 1730
- 1731
- 1732
- 1733
- 1734
- 1735
- 1736
- 1737
- 1738
- 1739
- 1740
- 1741
- 1742
- 1743
- 1744
- 1745
- 1746
- 1747
- 1748
- 1749
- 1750
- 1751
- 1752
- 1753
- 1754
- 1755
- 1756
- 1757
- 1758
- 1759
- 1760
- 1761
- 1762
- 1763
- 1764
- 1765
- 1766
- 1767
- 1768
- 1769
- 1770
- 1771
- 1772
- 1773
- 1774
- 1775
- 1776
- 1777
- 1778
- 1779
- 1780
- 1781
- 1782
- 1783
- 1784
- 1785
- 1786
- 1787
- 1788
- 1789
- 1790
- 1791
- 1792
- 1793
- 1794
- 1795
- 1796
- 1797
- 1798
- 1799
- 1800
- 1801
- 1802
- 1803
- 1804
- 1805
- 1806
- 1807
- 1808
- 1809
- 1810
- 1811
- 1812
- 1813
- 1814
- 1815
- 1816
- 1817
- 1818
- 1819
- 1820
- 1821
- 1822
- 1823
- 1824
- 1825
- 1826
- 1827
- 1828
- 1829
- 1830
- 1831
- 1832
- 1833
- 1834
- 1835
- 1836
- 1837
- 1838
- 1839
- 1840
- 1841
- 1842
- 1843
- 1844
- 1845
- 1846
- 1847
- 1848
- 1849
- 1850
- 1851
- 1852
- 1853
- 1854
- 1855
- 1856
- 1857
- 1858
- 1859
- 1860
- 1861
- 1862
- 1863
- 1864
- 1865
- 1866
- 1867
- 1868
- 1869
- 1870
- 1871
- 1872
- 1873
- 1874
- 1875
- 1876
- 1877
- 1878
- 1879
- 1880
- 1881
- 1882
- 1883
- 1884
- 1885
- 1886
- 1887
- 1888
- 1889
- 1890
- 1891
- 1892
- 1893
- 1894
- 1895
- 1896
- 1897
- 1898
- 1899
- 1900
- 1901
- 1902
- 1903
- 1904
- 1905
- 1906
- 1907
- 1908
- 1909
- 1910
- 1911
- 1912
- 1913
- 1914
- 1915
- 1916
- 1917
- 1918
- 1919
- 1920
- 1921
- 1922
- 1923
- 1924
- 1925
- 1926
- 1927
- 1928
- 1929
- 1930
- 1931
- 1932
- 1933
- 1934
- 1935
- 1936
- 1937
- 1938
- 1939
- 1940
- 1941
- 1942
- 1943
- 1944
- 1945
- 1946
- 1947
- 1948
- 1949
- 1950
- 1951
- 1952
- 1953
- 1954
- 1955
- 1956
- 1957
- 1958
- 1959
- 1960
- 1961
- 1962
- 1963
- 1964
- 1965
- 1966
- 1967
- 1968
- 1969
- 1970
- 1971
- 1972
- 1973
- 1974
- 1975
- 1976
- 1977
- 1978
- 1979
- 1980
- 1981
- 1982
- 1983
- 1984
- 1985
- 1986
- 1987
- 1988
- 1989
- 1990
- 1991
- 1992
- 1993
- 1994
- 1995
- 1996
- 1997
- 1998
- 1999
- 2000
- 2001
- 2002
- 2003
- 2004
- 2005
- 2006
- 2007
- 2008
- 2009
- 2010
- 2011
- 2012
- 2013
- 2014
- 2015
- 2016
- 2017
- 2018
- 2019
- 2020
- 2021
- 2022
- 2023
- 2024
- 2025
- 2026
- 2027
- 2028
- 2029
- 2030
- 2031
- 2032
- 2033
- 2034
- 2035
- 2036
- 2037
- 2038
- 2039
- 2040
- 2041
- 2042
- 2043
- 2044
- 2045
- 2046
- 2047
- 2048
- 2049
- 2050
- 2051
- 2052
- 2053
- 2054
- 2055
- 2056
- 2057
- 2058
- 2059
- 2060
- 2061
- 2062
- 2063
- 2064
- 2065
- 2066
- 2067
- 2068
- 2069
- 2070
- 2071
- 2072
- 2073
- 2074
- 2075
- 2076
- 2077
- 2078
- 2079
- 2080
- 2081
- 2082
- 2083
- 2084
- 2085
- 2086
- 2087
- 2088
- 2089
- 2090
- 2091
- 2092
- 2093
- 2094
- 2095
- 2096
- 2097
- 2098
- 2099
- 2100
- 2101
- 2102
- 2103
- 2104
- 2105
- 2106
- 2107
- 2108
- 2109
- 2110
- 2111
- 2112
- 2113
- 2114
- 2115
- 2116
- 2117
- 2118
- 2119
- 2120
- 2121
- 2122
- 2123
- 2124
- 2125
- 2126
- 2127
- 2128
- 2129
- 2130
- 2131
- 2132
- 2133
- 2134
- 2135
- 2136
- 2137
- 2138
- 2139
- 2140
- 2141
- 2142
- 2143
- 2144
- 2145
- 2146
- 2147
- 2148
- 2149
- 2150
- 2151
- 2152
- 2153
- 2154
- 2155
- 2156
- 2157
- 2158
- 2159
- 2160
- 2161
- 2162
- 2163
- 2164
- 2165
- 2166
- 2167
- 2168
- 2169
- 2170
- 2171
- 2172
- 2173
- 2174
- 2175
- 2176
- 2177
- 2178
- 2179
- 2180
- 2181
- 2182
- 2183
- 2184
- 2185
- 2186
- 2187
- 2188
- 2189
- 2190
- 2191
- 2192
- 2193
- 2194
- 2195
- 2196
- 2197
- 2198
- 2199
- 2200
- 2201
- 2202
- 2203
- 2204
- 2205
- 2206
- 2207
- 2208
- 2209
- 2210
- 2211
- 2212
- 2213
- 2214
- 2215
- 2216
- 2217
- 2218
- 2219
- 2220
- 2221
- 2222
- 2223
- 2224
- 2225
- 2226
- 2227
- 2228
- 2229
- 2230
- 2231
- 2232
- 2233
- 2234
- 2235
- 2236
- 2237
- 2238
- 2239
- 2240
- 2241
- 2242
- 2243
- 2244
- 2245
- 2246
- 2247
- 2248
- 2249
- 2250
- 2251
- 2252
- 2253
- 2254
- 2255
- 2256
- 2257
- 2258
- 2259
- 2260
- 2261
- 2262
- 2263
- 2264
- 2265
- 2266
- 2267
- 2268
- 2269
- 2270
- 2271
- 2272
- 2273
- 2274
- 2275
- 2276
- 2277
- 2278
- 2279
- 2280
- 2281
- 2282
- 2283
- 2284
- 2285
- 2286
- 2287
- 2288
- 2289
- 2290
- 2291
- 2292
- 2293
- 2294
- 2295
- 2296
- 2297
- 2298
- 2299
- 2300
- 2301
- 2302
- 2303
- 2304
- 2305
- 2306
- 2307
- 2308
- 2309
- 2310
- 2311
- 2312
- 2313
- 2314
- 2315
- 2316
- 2317
- 2318
- 2319
- 2320
- 2321
- 2322
- 2323
- 2324
- 2325
- 2326
- 2327
- 2328
- 2329
- 2330
- 2331
- 2332
- 2333
- 2334
- 2335
- 2336
- 2337
- 2338
- 2339
- 2340
- 2341
- 2342
- 2343
- 2344
- 2345
- 2346
- 2347
- 2348
- 2349
- 2350
- 2351
- 2352
- 2353
- 2354
- 2355
- 2356
- 2357
- 2358
- 2359
- 2360
- 2361
- 2362
- 2363
- 2364
- 2365
- 2366
- 2367
- 2368
- 2369
- 2370
- 2371
- 2372
- 2373
- 2374
- 2375
- 2376
- 2377
- 2378
- 2379
- 2380
- 2381
- 2382
- 2383
- 2384
- 2385
- 2386
- 2387
- 2388
- 2389
- 2390
- 2391
- 2392
- 2393
- 2394
- 2395
- 2396
- 2397
- 2398
- 2399
- 2400
- 2401
- 2402
- 2403
- 2404
- 2405
- 2406
- 2407
- 2408
- 2409
- 2410
- 2411
- 2412
- 2413
- 2414
- 2415
- 2416
- 2417
- 2418
- 2419
- 2420
- 2421
- 2422
- 2423
- 2424
- 2425
- 2426
- 2427
- 2428
- 2429
- 2430
- 2431
- 2432
- 2433
- 2434
- 2435
- 2436
- 2437
- 2438
- 2439
- 2440
- 2441
- 2442
- 2443
- 2444
- 2445
- 2446
- 2447
- 2448
- 2449
- 2450
- 2451
- 2452
- 2453
- 2454
- 2455
- 2456
- 2457
- 2458
- 2459
- 2460
- 2461
- 2462
- 2463
- 2464
- 2465
- 2466
- 2467
- 2468
- 2469
- 2470
- 2471
- 2472
- 2473
- 2474
- 2475
- 2476
- 2477
- 2478
- 2479
- 2480
- 2481
- 2482
- 2483
- 2484
- 2485
- 2486
- 2487
- 2488
- 2489
- 2490
- 2491
- 2492
- 2493
- 2494
- 2495
- 2496
- 2497
- 2498
- 2499
- 2500
- 2501
- 2502
- 2503
- 2504
- 2505
- 2506
- 2507
- 2508
- 2509
- 2510
- 2511
- 2512
- 2513
- 2514
- 2515
- 2516
- 2517
- 2518
- 2519
- 2520
- 2521
- 2522
- 2523
- 2524
- 2525
- 2526
- 2527
- 2528
- 2529
- 2530
- 2531
- 2532
- 2533
- 2534
- 2535
- 2536
- 2537
- 2538
- 2539
- 2540
- 2541
- 2542
- 2543
- 2544
- 2545
- 2546
- 2547
- 2548
- 2549
- 2550
- 2551
- 2552
- 2553
- 2554
- 2555
- 2556
- 2557
- 2558
- 2559
- 2560
- 2561
- 2562
- 2563
- 2564
- 2565
- 2566
- 2567
- 2568
- 2569
- 2570
- 2571
- 2572
- 2573
- 2574
- 2575
- 2576
- 2577
- 2578
- 2579
- 2580
- 2581
- 2582
- 2583
- 2584
- 2585
- 2586
- 2587
- 2588
- 2589
- 2590
- 2591
- 2592
- 2593
- 2594
- 2595
- 2596
- 2597
- 2598
- 2599
- 2600
- 2601
- 2602
- 2603
- 2604
- 2605
- 2606
- 2607
- 2608
- 2609
- 2610
- 2611
- 2612
- 2613
- 2614
- 2615
- 2616
- 2617
- 2618
- 2619
- 2620
- 2621
- 2622
- 2623
- 2624
- 2625
- 2626
- 2627
- 2628
- 2629
- 2630
- 2631
- 2632
- 2633
- 2634
- 2635
- 2636
- 2637
- 2638
- 2639
- 2640
- 2641
- 2642
- 2643
- 2644
- 2645
- 2646
- 2647
- 2648
- 2649
- 2650
- 2651
- 2652
- 2653
- 2654
- 2655
- 2656
- 2657
- 2658
- 2659
- 2660
- 2661
- 2662
- 2663
- 2664
- 2665
- 2666
- 2667
- 2668
- 2669
- 2670
- 2671
- 2672
- 2673
- 2674
- 2675
- 2676
- 2677
- 2678
- 2679
- 2680
- 2681
- 2682
- 2683
- 2684
- 2685
- 2686
- 2687
- 2688
- 2689
- 2690
- 2691
- 2692
- 2693
- 2694
- 2695
- 2696
- 2697
- 2698
- 2699
- 2700
- 2701
- 2702
- 2703
- 2704
- 2705
- 2706
- 2707
- 2708
- 2709
- 2710
- 2711
- 2712
- 2713
- 2714
- 2715
- 2716
- 2717
- 2718
- 2719
- 2720
- 2721
- 2722
- 2723
- 2724
- 2725
- 2726
- 2727
- 2728
- 2729
- 2730
- 2731
- 2732
- 2733
- 2734
- 2735
- 2736
- 2737
- 2738
- 2739
- 2740
- 2741
- 2742
- 2743
- 2744
- 2745
- 2746
- 2747
- 2748
- 2749
- 2750
- 2751
- 2752
- 2753
- 2754
- 2755
- 2756
- 2757
- 2758
- 2759
- 2760
- 2761
- 2762
- 2763
- 2764
- 2765
- 2766
- 2767
- 2768
- 2769
- 2770
- 2771
- 2772
- 2773
- 2774
- 2775
- 2776
- 2777
- 2778
- 2779
- 2780
- 2781
- 2782
- 2783
- 2784
- 2785
- 2786
- 2787
- 2788
- 2789
- 2790
- 2791
- 2792
- 2793
- 2794
- 2795
- 2796
- 2797
- 2798
- 2799
- 2800
- 2801
- 2802
- 2803
- 2804
- 2805
- 2806
- 2807
- 2808
- 2809
- 2810
- 2811
- 2812
- 2813
- 2814
- 2815
- 2816
- 2817
- 2818
- 2819
- 2820
- 2821
- 2822
- 2823
- 2824
- 2825
- 2826
- 2827
- 2828
- 2829
- 2830
- 2831
- 2832
- 2833
- 2834
- 2835
- 2836
- 2837
- 2838
- 2839
- 2840
- 2841
- 2842
- 2843
- 2844
- 2845
- 2846
- 2847
- 2848
- 2849
- 2850
- 2851
- 2852
- 2853
- 2854
- 2855
- 2856
- 2857
- 2858
- 2859
- 2860
- 2861
- 2862
- 2863
- 2864
- 2865
- 2866
- 2867
- 2868
- 2869
- 2870
- 2871
- 2872
- 2873
- 2874
- 2875
- 2876
- 2877
- 2878
- 2879
- 2880
- 2881
- 2882
- 2883
- 2884
- 2885
- 2886
- 2887
- 2888
- 2889
- 2890
- 2891
- 2892
- 2893
- 2894
- 2895
- 2896
- 2897
- 2898
- 2899
- 2900
- 2901
- 2902
- 2903
- 2904
- 2905
- 2906
- 2907
- 2908
- 2909
- 2910
- 2911
- 2912
- 2913
- 2914
- 2915
- 2916
- 2917
- 2918
- 2919
- 2920
- 2921
- 2922
- 2923
- 2924
- 2925
- 2926
- 2927
- 2928
- 2929
- 2930
- 2931
- 2932
- 2933
- 2934
- 2935
- 2936
- 2937
- 2938
- 2939
- 2940
- 2941
- 2942
- 2943
- 2944
- 2945
- 2946
- 2947
- 2948
- 2949
- 2950
- 2951
- 2952
- 2953
- 2954
- 2955
- 2956
- 2957
- 2958
- 2959
- 2960
- 2961
- 2962
- 2963
- 2964
- 2965
- 2966
- 2967
- 2968
- 2969
- 2970
- 2971
- 2972
- 2973
- 2974
- 2975
- 2976
- 2977
- 2978
- 2979
- 2980
- 2981
- 2982
- 2983
- 2984
- 2985
- 2986
- 2987
- 2988
- 2989
- 2990
- 2991
- 2992
- 2993
- 2994
- 2995
- 2996
- 2997
- 2998
- 2999
- 3000
- 3001
- 3002
- 3003
- 3004
- 3005
- 3006
- 3007
- 3008
- 3009
- 3010
- 3011
- 3012
- 3013
- 3014
- 3015
- 3016
- 3017
- 3018
- 3019
- 3020
- 3021
- 3022
- 3023
- 3024
- 3025
- 3026
- 3027
- 3028
- 3029
- 3030
- 3031
- 3032
- 3033
- 3034
- 3035
- 3036
- 3037
- 3038
- 3039
- 3040
- 3041
- 3042
- 3043
- 3044
- 3045
- 3046
- 3047
- 3048
- 3049
- 3050
- 3051
- 3052
- 3053
- 3054
- 3055
- 3056
- 3057
- 3058
- 3059
- 3060
- 3061
- 3062
- 3063
- 3064
- 3065
- 3066
- 3067
- 3068
- 3069
- 3070
- 3071
- 3072
- 3073
- 3074
- 3075
- 3076
- 3077
- 3078
- 3079
- 3080
- 3081
- 3082
- 3083
- 3084
- 3085
- 3086
- 3087
- 3088
- 3089
- 3090
- 3091
- 3092
- 3093
- 3094
- 3095
- 3096
- 3097
- 3098
- 3099
- 3100
- 3101
- 3102
- 3103
- 3104
- 3105
- 3106
- 3107
- 3108
- 3109
- 3110
- 3111
- 3112
- 3113
- 3114
- 3115
- 3116
- 3117
- 3118
- 3119
- 3120
- 3121
- 3122
- 3123
- 3124
- 3125
- 3126
- 3127
- 3128
- 3129
- 3130
- 3131
- 3132
- 3133
- 3134
- 3135
- 3136
- 3137
- 3138
- 3139
- 3140
- 3141
- 3142
- 3143
- 3144
- 3145
- 3146
- 3147
- 3148
- 3149
- 3150
- 3151
- 3152
- 3153
- 3154
- 3155
- 3156
- 3157
- 3158
- 3159
- 3160
- 3161
- 3162
- 3163
- 3164
- 3165
- 3166
- 3167
- 3168
- 3169
- 3170
- 3171
- 3172
- 3173
- 3174
- 3175
- 3176
- 3177
- 3178
- 3179
- 3180
- 3181
- 3182
- 3183
- 3184
- 3185
- 3186
- 3187
- 3188
- 3189
- 3190
- 3191
- 3192
- 3193
- 3194
- 3195
- 3196
- 3197
- 3198
- 3199
- 3200
- 3201
- 3202
- 3203
- 3204
- 3205
- 3206
- 3207
- 3208
- 3209
- 3210
- 3211
- 3212
- 3213
- 3214
- 3215
- 3216
- 3217
- 3218
- 3219
- 3220
- 3221
- 3222
- 3223
- 3224
- 3225
- 3226
- 3227
- 3228
- 3229
- 3230
- 3231
- 3232
- 3233
- 3234
- 3235
- 3236
- 3237
- 3238
- 3239
- 3240
- 3241
- 3242
- 3243
- 3244
- 3245
- 3246
- 3247
- 3248
- 3249
- 3250
- 3251
- 3252
- 3253
- 3254
- 3255
- 3256
- 3257
- 3258
- 3259
- 3260
- 3261
- 3262
- 3263
- 3264
- 3265
- 3266
- 3267
- 3268
- 3269
- 3270
- 3271
- 3272
- 3273
- 3274
- 3275
- 3276
- 3277
- 3278
- 3279
- 3280
- 3281
- 3282
- 3283
- 3284
- 3285
- 3286
- 3287
- 3288
- 3289
- 3290
- 3291
- 3292
- 3293
- 3294
- 3295
- 3296
- 3297
- 3298
- 3299
- 3300
- 3301
- 3302
- 3303
- 3304
- 3305
- 3306
- 3307
- 3308
- 3309
- 3310
- 3311
- 3311
推荐文章