云豹直播系统源码接入华为云存储,含问题及解决方法

发布来源:云豹科技
发布人:云豹科技
2021-04-09 10:05:09

云豹直播系统源码接入华为云存储该怎么做?以下是云豹科技小编为大家整理的全套方案教程,各位客户大大们可以看着教程自行学习,也可直接联系我司为您接入。

云豹直播系统源码接入华为云存储的前期准备工作

1.注册云服务账号开通对象存储服务。

  (1)登录公有云网站。在页面右上角单击“注册”。按需填写注册 信息并单击“同意协议并注册”。

  (2)开通OBS服务,使用OBS服务之前必须先充值,才能正常使用OBS服务。

  (3)登录OBS管理控制台。单击页面右上角的“费用”进入费用中心页面。单击“充值”,     系统自动跳转到充值窗口。根据界面提示信息,对账户进行充值。充值成功后,关闭充值窗口,返回管理控制台首页。单击“对象存储服务”,开通并进入OBS管理控制台。

2.创建访问密钥

OBS通过用户账号中的AK和SK进行签名验证,确保通过授权的账号才能访问指定的OBS资源。

  (1).登录OBS控制台。

  (2).单击页面右上角的用户名,并选择“我的凭证”。

  (3).在“我的凭证”页面,单击左侧导航栏的“访问密钥”。

  (4).在“访问密钥”页面,单击“新增访问密钥”。

  (5).在弹出的“新增访问密钥”对话框中,输入登录密码和对应验证码。

  (6).用户如果未绑定邮箱和手机,则只需输入登录密码。用户如果同时绑定了邮箱和手机,可以选择其中一种方式进行验证。

  (7).单击“确定”。在弹出的“下载确认”提示框中,单击“确定”后,密钥会直接保存到浏览器默认的下载文件夹中。打开下载下来的“credentials.csv”文件既可获取到访问密钥(AK和SK)。

3.获取终端节点(Endpoint)

  请在地区和终端节点页面获取OBS各区域的终端节点(Endpoint)信息。

4.创建桶并配置参数

示例图如下:


直播系统源码


5.下载OBS iOS SDK的最新版本:OBS iOS SDK 

  (1).将OBS.framework添加到工程中,勾选“Copy items if needed”。


直播系统源码


  (2).将“TARGETS > Build Settings > Apple LLVM9.0 – language –Modules > Allow Non-modular includes in Framework Modules”设置成“Yes”。


直播系统源码


  (3).引入头文件#import <OBS/OBS.h>

二、云豹直播系统源码接入华为云存储,部分代码如下

 

1.创建一个OBSClient实例


     OBSStaticCredentialProvider *credentailProvider = [[OBSStaticCredentialProvider alloc] initWithAccessKey:HUAWEI_KEY secretKey:HUAWEI_SECRET_KEY];
    
        OBSServiceConfiguration *conf = [[OBSServiceConfiguration alloc] initWithURLString:@"Endpoint" credentialProvider:credentailProvider];
    
        // 初始化client
        OBSClient *client  = [[OBSClient alloc] initWithConfiguration:conf];
 // 创建列举对象请求
                    OBSListBucketsRequest *request = [OBSListBucketsRequest new];
 
                    // 列举对象
                    OBSBFTask *task = [client listBuckets:request completionHandler:^(OBSListBucketsResponse *response, NSError *error) {
                 
                    }];



2.上传文件


        //backetname 桶名称
    // filePath 文件路径
    //objectname 对象描述标识(文件名)
        OBSPutObjectWithFileRequest *requests = [[OBSPutObjectWithFileRequest  alloc] initWithBucketName:backetname objectKey:objectname uploadFilePath:filePath];
        // 上传进度
        requests.uploadProgressBlock = ^(int64_t bytesSent, int64_t totalBytesSent, int64_t totalBytesExpectedToSend) {
            NSLog(@"%0.1f%%",(float)floor(totalBytesSent*10000/totalBytesExpectedToSend)/100);
        };
          // 上传文件结果回调
[ client putObject:requests      completionHandler:^(OBSPutObjectResponse *response, NSError *error){
      if([response.statusCodeisEqualToString:@"200"]){
           
     // 生成授权访问url
   [client createV2PreSignedURL:requests expireAfter:3600 completionHandler:^(NSString *urlString, NSString *httpVerb, NSDictionary *signedHeaders) {
        NSRange range = [urlString rangeOfString:@"?AWSAccessKeyId"];//匹配得到的下标
        NSLog(@"获取下标===%lu",(unsigned long)range.location);
            NSString *zstring = [urlString substringToIndex:range.location];
            [imageUrlArray addObject:zstring];
           NSLog(@"链接%@",zstring);
      }];
                       
            
      }else{
     //图片上传失败
         }
  }];
 [task waitUntilFinished];


注意:

Endpoint是以http或https开头,要不然上传会报错

filePath是文件路径,如果想传data数据的话需要用到流式上传,需要使用OBSPutObjectWithDataRequest作为对象的数据源。

集成过程中遇到的问题:

1.集成完成后上传文件提示Attempted to create a task in a session that has been invalidated这个错误导致崩溃。原因是obsclient没有放在函数外边,导致创建后销毁的太早了,每次创建后都会重新创建一个client所致。

解决方法:

1)创建全局obsclient  

2)如果是局部变量的话,应该通过对请求任务执行waitUntilFinished操作以保证Client在请求任务执行期间始终有效,否则可能造成网络请求失败,程序崩溃的问题。

 

2.上传成功后打印response中并没有返回文件的链接

解决方法:在上传成功后进行在使用url进行授权访问,调用createV2PreSignedURL方法回去文件链接地址,如果在上传文件之前调用此方法也会生成链接,所以将本方法放到了上传成功之后调用的。

以上就是云豹直播系统源码在接入华为云存储时的操作步骤、可能会出现的问题以及解决方法,如果还有不明白的地方,欢迎联系云豹科技。

 

声明:以上内容为云豹科技原创,未经公司同意,禁止转载,否则将追究相关法律责任www.yunbaokj.com

声明:
以上内容为云豹科技作者本人原创,未经作者本人同意,禁止转载,否则将追究相关法律责任
立即查看