开发者社区 问答 正文

Media-C-SDK之如何实现常见问题?


OSS MEDIA C SDK和OSS C SDK是啥关系?

  • OSS MEDIA C SDK依赖于OSS C SDK,OSS MEDIA C SDK中的上传和下载等功能是通过调用OSS C SDK的接口实现的。


OSS MEDIA C SDK是否支持windows?

  • 目前还不支持。


是否支持追加写文件?

  • 支持,调用oss_media_file_open时使用“a”模式,然后可以通过多次调用oss_media_file_write接口实现追加写。


什么是role arn?如何获取role arn?

  • role arn表示的是需要扮演角色的id,由阿里云访问控制RAM提供。可以前往访问控制RAM > [backcolor=transparent]角色管理 > 点击已经创建的角色名称 > [backcolor=transparent]基本信息 > [backcolor=transparent]Arn,值类似于:acs:ram::xxxx:role/yyyyy。如果还没有已创建的角色,需要在角色管理页面创建一个新的用户角色,并赋予AliyunSTSAssumeRoleAccess和其他相应角色,更详细的介绍可以参考:RAM的文档


如何运行sample?

  • 修改sample/config.c文件,增加自己的access key id,access key secret,bucket等值,然后编译后,在bin目录下就会出现sample的可执行文件


报错:error:a timeout was reached

  • 检查一下host的值,是否是类似于oss-cn-hangzhou.aliyuncs.com的值。这个是C SDK的一个已知问题,会在后期版本修复。


运行sample时报错:error:Couldn’t resolve host name 和[code=-990, message=HttpIoError]

  • 修改sample/config.c文件,配置您自己的参数值,然后重新编译即可。测试也一样。


客户端和服务端的access key id,access key secret,token配置有啥不同和注意点?

  • 服务端只需要配置access key id和access key secret,这两个值有两种来源:第一个是主账号的AccessKeys,第二个是主账号生成的子账号的AccessKeys。
  • 客户端有两种配置方式,第一种是和服务端一样,只配置主账号或者子账号的access key id,access key secret,第二种是配置access key id,access key secret和token三个值,但这三个值都是服务端通过oss_media_get_token或者oss_media_get_token_from_policy获取到的临时AccessKey和token,有时间期限,超过有效期后,就不能再次使用。


执行sample获取token的时候出现以下错误:http_code=500, error_code=GetSTSTokenError, error_message=Internal Error

  • 原因是安装的libcurl不支持HTTPS协议,导致无法访问sts服务。具体过程是机器上没有安装openssl-devel等ssl的开发包,在编译libcurl的时候找不到ssl,libcurl就自动禁止了HTTPS协议,导致编译出来的libcurl库不支持HTTPS,最终访问STS失败。
  • 解决办法是先安装openssl-devel等ssl开发包,然后重新安装libcurl。在安装libcurl时,当执行完./configure后,检查最后一行的Protocols里包含了HTTPS,如果包含了,就说明正确了。

展开
收起
青衫无名 2017-10-20 10:14:10 1870 分享 版权
阿里云 AI 助理回答

OSS MEDIA C SDK与OSS C SDK之间是继承和扩展的关系。OSS C SDK是阿里云对象存储(Object Storage Service,简称OSS)提供的基础C语言软件开发工具包,它封装了直接与OSS服务交互的核心功能,如上传文件、下载文件、列举文件等操作。而OSS MEDIA C SDK则是在OSS C SDK的基础上进行了特定的扩展和优化,主要针对媒体文件的处理场景,提供了更适用于多媒体数据上传下载及管理的接口。因此,使用OSS MEDIA C SDK时,实际上也间接利用了OSS C SDK的功能。

关于您的其他问题:

  • Windows支持情况:目前OSS MEDIA C SDK不支持Windows系统,主要面向Linux等环境。

  • 追加写文件:OSS MEDIA C SDK通过指定特定模式("a"模式)来支持文件的追加写入,这允许用户在现有文件后添加内容,而不是覆盖原有内容。

  • Role ARN获取:Role ARN(Amazon Resource Name)用于标识阿里云RAM中的角色,您可以通过访问控制RAM界面找到已创建角色的ARN。如果需要创建新的角色并获取ARN,需遵循RAM文档指引,确保赋予适当权限,如AliyunSTSAssumeRoleAccess,以便于SDK能够以该角色身份进行操作。

  • 运行sample程序:首先需要个性化配置sample/config.c文件,填入正确的access key id、access key secret以及bucket名称等信息,然后编译执行生成的可执行文件。

  • 常见错误解决

    • 遇到“error:a timeout was reached”或“error:Couldn’t resolve host name”,可能是因为网络配置或DNS解析问题,检查网络连接和host设置是否正确。
    • “http_code=500, error_code=GetSTSTokenError”通常意味着服务端错误或本地环境问题,如上所述,可能是由于libcurl未正确支持HTTPS导致,需按照指导重新安装libcurl并确保其支持HTTPS协议。
  • 客户端和服务端配置差异

    • 服务端配置较为简单,仅需access key id和access key secret,来源可以是主账号或子账号的凭证。
    • 客户端配置除了上述两种方式外,还可以采用临时凭证(access key id, access key secret, token),这种方式安全性更高,但需要注意token的有效期,并及时刷新。

综上所述,OSS MEDIA C SDK的设计旨在简化媒体文件的管理和传输过程,同时依赖于基础的OSS C SDK实现核心功能。在使用过程中,注意根据具体需求调整配置,并关注环境兼容性和错误处理。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答