场景
在上两节分别介绍了
客户端和
服务端的相关操作,接下来我们介绍如何将客户端和服务端连接起来使用,如果您还没有阅读前两节,强烈建议先阅读前两节,然后再阅读本节。
视频监控
在前言里面,介绍了可以方便的用于网络摄像头等设备,这里,会详细介绍一下如何使用。
流程
角色包括三个,网络摄像机,应用服务器,阿里云对象存储服务(OSS),网络摄像机内部使用OSS MEDIA C SDK的client部分,应用服务器内部使用OSS MEDIA C SDK的server部分。
当网络摄像机拍摄了一段视频,需要上传到OSS。流程如下:
char* global_temp_access_key_id = NULL;
char* global_temp_access_key_secret = NULL;
char* global_temp_token = NULL;
/* 授权函数 */
static void auth_func(oss_media_file_t *file) {
file->endpoint = "your endpoint";
file->is_cname = 0;
file->access_key_id = global_temp_access_key_id;
file->access_key_secret = global_temp_access_key_secret;
file->token = global_temp_token;
/* 本次授权的有效时间 */
file->expiration = time(NULL) + 300;
}
/* 模拟服务端发送token给客户端 */
static void send_token_to_client(oss_media_token_t token) {
global_temp_access_key_id = token.tmpAccessKeyId;
global_temp_access_key_secret = token.tmpAccessKeySecret;
global_temp_token = token.securityToken;
}
void get_and_use_token() {
oss_media_token_t token;
/* 服务端逻辑:从阿里云获取到临时token后发送给客户端 */
{
int ret;
char *policy = NULL;
oss_media_config_t config;
policy = "{\n"
"\"Statement\": [\n"
"{"
"\"Action\": \"oss:*\",\n"
"\"Effect\": \"Allow\",\n"
"\"Resource\": \"*\"\n"
"}\n"
"],\n"
"\"Version\": \"1\"\n"
"}\n";
init_media_config(&config);
/* 从阿里云请求一个临时授权token */
ret = oss_media_get_token_from_policy(&config, policy,
17 * 60, &token);
if (ret != 0) {
printf ("Get token failed.");
return;
}
/* 模拟将临时token发送给客户端 */
send_token_to_client(token);
}
/* 客户端逻辑:从服务端获取到临时token后,使用临时token操作文件 */
{
int ret;
int64_t write_size = 0;
oss_media_file_t *file = NULL;
char *content = NULL;
char *bucket_name;
char *object_key;
oss_media_file_stat_t stat;
content = "hello oss media file\n";
bucket_name = "<your bucket name>";
object_key = "key";
/* 打开文件 */
file = oss_media_file_open(bucket_name, object_key, "w", auth_func);
if (file != NULL) {
printf ("open file failed.");
return;
}
/* 写文件 */
write_size = oss_media_file_write(file, content, strlen(content));
if (write_size != strlen(content)) {
printf ("write file failed.");
return;
}
/* 关闭文件释放资源 */
oss_media_file_close(file);
}
}
提示:
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
[203] :api鉴权失败