华为云用户手册
-
断点续传上传 当上传大文件时,经常出现因网络不稳定或程序崩溃导致上传失败的情况。失败后再次重新上传不仅浪费资源,而且当网络不稳定时仍然有上传失败的风险。断点续传上传接口能有效地解决此类问题引起的上传失败,其原理是将待上传的文件分成若干个分段分别上传,并实时地将每段上传结果统一记录在checkpoint文件中,仅当所有分段都上传成功时返回上传成功的结果,否则抛出异常提醒用户再次调用接口进行重新上传(重新上传时因为有checkpoint文件记录当前的上传进度,避免重新上传所有分段,从而节省资源提高效率)。 您可以通过uploadFile进行断点续传上传。该接口可设置的参数如下: 参数 作用 OBS iOS SDK对应方法 bucketName 桶名,必选参数。 request.bucketName objectKey 对象名,必选参数。 request.objectKey objectACLPolicy 对象访问策略。 request.objectACLPolicy storageClass 对象存储类型。 request.storageClass metaDataDict 对象元数据。 request.metaDataDict websiteRedirectLocation 网址重定向位置。 request.websiteRedirectLocation encryption 加密方式。 request.encryption enableCheckpoint 是否开启断点续传模式,默认为NO,表示不开启。 request.enableCheckpoint enableMD5Check 是否开启MD5校验,默认为NO,表示不开启。 request.enableMD5Check checkpointFilePath 记录上传进度的文件,只在断点续传模式下有效。当该值为空时,默认与待上传的本地文件同目录。文件名后缀可指定为obsuploadcheckpoint。 request.checkpointFilePath partSize 分段大小,单位字节,取值范围是100KB~5GB,默认为5MB。 request.partSize 以下代码展示了如何使用断点续传上传接口上传文件: static OBSClient *client;NSString *endPoint = @"your-endpoint";// 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量AccessKeyID和SecretAccessKey。// 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.htmlchar* ak_env = getenv("AccessKeyID");char* sk_env = getenv("SecretAccessKey");NSString *AK = [NSString stringWithUTF8String:ak_env];NSString *SK = [NSString stringWithUTF8String:sk_env]; // 初始化身份验证OBSStaticCredentialProvider *credentialProvider = [[OBSStaticCredentialProvider alloc] initWithAccessKey:AK secretKey:SK]; //初始化服务配置OBSServiceConfiguration *conf = [[OBSServiceConfiguration alloc] initWithURLString:endPoint credentialProvider:credentialProvider]; // 初始化clientclient = [[OBSClient alloc] initWithConfiguration:conf]; // 分段上传的最大并发数client.configuration.maxConcurrentUploadRequestCount = 5;// 分段上传请求的最大连接数client.configuration.uploadSessionConfiguration.HTTPMaximumConnectionsPerHost = 10;NSString *filePath = [[NSBundle mainBundle]pathForResource:@"fileName" ofType:@"Type"];OBSUploadFileRequest *request = [[OBSUploadFileRequest alloc]initWithBucketName:@"bucketname" objectKey:@"objectname" uploadFilePath:filePath];// 分段大小为5MBrequest.partSize = [NSNumber numberWithInteger: 5 * 1024*1024];// 开启断点续传模式request.enableCheckpoint = YES;// 指定checkpoint文件路径request.checkpointFilePath = @"Your CheckPoint File"; // 上传文件request.uploadProgressBlock = ^(int64_t bytesSent, int64_t totalBytesSent, int64_t totalBytesExpectedToSend) { NSLog(@"%0.1f%%",(float)floor(totalBytesSent*10000/totalBytesExpectedToSend)/100);}; OBSBFTask *task = [client uploadFile:request completionHandler:^(OBSUploadFileResponse *response, NSError *error) { NSLog(@"%@",response); if(error){ // 再次上传 }}]; 断点续传上传接口是利用分段上传特性实现的,是对分段上传的封装和加强。 断点续传上传接口不仅能在失败重传时节省资源提高效率,还因其对分段进行并发上传的机制能加快上传速度,帮助用户快速完成上传业务;且其对用户透明,用户不用关心checkpoint文件的创建和删除、分段任务的切分、并发上传的实现等内部细节。 enableCheckpoint参数默认是NO,代表不启用断点续传模式,此时断点续传上传接口退化成对分段上传的简单封装,不会产生checkpoint文件。 checkpointFile参数仅在enableCheckpoint参数为YES时有效。 当前,当有多个上传任务需要并发执行时,需为每个上传任务初始化一个client及request进行处理。 父主题: 上传对象
-
上传字符串 static OBSClient *client;NSString *endPoint = @"your-endpoint";// 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量AccessKeyID和SecretAccessKey。// 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.htmlchar* ak_env = getenv("AccessKeyID");char* sk_env = getenv("SecretAccessKey");NSString *AK = [NSString stringWithUTF8String:ak_env];NSString *SK = [NSString stringWithUTF8String:sk_env];// 初始化身份验证OBSStaticCredentialProvider *credentialProvider = [[OBSStaticCredentialProvider alloc] initWithAccessKey:AK secretKey:SK]; //初始化服务配置OBSServiceConfiguration *conf = [[OBSServiceConfiguration alloc] initWithURLString:endPoint credentialProvider:credentialProvider]; // 初始化clientclient = [[OBSClient alloc] initWithConfiguration:conf]; // 流式上传字符串OBSPutObjectWithDataRequest *request = [[OBSPutObjectWithDataRequest alloc]initWithBucketName:@"bucketname" objectKey:@"objectname" uploadData:[@"hello" dataUsingEncoding:NSUTF8StringEncoding]]; // 上传文件进度request.uploadProgressBlock = ^(int64_t bytesSent, int64_t totalBytesSent, int64_t totalBytesExpectedToSend) { NSLog(@"%0.1f%%",(float)floor(totalBytesSent*10000/totalBytesExpectedToSend)/100);}; [client putObject:request completionHandler:^(OBSPutObjectResponse *response, NSError *error){ NSLog(@"%@",response);}];
-
上传网络流 static OBSClient *client;NSString *endPoint = @"your-endpoint";// 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量AccessKeyID和SecretAccessKey。// 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.htmlchar* ak_env = getenv("AccessKeyID");char* sk_env = getenv("SecretAccessKey");NSString *AK = [NSString stringWithUTF8String:ak_env];NSString *SK = [NSString stringWithUTF8String:sk_env];// 初始化身份验证OBSStaticCredentialProvider *credentialProvider = [[OBSStaticCredentialProvider alloc] initWithAccessKey:AK secretKey:SK]; //初始化服务配置OBSServiceConfiguration *conf = [[OBSServiceConfiguration alloc] initWithURLString:endPoint credentialProvider:credentialProvider]; // 初始化clientclient = [[OBSClient alloc] initWithConfiguration:conf]; // 流式上传网络流OBSPutObjectWithDataRequest *request = [[OBSPutObjectWithDataRequest alloc] initWithBucketName:@"bucketname" objectKey:@"objectname" uploadDataURL:[NSURL URLWithString:@"DateURL"]]; // 上传文件进度request.uploadProgressBlock = ^(int64_t bytesSent, int64_t totalBytesSent, int64_t totalBytesExpectedToSend) { NSLog(@"%0.1f%%",(float)floor(totalBytesSent*10000/totalBytesExpectedToSend)/100);}; [client putObject:request completionHandler:^(OBSPutObjectResponse *response, NSError *error){ NSLog(@"%@",response);}];
-
上传文件流 static OBSClient *client;NSString *endPoint = @"your-endpoint";// 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量AccessKeyID和SecretAccessKey。// 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.htmlchar* ak_env = getenv("AccessKeyID");char* sk_env = getenv("SecretAccessKey");NSString *AK = [NSString stringWithUTF8String:ak_env];NSString *SK = [NSString stringWithUTF8String:sk_env];// 初始化身份验证OBSStaticCredentialProvider *credentialProvider = [[OBSStaticCredentialProvider alloc] initWithAccessKey:AK secretKey:SK]; //初始化服务配置OBSServiceConfiguration *conf = [[OBSServiceConfiguration alloc] initWithURLString:endPoint credentialProvider:credentialProvider]; // 初始化clientclient = [[OBSClient alloc] initWithConfiguration:conf]; NSString *filePath = [[NSBundle mainBundle]pathForResource:@"fileName" ofType:@"Type"];// 文件流上传NSData *uploadData = [NSData dataWithContentsOfFile:filePath];OBSPutObjectWithDataRequest *request = [[OBSPutObjectWithDataRequest alloc]initWithBucketName:@"bucketname" objectKey:@"test/image1" uploadData:uploadData]; // 上传文件进度request.uploadProgressBlock = ^(int64_t bytesSent, int64_t totalBytesSent, int64_t totalBytesExpectedToSend) { NSLog(@"%0.1f%%",(float)floor(totalBytesSent*10000/totalBytesExpectedToSend)/100);}; [client putObject:request completionHandler:^(OBSPutObjectResponse *response, NSError *error){ NSLog(@"%@",response);}]; 推荐使用文件上传的形式上传本地文件,而不是文件流形式。 大文件上传建议使用分段上传。 上传的内容大小不能超过5GB。
-
SDK公共响应头 调用OBSClient类的相关接口成功后,均会返回公共响应头类,即OBSBaseResponse类实例(或其子类实例),该类包含了HTTP/HTTPS的响应头信息。 处理公共响应头的示例代码如下: static OBSClient *client;NSString *endPoint = @"your-endpoint";// 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量AccessKeyID和SecretAccessKey。// 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.htmlchar* ak_env = getenv("AccessKeyID");char* sk_env = getenv("SecretAccessKey");NSString *AK = [NSString stringWithUTF8String:ak_env];NSString *SK = [NSString stringWithUTF8String:sk_env]; // 初始化身份验证OBSStaticCredentialProvider *credentialProvider = [[OBSStaticCredentialProvider alloc] initWithAccessKey:AK secretKey:SK]; //初始化服务配置OBSServiceConfiguration *conf = [[OBSServiceConfiguration alloc] initWithURLString:endPoint credentialProvider:credentialProvider]; // 初始化clientclient = [[OBSClient alloc] initWithConfiguration:conf]; // 创建一个请求OBSListBucketsRequest *request = [OBSListBucketsRequest new]; [client listBuckets:request completionHandler:^(OBSListBucketsResponse *response, NSError *error) { NSLog(@"%@",response.headers);}]; 父主题: 异常处理
-
上传对象 以下代码展示如何上传对象至OBS: NSString *filePath = [[NSBundle mainBundle]pathForResource:@"fileName" ofType:@"Type"];OBSPutObjectWithFileRequest *request = [[OBSPutObjectWithFileRequest alloc]initWithBucketName:@"bucketname" objectKey:@"objectname" uploadFilePath:filePath];// 上传进度request.uploadProgressBlock = ^(int64_t bytesSent, int64_t totalBytesSent, int64_t totalBytesExpectedToSend) { NSLog(@"%0.1f%%",(float)floor(totalBytesSent*10000/totalBytesExpectedToSend)/100);};// 上传文件[ client putObject:request completionHandler:^(OBSPutObjectResponse *response, NSError *error){ NSLog(@"%@",response.etag);}]; 更多上传对象的信息,请参见上传对象。 父主题: 快速入门
-
添加 域名 您需要将自有的已备案的推流域名、播放域名分别添加到 视频直播 服务中。下面以添加推流域名为例,播放域名的添加步骤与此相同。 登录视频直播控制台。 在左侧导航栏中,选择“域名管理”,进入域名管理页面。 单击“添加域名”。在弹出的“添加域名”页面输入已申请的推流域名。 注意:若您的域名未备案,将添加失败,并提示“添加域名失败:ICP编号不存在”。 表1 域名参数说明 参数名 描述 域名 输入二级推流域名或播放域名。示例:“test-push.example.com”。 说明: 域名长度限制为64个字符,暂不支持大写的域名。 推流域名与播放域名不能相同,不支持添加泛域名。 默认每个账号下最多可创建64个域名。如需增加域名,请提交工单处理。 企业项目 将域名加入到企业项目中统一管理。 在企业项目页面创建企业项目,默认为default企业项目,然后将用户组添加到该企业项目。这时用户组内用户将获得用户组授权的该企业项目下的域名的相关操作权限。 说明: 仅企业账号能够配置企业项目。 域名类型 若“域名”中输入的是推流域名则选择推流域名,否则,选择播放域名。域名类型配置后不可更改。 子服务类型 直播服务的子服务类型。 包括如下选项: 云直播:流式直播服务,提供灵活易用,功能丰富的直播加速能力,适用娱乐、电商、教育等场景。 媒体直播:广播级直播服务,支持频道管理、内容加密等特性,适用于媒资,广电等场景。 请选择“云直播”。 直播源站 直播源站所在地域,可参考如何选择直播源站和加速区域?选择。直播源站配置后不可更改,建议您选择业务就近的源站。 目前支持如下区域: 中国站北京四入口,支持区域:华北-北京四、亚太-新加坡。 国际站新加坡入口,支持区域:亚太-新加坡、拉美-圣保罗一、华北-北京四。 欧洲站都柏林入口,支持区域:欧洲-都柏林。 说明: 推流域名的源站必须选择主播所在区域,不支持主播跨区域推流。比如主播需要同时在中国大陆和马来西亚直播,则需要创建两套推拉流域名,直播源站分别为中国大陆和新加坡。 需要关联的推流域名与播放域名的源站所在区域要保持一致。 用于存储直播录制、截图等的OBS桶必须与直播源站在同一区域,当您的存储已经在某个区域时,对应的直播源站必须选择为相同区域(region)。 加速区域 播放域名可执行加速的地域,可参考如何选择直播源站和加速区域?选择。仅对播放域名有效,推流域名不支持设置。设置完成后,不支持修改。 如果在所选加速区域之外播放,将无法保证功能和质量,请您根据实际业务,选择有效的加速区域。 包含如下选项: 中国大陆 当观众在中国大陆时,应选择此项。 域名需要在工信部备案,推荐您在华为云备案中心备案。 中国大陆境外 当观众在海外、中国香港、中国澳门、中国台湾时,应选择此项。 全球加速 当观众在中国大陆、中国香港、中国澳门、中国台湾或其他国家和地区时,应选择此项。 域名需要在工信部备案,推荐您在华为云备案中心备案。 须知: 如果您选择的加速区域存在跨境场景,您应自行对您的数据跨境行为负责,详见服务声明“2.3 对您的内容数据处理”章节。 支持协议 播放域名支持的播放协议。 仅对播放域名有效,推流域名不支持设置。 设置完成后,不支持修改,默认为“FLV+RTMP+RTC”。 包含如下选项: FLV+RTMP+RTC:播放域名可使用HTTP-FLV、RTMP和WebRTC播放协议,播放云直播内容。 HLS:播放域名可使用HLS播放协议,播放云直播内容。 单击“确定”。 在“域名管理”页面的列表中会新增一条“状态”为“配置中”的域名记录。大概3-5分钟时间,当“状态”为“正常”时,域名添加成功。 执行步骤1-步骤4,完成对播放域名的添加。 播放域名添加后,需要关联添加的推流域名才可使用直播服务。关联的推流域名必须与播放域名归属同一个直播源站,具体请参见关联域名。
-
操作步骤 下面以播放域名为例,推流域名的CNAME配置步骤相同。 获取域名对应的CNAME值。 登录视频直播控制台。 在左侧导航树中,选择“域名管理 ”。 在所需域名行,获取对应的CNAME。 图1 获取CNAME值 登录云解析服务控制台。 在左侧导航树中,选择“公网域名”。 在需要配置解析的域名行,单击域名名称,如图2所示。 图2 域名列表 单击页面右上角的“添加记录集”。 图3 添加记录集 根据界面提示填写参数配置,参数信息如表1所示。 表1 参数说明 参数名 描述 记录类型 记录集的类型,此处为CNAME类型。 选择“CNAME-将域名指向另外一个域名”。 主机记录 输入域名的二级域名(后缀无需用户手动填写)。 以播放域名“play-test.example.com”为例,此处输入“play-test”。 线路类型 用于DNS服务器在解析域名时,根据访问者的来源,返回对应的服务器IP地址,具体请参见解析线路。 仅支持为公网域名的记录集配置此参数。 选择“全网默认”。 TTL (秒) 解析记录在本地DNS服务器的缓存时间,以秒为单位。 数值越小,修改记录各地生效时间越快。 默认为300秒,若无特殊需求,可直接保持默认选择。 记录值 需指向的域名,即当前章节步骤1中获取的CNAME。 以播放域名“play-test.example.com”为例,此处输入“play-test.example.com.c.cdnhwc3.com”。 别名 用于是否将此记录集关联至云服务资源实例。 开启:为此记录集关联云服务资源实例,详细说明请参见设置记录集别名。 关闭:不为此记录集关联云服务资源实例。 设置为关闭。 权重 可选参数,返回解析记录的权重比例。默认值为1,取值范围:0~1000。 仅支持为公网域名的记录集配置此参数。 当域名在同一解析线路中有多条相同类型的解析记录时,可以通过“权重”设置解析记录的响应比例。详细内容请参见配置权重解析。 配置为“1”。 标签 可选参数,记录集的标识,包括键和值,每个记录集可以创建10个标签。键和值的命名规则,详见添加CNAME类型记录集。 取值示例如下: example_key1 example_value1 描述 可选参数,对域名的描述,主要起到提示作用。 长度不超过255个字符。 单击“确定”,完成添加。 您可以在域名对应的记录集列表中查看添加的记录集。当记录集的状态显示为“正常”时,表示记录集添加成功。 执行步骤1-步骤6,完成对推流域名的CNAME配置。
-
操作步骤 登录视频直播控制台。 在左侧导航栏中,选择“域名管理”,进入域名管理页面。 单击“添加域名”。在界面右侧弹出的“添加域名”页面输入已申请的播放或推流域名。 注意:若您的域名未备案,将添加失败,并提示“添加域名失败:ICP编号不存在”。 图2 添加域名 表1 域名参数说明 参数名 描述 域名 输入二级推流域名或播放域名。示例:“test-push.example.com”。 说明: 域名长度限制为64个字符,暂不支持大写的域名。 推流域名与播放域名不能相同,不支持添加泛域名。 默认每个账号下最多可创建64个域名。如需增加域名,请提交工单处理。 企业项目 将域名加入到企业项目中统一管理。 在企业项目页面创建企业项目,默认为default企业项目,然后将用户组添加到该企业项目。这时用户组内用户将获得用户组授权的该企业项目下的域名的相关操作权限。 说明: 仅企业账号能够配置企业项目。 域名类型 若“域名”中输入的是推流域名则选择推流域名,否则,选择播放域名。域名类型配置后不可更改。 子服务类型 直播服务的子服务类型。 包括如下选项: 云直播:流式直播服务,提供灵活易用,功能丰富的直播加速能力,适用娱乐、电商、教育等场景。 媒体直播:广播级直播服务,支持频道管理、内容加密等特性,适用于媒资,广电等场景。 请选择“云直播”。 直播源站 直播源站所在地域,可参考如何选择直播源站和加速区域?选择。直播源站配置后不可更改,建议您选择业务就近的源站。 目前支持如下区域: 中国站北京四入口,支持区域:华北-北京四、亚太-新加坡。 国际站新加坡入口,支持区域:亚太-新加坡、拉美-圣保罗一、华北-北京四。 欧洲站都柏林入口,支持区域:欧洲-都柏林。 说明: 推流域名的源站必须选择主播所在区域,不支持主播跨区域推流。比如主播需要同时在中国大陆和马来西亚直播,则需要创建两套推拉流域名,直播源站分别为中国大陆和新加坡。 需要关联的推流域名与播放域名的源站所在区域要保持一致。 用于存储直播录制、截图等的OBS桶必须与直播源站在同一区域,当您的存储已经在某个区域时,对应的直播源站必须选择为相同区域(region)。 加速区域 播放域名可执行加速的地域,可参考如何选择直播源站和加速区域?选择。仅对播放域名有效,推流域名不支持设置。设置完成后,不支持修改。 如果在所选加速区域之外播放,将无法保证功能和质量,请您根据实际业务,选择有效的加速区域。 包含如下选项: 中国大陆 当观众在中国大陆时,应选择此项。 域名需要在工信部备案,推荐您在华为云备案中心备案。 中国大陆境外 当观众在海外、中国香港、中国澳门、中国台湾时,应选择此项。 全球加速 当观众在中国大陆、中国香港、中国澳门、中国台湾或其他国家和地区时,应选择此项。 域名需要在工信部备案,推荐您在华为云备案中心备案。 须知: 如果您选择的加速区域存在跨境场景,您应自行对您的数据跨境行为负责,详见服务声明“2.3 对您的内容数据处理”章节。 支持协议 播放域名支持的播放协议。 仅对播放域名有效,推流域名不支持设置。 设置完成后,不支持修改,默认为“FLV+RTMP+RTC”。 包含如下选项: FLV+RTMP+RTC:播放域名可使用HTTP-FLV、RTMP和WebRTC播放协议,播放云直播内容。 HLS:播放域名可使用HLS播放协议,播放云直播内容。 单击“确定”。 在“域名管理”页面的列表中会新增一条“状态”为“配置中”的域名记录。大概3-5分钟时间,当“状态”为“正常”时,域名添加成功。 播放域名添加后,需要关联推流域名才可使用直播服务。关联的推流域名必须与播放域名归属同一个直播源站,详情请参见关联域名。 域名添加完成后,您需要在播放域名和推流域名的DNS服务商处配置CNAME,将您的域名指向CDN配置的CNAME地址。具体操作请见配置CNAME,配置完成后,对应的域名会自动启用直播加速服务。
-
前提条件 已添加推流域名和播放域名,且已完成域名关联。 已在域名DNS服务商处完成CNAME解析配置。 为保障直播资源不被非法盗播, 华为云直播 服务提供防盗链功能,对播放地址进行加密鉴权。若有需要,请先配置Key防盗链,然后使用鉴权地址进行播放。加密鉴权方法请参见Key防盗链。 直播服务支持将推送的直播流转码成多种分辨率和码率规格的视频流,以满足不同网络环境的播放需求。若有需要,请在对应推流域名中配置转码模板,然后使用转码播放地址进行播放。
-
原始播放地址 拼接规则 标准直播场景: 目前播放地址支持FLV、M3U8、RTMP三种格式,对应的拼接规则如下所示: RTMP格式:rtmp://播放域名/AppName/StreamNameFLV格式:http://播放域名/AppName/StreamName.flvM3U8格式:http://播放域名/AppName/StreamName.m3u8 低时延直播场景: 目前播放地址仅支持WebRTC格式,对应的拼接规则如下所示: webrtc://播放域名/AppName/StreamName 拼接示例中的参数说明,如下所示: 播放域名:在视频直播控制台添加的播放域名。 AppName:应用名,默认为“live”,您也可以根据实际需求进行自定义,支持大小写字母、数字、下划线(_)中划线(-)。 StreamName:直播流名,每个应用可创建多个直播流,您可以根据实际需求进行自定义,不支持中文字符。 拼接示例: 标准直播场景: 若添加的播放域名为“test-play.example.com”,“AppName”为“livetest”,“StreamName”为“huawei1”,则不同规格拼接成如下所示的不同的原始播放地址。 RTMP格式:rtmp://test-play.example.com/livetest/huawei1FLV格式:http://test-play.example.com/livetest/huawei1.flvM3U8格式:http://test-play.example.com/livetest/huawei1.m3u8
-
操作步骤 登录视频直播控制台。 在左侧导航栏中,选择“域名管理”,进入域名管理页面。 在添加的播放域名行右侧单击“管理”,进入基本信息页面,即可查看播放信息。 图1 查看播放地址 您需要根据实际情况自定义“StreamName”,生成对应的原始播放地址,具体请参见原始播放地址。 如果使用原始地址进行直播播放,配置了Key防盗链后,原始播放地址需参见Key防盗链生成鉴权播放地址。 如果使用转码后的地址进行直播播放,需要在原始播放地址中的“StreamName”后加上“_转码模板ID”,重新生成新的“StreamName”,再参见Key防盗链生成新的鉴权参数,最终拼接成转码流的播放地址。
-
入门指引 若您需要用自己的域名体验完整的云直播功能,可以参考本节快速实现,具体的操作流程,如图1所示。 图1 云直播入门流程 云直播入门操作流程说明,如表1所示。 表1 云直播入门流程说明 序号 操作方法 操作说明 1 添加直播域名 将准备的已备案的域名添加到视频直播服务,包括推流域名和播放域名。您可以注册备案一个一级域名(如example.com),然后使用两个不同的二级域名(如live-play.example.com和live-push.example.com)作为直播推流域名和播放域名。 2 关联域名 推流域名和播放域名添加完成后,您需要在播放域名中关联对应的推流域名,否则将会导致播放失败。 3 配置CNAME 推流域名和播放域名添加成功后,视频直播会为其分配对应的CNAME地址。您需要在域名DNS服务商处为推流域名和播放域名配置CNAME解析,开启直播推流加速和播放加速。 4 开启HTTPS安全加速 您可以为低时延直播开启HTTPS安全加速,保障您的直播数据在传输过程中受到加密保护。 仅低时延直播场景,需要执行此操作。 4 配置推流(可选) 配置转码模板 配置录制模板 配置截图模板 配置推流鉴权 配置播流(可选) 配置延时 配置拉流回源 配置HTTPS 配置播放鉴权 若您需要对直播进行录制、转码、截图、鉴权等操作,您可以在直播开始前,进行相关的配置。 5 推流 您可以使用第三方推流工具OBS进行推流。 标准直播场景,请参考推流操作。 低时延直播场景,请参考推流操作。 6 播放 标准直播场景:您可以使用第三方播放工具VLC进行播放。操作请参考播放。 低时延直播场景:您可以使用华为云低时延在线Demo或根据API接口开放web端播放。操作请参考播放(Web接入方式)。 父主题: 快速入门
-
回调示例 录制文件生成事件回调示例如下。回调消息体字段如表2所示。 { "project_id": "70b76xxxxxx34253880af501cdxxxxxx", "job_id": "dc0a1773-0cef-xxxx-xxxx-9a38fdb095d2", "task_id": "51126d0ebe94b1da00d2e21a10xxxxxx", "event_type": "RECORD_FILE_COMPLETE", "publish_domain": "push.example.com", "app": "live", "stream": "mystream", "record_format": "HLS", "download_url": "https://obs.cn-north-4.myhuaweicloud.com/live/record-xxxx-mystream-1589967495/record-push.example.com-live-mystream-1589967495.m3u8", "asset_id": "1a0d8e9bfaexxxxxxbe5021e62aa1e96", "file_size": 3957964, "record_duration": 120, "start_time": "2020-03-08T14:10:25Z", "end_time": "2020-03-08T14:12:25Z", "width": 1280, "height": 720, "obs_location": "https://obs.cn-north-4.myhuaweicloud.com", "obs_bucket": "mybucket", "obs_object": "live/record-xxxx-mystream-1589967495/record-hwpublish.myun.tv-live-mystream-1589967495.m3u8", "auth_sign": "4f97f46759axxxxxx7ad21e9935dc175", "auth_timestamp": 1583676745}
-
注意事项 目前暂只支持直播协议为RTMP和HTTP-FLV,且AppName为live的播放配置延时,若其它App需修改延时配置请提交工单申请。 推流端GOP值不能大于配置的延时,播放的实际延时受播放端的网络情况等因素影响。 播放延时修改后,需重新推流才可生效。 直播延时时间配置过短(2s),会影响HLS视频的播放体验,如:秒开。为避免不好的体验,请配置较长的延时时间(4s或6s)。 低时延直播场景下,不建议使用此功能。
-
RSA私钥格式要求 PEM格式的文件可以存放证书或私钥,如果*.PEM只包含私钥,一般用*.KEY代替。 通过记事本打开*.PEM或*.KEY的私钥文件,可以查看到类似图3所示的全部私钥信息。 RSA格式私钥: 以证书链“-----BEGIN RSA PRIVATE KEY-----”开头,以证书链“-----END RSA PRIVATE KEY-----”结尾。 证书链之间的内容,要求每行64个字符,最后一行允许不足64个字符。 证书内容不包含空格。
-
背景信息 强制跳转HTTPS:配置HTTPS后,开启强制跳转HTTPS,若用户发起HTTP请求,服务端会返回302重定向响应,原来的HTTP请求将会被强制重定向为HTTPS请求。 相比HTTP协议,HTTPS具有如下优势: HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,要比HTTP协议安全,可防止数据在传输过程中被窃取、改变,确保数据的完整性。 在HTTPS协议中,会对用户的关键信息进行加密,避免Session ID或Cookie内容被攻击者捕获,导致敏感信息泄露。
-
格式转换 配置HTTPS仅支持PEM格式的证书/私钥,其他格式均不支持。其他格式的证书/私钥需要转换成PEM格式,建议通过OpenSSL工具进行转换。下面是几种比较流行的证书格式转换为PEM格式的方法。 以下示例均假设转换前证书名为old_certificate,私钥名为old_key,转换后证书名为new_certificate,私钥文件名为new_key。 DER转换为PEM openssl x509 -inform der -in old_certificate.cer -out new_certificate.pemopenssl rsa -inform DER -outform pem -in old_key.der -out new_key.pem P7B转换为PEM openssl pkcs7 -print_certs -in old_certificate.p7b -out new_certificate.cer PFX转换为PEM openssl pkcs12 -in old_certificat.pfx -nokeys -out new_certificate.pemopenssl pkcs12 -in old_certificat.pfx -nocerts -out new_key.pem 若需要将PK CS 8格式私钥转换为PKCS1格式,则参考如下方法: openssl rsa -in old_certificat.pem -out pkcs1.pem
-
下行带宽/流量 选择需要查看的时间、播放域名、应用名称、流名称及时间粒度。单击页面右侧的“带宽”或“流量”,可以切换查看低时延直播的带宽、流量趋势图。 单击右侧的图标,可以导出具体数据。 支持查询最近365天的历史数据。 查询的时间跨度最长为31天。 最小统计粒度为5分钟,如2020-11-06 8:00:00~2020-11-06 8:04:59时间段内的数据,会统计展示在2020-11-06 8:00:00这个统计点上。其中,带宽为用户所选粒度时间内的平均值,流量为用户所选粒度时间内的累计值。 直播流名称需要根据播放端实际拉取的流进行填写,例如,播放端拉取的是转码流,则“流名称”中需要填写的是转码流名称。 导出数据暂不支持按运营商分类。 带宽用量趋势呈现的是所选域名对应低时延直播业务的总带宽趋势。您可以在带宽趋势区域的下方,查看所选域名在查询时间段内的下行带宽峰值,如图1所示。 图1 下行带宽统计详情 流量用量趋势呈现的是所选域名对应低时延直播业务的总流量趋势。您可以在流量趋势区域的下方,查看所选域名在查询时间段内的流量消耗,如图2所示。 图2 下行流量统计详情 流量表和流量趋势图中呈现的是低时延直播总流量,是将每5分钟粒度统计的流量进行合计(Byte),然后换算成MB,精确到小数点后两位。因此,可能与按5分钟粒度查询导出的流量表中“流量(MB)”列的合计值存在稍微的误差,这是由于计算时四舍五入导致。
-
观众数 选择需要查看的时间、播放域名、应用名称、流名称和时间粒度,即可查看低时延直播业务的趋势图。 支持查询最近365天的历史数据。 查询的时间跨度最长为31天。 仅支持选择单个域名进行查询。 统计的是独立IP数,最小统计粒度为1分钟,如2020-11-06 8:00:00~2020-11-06 8:00:59时间段内的数据会统计展示在2020-11-06 8:00:00这个统计点上。 趋势图中呈现的是所选域名对应低时延直播业务的在线独立访客数趋势,如图3所示。 图3 在线独立访客数趋势
-
单路播放统计 支持查看低时延直播的单路播放统计数据,包括:拉流成功率、在线观看人数、平均首屏时长、平均播放帧率、平均下行网络码率、平均卡顿率和CPU使用率。 选择需要查看的时间、播放域名、应用名称、流名称及时间粒度。单击,即可查看到所选播放域名对应低时延直播业务的单路播放统计数据。 支持查询最近365天的历史数据。 查询的时间跨度最长为31天。 最小统计粒度为1分钟,如2020-11-06 8:00:00~2020-11-06 8:00:59时间段内的数据会统计展示在2020-11-06 8:00:00这个统计点上。 支持查询Web、IOS和安卓端的单路播放统计数据。
-
Root CA机构颁发的证书 Root CA机构颁发的证书是一份完整的证书,配置HTTPS时,仅上传该证书即可。 通过记事本打开*.PEM格式的证书文件,可以查看到类似图1所示的全部证书信息。 PEM格式证书: 以证书链“-----BEGIN CERTIFICATE-----”开头,以证书链“-----END CERTIFICATE-----”结尾。 证书链之间的内容,要求每行64个字符,最后一行允许不足64个字符。 证书内容不包含空格。
-
中级CA机构颁发的证书 中级机构颁发的证书文件包含多份证书,配置HTTPS时,需要将所有证书拼接在一起组成一份完整的证书后再上传。拼接后的证书类似图2。 通过记事本打开所有*.PEM格式的证书文件,将服务器证书放在首位,再放置中间证书。一般情况下,机构在颁发证书的时候会有对应说明,请注意查阅相关规则。通用的规则如下: 证书之间没有空行。 证书链的格式如下: -----BEGIN CERTIFICATE----- -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- -----END CERTIFICATE-----
-
注意事项 录制规则配置支持域名级、应用级和流级,优先生效细粒度配置(即流级别最优先),同级配置不支持多种录制类型。 直播服务不支持清理录制内容,仅记录直播录制事件,且直播录制事件的数据只保留30天。您可根据业务的实际需求,在OBS中手动清理录制文件或通过OBS生命周期管理功能实现录制文件的存留期限和策略。 直播录制过程中,若直播推流因网络抖动等问题中断,则直播服务将中止录制。当推流重新启动时,直播服务将重新开启新的录制任务。 配置录制后,启动推流即开始录制,结束推流才可停止录制,暂无法按需停启;若在推流过程中删除录制规则,录制仍然会继续,直到推流结束 。 OBS服务会因欠费停服,从而导致直播录制失败,建议您购买OBS存储包。 仅支持对接收到的源直播流进行录制,暂不支持录制直播转码流。
-
概述 视频直播服务为您提供了Referer防盗链、Key防盗链和IP黑白名单鉴权机制,对访问者的身份进行识别和过滤,符合规则的才可使用直播服务。 其中,Key防盗链鉴权功能旨在保护直播源站资源不被非法下载盗用。采用Referer防盗链方法添加Referer黑、白名单方式可以解决部分盗链问题。但是,由于Referer内容可以伪造,所以Referer防盗链方式不能很好的保护直播源站的资源。因此,建议采用Key防盗链鉴权方式保护直播源站资源更为安全有效。视频直播服务鉴权机制如表1所示。 表1 直播鉴权 项目 描述 配置 Referer防盗链 您可以配置访问的Referer黑白名单,对访问者身份进行识别和过滤。 请参见Referer防盗链。 Key防盗链 您可以配置防盗链Key,通过URL鉴权方式保障直播资源的安全。 请参见Key防盗链。 IP黑白名单 您可以配置访问的IP黑白名单,对访问者身份进行识别和过滤。 请参见IP黑白名单。 父主题: 播放鉴权
-
配置流程 消息订阅的配置流程,如图1所示。 图1 消息订阅配置流程图 创建消息主题:在 消息通知 服务控制台新建消息主题,用于消息发送和订阅通知。 添加订阅:将消息主题添加到订阅中接收发布至主题的消息,在订阅主题且确认订阅后,终端节点能够接收到向该主题发布的所有消息。 设置主题策略:授权直播服务可对该主题发布消息。 配置直播消息订阅:在直播控制台配置消息订阅,在直播推流开始和结束,以及录制时收到对应的消息通知。
-
录制通知消息模板 录制通知的消息模板如下所示,消息中各字段说明如表3所示。 Live Record Notify, domain: {domain}, app_name: {app_name}, stream_name: {stream_name}, download_url: {download_url}, filename: {filename},asset_id: {asset_id}, duration: {duration}, event: {event}, timestamp: {timestamp} 表3 RecordNotifyTemplate字段说明 字段 描述 domain 推流域名。 app_name 应用名称,与推流地址中的AppName保持一致。 stream_name 直播流名称。 download_url 录制文件的下载地址,当event的值不为RECORD_NEW_FILE时,该字段为空。 filename 录制文件的名称,当event的值不为RECORD_NEW_FILE时,该字段为空。 asset_id 录制文件的媒资ID,点播服务分配给该录制文件的唯一标识,当event的值不为RECORD_NEW_FILE时,该字段为空。 duration 录制文件的时长,当event的值不为RECORD_NEW_FILE时,该字段为0。 event 录制事件,包括: RECORD_START: 录制任务开始。 RECORD_NEW_FILE:产生新的录制文件。 RECORD_OVER:录制任务结束。 RECORD_FAIL:录制任务失败。 timestamp 录制时间戳。
-
直播视频录制 标准直播和低时延直播都支持视频录制功能,操作流程相同,如下所示。 直播录制是指在直播推流时将直播内容进行录制并将录制的视频存储到OBS( 对象存储服务 Object Storage Service)中,然后在OBS中对录制的直播视频进行下载、分享等处理。 因直播录制文件最终存储在OBS中,所以您需要在OBS中创建存储桶,操作请参见创建桶。其中,OBS服务计费情况,请参见OBS产品价格详情。 您需要授权直播服务使用OBS桶存储录制文件,操作请参见云资源授权。 您可以设置直播录制格式、周期等,操作请参见配置录制模板。 如您想实时了解直播录制状态,可在直播录制前配置录制回调,操作请参见配置录制回调。 开始直播推流。 直播录制完成后,您可以在直播、OBS服务中管理录制文件,如预览、下载、分享等,操作请参见管理录制文件。 父主题: 快速入门
-
日志说明 日志命名规则:播放域名_日志时间.log.gz 日志生成规则:日志默认按5分钟粒度进行分割,若域名无请求,则不会产生日志数据包。正在进行拉流的直播日志一般4个小时后才能获取到最完整的日志文件。 日志格式: 标准直播场景: [time_local]|play_domain|client_ip|cdn_ip|url|http_code|cache_hit|scheme|method|period_bytes_sent|period_duration|ua|refer|app|stream 低时延直播场景: [time_local]|play_domain|client_ip|cdn_ip|url|http_code|cache_hit|scheme|method|period_bytes_sent|period_duration|ua|refer|app|stream 若某字段不涉及或为空时,用-表示;若字段信息中存在空格,则空格需带上英文双引号""。 日志示例: 标准直播场景 [06/Mar/2023:06:51:26 +0800]|pullexample.huaweicloud.com|49.1.1.*|42.11.1.2|http://pullexample.huaweicloud.com/live/stream-123.flv|200|HIT|HTTP|GET|1024|4|Lavf/58.12.100|-|live|stream-123 低时延直播场景: [06/Mar/2023:06:51:26 +0800]|pullexample.huaweicloud.com|49.1.1.*|42.11.1.2|webrtc://pullexample.huaweicloud.com/live/stream-123.sdp|200|HIT|WebRTC|GET|1024|4|Lavf/58.12.100|-|live|stream-123 各字段的含义如表1所示。 表1 日志字段含义说明 字段名 字段含义 字段示例 time_local 通用日志格式下的本地时间,标记本次统计的时间值。 [06/Mar/2023:06:51:26 +0800] play_domain CDN加速 域名。 pullexample.huaweicloud.com client_ip 客户端IP。 49.1.1.* cdn_ip 播放用户接入的CDN节点IP。 42.11.1.2 url 完整的访问url。 标准直播 http://pullexample.huaweicloud.com/live/stream-123.flv 低时延直播 webrtc://pullexample.huaweicloud.com/live/stream-123.sdp http_code HTTP状态码。 200 cache_hit 缓存命中状态,有如下两种: HIT MISS HIT scheme 访问协议,有如下四种: HTTP HTTPS RTMP WebRTC 标准直播:HTTP、HTTPS或RTMP 低时延直播:WebRTC method HTTP方法 GET period_bytes_sent 周期内发送字节数,对应的统计周期时间为period_duration。 1024 period_duration 统计周期,单位:s,精度到秒。 4 ua User - Agent信息。 Lavf/58.12.100 refer Referer信息。 - app 挂载点 live stream 流名 stream-123
-
示例流程 图1 给用户授权Live只读权限流程 创建用户组并授权 在 IAM 控制台创建用户组,并授予Live只读权限“Live ReadOnlyAccess”。 创建用户并加入用户组 在IAM控制台创建用户,并将其加入1中创建的用户组。 用户登录并验证权限 新创建的用户登录控制台,切换至授权区域,验证权限: 在“服务列表”中选择视频直播服务,进入“域名管理”界面进行添加域名操作,若提示权限不足,则表示“Live ReadOnlyAccess”已生效。
共100000条
- 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
- 3312
- 3313
- 3314
- 3315
- 3316
- 3317
- 3318
- 3319
- 3320
- 3321
- 3322
- 3323
- 3324
- 3325
- 3326
- 3327
- 3328
- 3329
- 3330
- 3331
- 3332
- 3333
- 3333
推荐文章