• 关于

    直播oss

    的搜索结果

问题

视频直播,无法拉流

wlxstar 2019-12-01 21:12:02 4893 浏览量 回答数 4

问题

OSS 推流,可以做直播?

31273055 2019-12-01 19:16:38 265 浏览量 回答数 2

回答

视频直播服务支持将接收到的源视频流进行录制,以 .ts 分片视频文件保存至指定的点播服务中设置为输入媒体Bucket的OSS存储位置。因此可以直接利用视频点播服务强大的媒体转码处理能力和集成化的点播场景支持,非常方便地将直播录制内容以点播方式供用户观看。 常见的使用场景: 1、将直播录制的m3u8格式视频转换为mp4、flv等单个视频文件。 2、将高清直播录制内容转码为多码率、多分辨率视频格式。 3、为直播录制内容加水印。 具体的配置步骤 1. 配置直播录制 参见 录制存储至OSS、录制存储至VOD。 配置点播媒体工作流 直播录制的文件已经配置保存至点播服务的输入媒体Bucket下的某个目录,我们就可以在该目录下配置相应的媒体工作流,以达到当录制索引文件生成时,自动触发媒体工作流执行既定的视频处理流程。 举例来说:在第一步中,设置一个AppName为 live ,录制直播内容至名为 LiveInput 的输入媒体Bucket下,record/live/{StreamName}/{UnixTimestamp}_{Sequence} 位置。 则一个AppName为 live ,StreamName为 abc 的直播流,在一次直播结束时,直播服务会将录制内容的 .ts 文件保存至 LiveInput Bucket下 record/live/abc 目录下;而默认的录制索引文件 abc.m3u8 保存为 record/live/abc.m3u8 。 我们可以在点播服务中设置,输入路径为 LiveInput Bucket下 record/live 目录的媒体工作流 liveWorkFlow_1, 当record/live/abc.m3u8 文件创建的时候,点播系统即会触发 liveWorkFlow_1 执行。 媒体工作流设置参见 视频点播-媒体工作流 Tips: 媒体工作流的触发执行的规则: 以新增文件的路径为基础,检查工作流绑定的位置,如果新增文件的路径中包含规则绑定的字符串则匹配,不包含则不匹配。如新增文件 http://bucket.oss-cn-hangzhou.aliyuncs.com/A/B/C/1.flv 对以下规则的匹配情况: http://bucket.oss-cn-hangzhou.aliyuncs.com/A/B/C/ 匹配 http://bucket.oss-cn-hangzhou.aliyuncs.com/A/B/ 匹配 http://bucket.oss-cn-hangzhou.aliyuncs.com/A/ 匹配 http://bucket.oss-cn-hangzhou.aliyuncs.com/ 匹配 http://bucket.oss-cn-hangzhou.aliyuncs.com/A/B/CC/ 不匹配 http://bucket.oss-cn-hangzhou.aliyuncs.com/A/B2/ 不匹配 http://bucket.oss-cn-hangzhou.aliyuncs.com/A2/B/C/ 不匹配 因此,如果您只需要对指定AppName的直播录制内容进行媒体工作流处理,则将工作流的输入路径设置至指定AppName的目录;如您需要对所有AppName的直播录制内容进行媒体工作流处理,则设置至 record 目录。

保持可爱mmm 2020-03-30 11:56:31 0 浏览量 回答数 0

阿里云试用中心,为您提供0门槛上云实践机会!

0元试用32+款产品,最高免费12个月!拨打95187-1,咨询专业上云建议!

问题

直播系统直播数据如何直接保存OSS里呢 没找到相应的API或者SDK里也没找到有此功能

何翔大侠 2019-12-01 19:38:24 998 浏览量 回答数 1

问题

录制直播-在oss中找不到存储的ts文件。

wotu 2019-12-01 20:00:27 1320 浏览量 回答数 1

问题

关于SRS直播服务器的直播流,如何存储到阿里OSS上?

沐王 2019-12-01 20:54:44 2694 浏览量 回答数 1

问题

视频直播遇到的问题

123456zyl 2019-12-01 18:58:24 512 浏览量 回答数 0

问题

各位大神:阿里云直播,转码后,存储在OSS中,播放遇到权限问题,怎么整?

suifentgek 2019-12-01 20:13:36 2891 浏览量 回答数 2

问题

视频直播的视频数据是怎么自动存到oss的

1877829912135473 2019-12-01 19:52:43 8 浏览量 回答数 1

回答

详细解答可以参考官方帮助文档OSS MEDIA C SDK 客户端部分支持将接收到的H.264、AAC封装为TS、M3U8格式后写入OSS,除了基础接口外,还提供封装好的录播、直播接口。 接口HLS相关封装接口都位于oss_media_hls_stream.h中,目前提供的接口有: oss_media_hls_stream_openoss_media_hls_stream_writeoss_media_hls_stream_close 下面详细介绍各个接口的功能和注意事项 基础结构体介绍/** * OSS MEDIA HLS STREAM OPTIONS的描述信息 */typedef struct oss_media_hls_stream_options_s { int8_t is_live; char *bucket_name; char *ts_name_prefix; char *m3u8_name; int32_t video_frame_rate; int32_t audio_sample_rate; int32_t hls_time; int32_t hls_list_size;} oss_media_hls_stream_options_t;/** * OSS MEDIA HLS STREAM的描述信息 */typedef struct oss_media_hls_stream_s { const oss_media_hls_stream_options_t *options; oss_media_hls_file_t *ts_file; oss_media_hls_file_t *m3u8_file; oss_media_hls_frame_t *video_frame; oss_media_hls_frame_t *audio_frame; oss_media_hls_m3u8_info_t *m3u8_infos; int32_t ts_file_index; int64_t current_file_begin_pts; int32_t has_aud; aos_pool_t *pool;} oss_media_hls_stream_t; 注: is_live,是否是直播模式,直播模式的时候M3U8文件里面只最新的几个ts文件信息bucket_name,存储HLS文件的存储空间名称ts_name_prefix,TS文件名称的前缀m3u8_name,M3U8文件名称video_frame_rate,视频数据的帧率audio_sample_rate,音频数据的采样率hls_time,每个ts文件最大持续时间hls_list_size,直播模式时在M3U8文件中最多保留的ts文件个数 打开HLS stream文件/** * @brief 打开一个oss hls文件 * @param[in] auth_func 授权函数,设置access_key_id/access_key_secret等 * @param[in] options 配置信息 * @return: * 返回非NULL时成功,否则失败 */oss_media_hls_stream_t* oss_media_hls_stream_open(auth_fn_t auth_func, const oss_media_hls_stream_options_t *options); 注: 示例代码参考:GitHub 关闭HLS stream文件/** * @brief 关闭HLS stream文件 */int oss_media_hls_stream_close(oss_media_hls_stream_t *stream); 注: 示例代码参考:GitHub 写HLS stream文件/** * @brief 写入视频和音频数据 * @param[in] video_buf 视频数据 * @param[in] video_len 视频数据的长度,可以为0 * @param[in] audio_buf 音频数据 * @param[in] audio_len 音频数据的长度,可以为0 * @param[in] stream HLS stream * @return: * 返回0时表示成功 * 否则, 表示出现了错误 */int oss_media_hls_stream_write(uint8_t *video_buf, uint64_t video_len, uint8_t *audio_buf, uint64_t audio_len, oss_media_hls_stream_t *stream); 示例程序: static void write_video_audio_vod() { int ret; int max_size = 10 * 1024 * 1024; FILE *h264_file, *aac_file; uint8_t *h264_buf, *aac_buf; int h264_len, aac_len; oss_media_hls_stream_options_t options; oss_media_hls_stream_t *stream; /* 设置HLS stream的参数值 */ options.is_live = 0; options.bucket_name = "<your buckete name>"; options.ts_name_prefix = "vod/video_audio/test"; options.m3u8_name = "vod/video_audio/vod.m3u8"; options.video_frame_rate = 30; options.audio_sample_rate = 24000; options.hls_time = 5; /* 打开HLS stream */ stream = oss_media_hls_stream_open(auth_func, &options); if (stream == NULL) { printf("open hls stream failed.\n"); return; } /* 创建两个buffer用来存储音频和视频数据 */ h264_buf = malloc(max_size); aac_buf = malloc(max_size); /* 读取一段视频数据和音频数据,然后调用接口写入OSS */ { h264_file = fopen("/path/to/video/1.h264", "r"); h264_len = fread(h264_buf, 1, max_size, h264_file); fclose(h264_file); aac_file = fopen("/path/to/audio/1.aac", "r"); aac_len = fread(aac_buf, 1, max_size, aac_file); fclose(aac_file); ret = oss_media_hls_stream_write(h264_buf, h264_len, aac_buf, aac_len, stream); if (ret != 0) { printf("write vod stream failed.\n"); return; } } /* 再读取一段视频数据和音频数据,然后调用接口写入OSS */ { h264_file = fopen("/path/to/video/2.h264", "r"); h264_len = fread(h264_buf, 1, max_size, h264_file); fclose(h264_file); aac_file = fopen("/path/to/audio/1.aac", "r"); aac_len = fread(aac_buf, 1, max_size, aac_file); fclose(aac_file); ret = oss_media_hls_stream_write(h264_buf, h264_len, aac_buf, aac_len, stream); if (ret != 0) { printf("write vod stream failed.\n"); return; } } /* 写完数据后,关闭HLS stream */ ret = oss_media_hls_stream_close(stream); if (ret != 0) { printf("close vod stream failed.\n"); return; } /* 释放资源 */ free(h264_buf); free(aac_buf); printf("convert H.264 and aac to HLS vod succeeded\n");} 注: 目前的录播、直播接口都支持只有视频,只有音频,同时有音视频等。示例代码参考:GitHub目前的录播、直播接口比较初级,用户如果有高级需求,可以模拟这两个接口,使用基础接口自助实现高级定制功能。可以通过示例程序观看效果

2019-12-01 23:15:00 0 浏览量 回答数 0

回答

详细解答可以参考官方帮助文档OSS MEDIA C SDK 客户端部分支持将接收到的H.264、AAC封装为TS、M3U8格式后写入OSS,除了基础接口外,还提供封装好的录播、直播接口。 接口HLS相关封装接口都位于oss_media_hls_stream.h中,目前提供的接口有: oss_media_hls_stream_openoss_media_hls_stream_writeoss_media_hls_stream_close 下面详细介绍各个接口的功能和注意事项 基础结构体介绍/** * OSS MEDIA HLS STREAM OPTIONS的描述信息 */typedef struct oss_media_hls_stream_options_s { int8_t is_live; char *bucket_name; char *ts_name_prefix; char *m3u8_name; int32_t video_frame_rate; int32_t audio_sample_rate; int32_t hls_time; int32_t hls_list_size;} oss_media_hls_stream_options_t;/** * OSS MEDIA HLS STREAM的描述信息 */typedef struct oss_media_hls_stream_s { const oss_media_hls_stream_options_t *options; oss_media_hls_file_t *ts_file; oss_media_hls_file_t *m3u8_file; oss_media_hls_frame_t *video_frame; oss_media_hls_frame_t *audio_frame; oss_media_hls_m3u8_info_t *m3u8_infos; int32_t ts_file_index; int64_t current_file_begin_pts; int32_t has_aud; aos_pool_t *pool;} oss_media_hls_stream_t; 注: is_live,是否是直播模式,直播模式的时候M3U8文件里面只最新的几个ts文件信息bucket_name,存储HLS文件的存储空间名称ts_name_prefix,TS文件名称的前缀m3u8_name,M3U8文件名称video_frame_rate,视频数据的帧率audio_sample_rate,音频数据的采样率hls_time,每个ts文件最大持续时间hls_list_size,直播模式时在M3U8文件中最多保留的ts文件个数 打开HLS stream文件/** * @brief 打开一个oss hls文件 * @param[in] auth_func 授权函数,设置access_key_id/access_key_secret等 * @param[in] options 配置信息 * @return: * 返回非NULL时成功,否则失败 */oss_media_hls_stream_t* oss_media_hls_stream_open(auth_fn_t auth_func, const oss_media_hls_stream_options_t *options); 注: 示例代码参考:GitHub 关闭HLS stream文件/** * @brief 关闭HLS stream文件 */int oss_media_hls_stream_close(oss_media_hls_stream_t *stream); 注: 示例代码参考:GitHub 写HLS stream文件/** * @brief 写入视频和音频数据 * @param[in] video_buf 视频数据 * @param[in] video_len 视频数据的长度,可以为0 * @param[in] audio_buf 音频数据 * @param[in] audio_len 音频数据的长度,可以为0 * @param[in] stream HLS stream * @return: * 返回0时表示成功 * 否则, 表示出现了错误 */int oss_media_hls_stream_write(uint8_t *video_buf, uint64_t video_len, uint8_t *audio_buf, uint64_t audio_len, oss_media_hls_stream_t *stream); 示例程序: static void write_video_audio_vod() { int ret; int max_size = 10 * 1024 * 1024; FILE *h264_file, *aac_file; uint8_t *h264_buf, *aac_buf; int h264_len, aac_len; oss_media_hls_stream_options_t options; oss_media_hls_stream_t *stream; /* 设置HLS stream的参数值 */ options.is_live = 0; options.bucket_name = "<your buckete name>"; options.ts_name_prefix = "vod/video_audio/test"; options.m3u8_name = "vod/video_audio/vod.m3u8"; options.video_frame_rate = 30; options.audio_sample_rate = 24000; options.hls_time = 5; /* 打开HLS stream */ stream = oss_media_hls_stream_open(auth_func, &options); if (stream == NULL) { printf("open hls stream failed.\n"); return; } /* 创建两个buffer用来存储音频和视频数据 */ h264_buf = malloc(max_size); aac_buf = malloc(max_size); /* 读取一段视频数据和音频数据,然后调用接口写入OSS */ { h264_file = fopen("/path/to/video/1.h264", "r"); h264_len = fread(h264_buf, 1, max_size, h264_file); fclose(h264_file); aac_file = fopen("/path/to/audio/1.aac", "r"); aac_len = fread(aac_buf, 1, max_size, aac_file); fclose(aac_file); ret = oss_media_hls_stream_write(h264_buf, h264_len, aac_buf, aac_len, stream); if (ret != 0) { printf("write vod stream failed.\n"); return; } } /* 再读取一段视频数据和音频数据,然后调用接口写入OSS */ { h264_file = fopen("/path/to/video/2.h264", "r"); h264_len = fread(h264_buf, 1, max_size, h264_file); fclose(h264_file); aac_file = fopen("/path/to/audio/1.aac", "r"); aac_len = fread(aac_buf, 1, max_size, aac_file); fclose(aac_file); ret = oss_media_hls_stream_write(h264_buf, h264_len, aac_buf, aac_len, stream); if (ret != 0) { printf("write vod stream failed.\n"); return; } } /* 写完数据后,关闭HLS stream */ ret = oss_media_hls_stream_close(stream); if (ret != 0) { printf("close vod stream failed.\n"); return; } /* 释放资源 */ free(h264_buf); free(aac_buf); printf("convert H.264 and aac to HLS vod succeeded\n");} 注: 目前的录播、直播接口都支持只有视频,只有音频,同时有音视频等。示例代码参考:GitHub目前的录播、直播接口比较初级,用户如果有高级需求,可以模拟这两个接口,使用基础接口自助实现高级定制功能。可以通过示例程序观看效果

2019-12-01 23:15:01 0 浏览量 回答数 0

回答

详细解答可以参考官方帮助文档OSS MEDIA C SDK 客户端部分支持将接收到的H.264、AAC封装为TS、M3U8格式后写入OSS,除了基础接口外,还提供封装好的录播、直播接口。 接口HLS相关封装接口都位于oss_media_hls_stream.h中,目前提供的接口有: oss_media_hls_stream_openoss_media_hls_stream_writeoss_media_hls_stream_close 下面详细介绍各个接口的功能和注意事项 基础结构体介绍/** * OSS MEDIA HLS STREAM OPTIONS的描述信息 */typedef struct oss_media_hls_stream_options_s { int8_t is_live; char *bucket_name; char *ts_name_prefix; char *m3u8_name; int32_t video_frame_rate; int32_t audio_sample_rate; int32_t hls_time; int32_t hls_list_size;} oss_media_hls_stream_options_t;/** * OSS MEDIA HLS STREAM的描述信息 */typedef struct oss_media_hls_stream_s { const oss_media_hls_stream_options_t *options; oss_media_hls_file_t *ts_file; oss_media_hls_file_t *m3u8_file; oss_media_hls_frame_t *video_frame; oss_media_hls_frame_t *audio_frame; oss_media_hls_m3u8_info_t *m3u8_infos; int32_t ts_file_index; int64_t current_file_begin_pts; int32_t has_aud; aos_pool_t *pool;} oss_media_hls_stream_t; 注: is_live,是否是直播模式,直播模式的时候M3U8文件里面只最新的几个ts文件信息bucket_name,存储HLS文件的存储空间名称ts_name_prefix,TS文件名称的前缀m3u8_name,M3U8文件名称video_frame_rate,视频数据的帧率audio_sample_rate,音频数据的采样率hls_time,每个ts文件最大持续时间hls_list_size,直播模式时在M3U8文件中最多保留的ts文件个数 打开HLS stream文件/** * @brief 打开一个oss hls文件 * @param[in] auth_func 授权函数,设置access_key_id/access_key_secret等 * @param[in] options 配置信息 * @return: * 返回非NULL时成功,否则失败 */oss_media_hls_stream_t* oss_media_hls_stream_open(auth_fn_t auth_func, const oss_media_hls_stream_options_t *options); 注: 示例代码参考:GitHub 关闭HLS stream文件/** * @brief 关闭HLS stream文件 */int oss_media_hls_stream_close(oss_media_hls_stream_t *stream); 注: 示例代码参考:GitHub 写HLS stream文件/** * @brief 写入视频和音频数据 * @param[in] video_buf 视频数据 * @param[in] video_len 视频数据的长度,可以为0 * @param[in] audio_buf 音频数据 * @param[in] audio_len 音频数据的长度,可以为0 * @param[in] stream HLS stream * @return: * 返回0时表示成功 * 否则, 表示出现了错误 */int oss_media_hls_stream_write(uint8_t *video_buf, uint64_t video_len, uint8_t *audio_buf, uint64_t audio_len, oss_media_hls_stream_t *stream); 示例程序: static void write_video_audio_vod() { int ret; int max_size = 10 * 1024 * 1024; FILE *h264_file, *aac_file; uint8_t *h264_buf, *aac_buf; int h264_len, aac_len; oss_media_hls_stream_options_t options; oss_media_hls_stream_t *stream; /* 设置HLS stream的参数值 */ options.is_live = 0; options.bucket_name = "<your buckete name>"; options.ts_name_prefix = "vod/video_audio/test"; options.m3u8_name = "vod/video_audio/vod.m3u8"; options.video_frame_rate = 30; options.audio_sample_rate = 24000; options.hls_time = 5; /* 打开HLS stream */ stream = oss_media_hls_stream_open(auth_func, &options); if (stream == NULL) { printf("open hls stream failed.\n"); return; } /* 创建两个buffer用来存储音频和视频数据 */ h264_buf = malloc(max_size); aac_buf = malloc(max_size); /* 读取一段视频数据和音频数据,然后调用接口写入OSS */ { h264_file = fopen("/path/to/video/1.h264", "r"); h264_len = fread(h264_buf, 1, max_size, h264_file); fclose(h264_file); aac_file = fopen("/path/to/audio/1.aac", "r"); aac_len = fread(aac_buf, 1, max_size, aac_file); fclose(aac_file); ret = oss_media_hls_stream_write(h264_buf, h264_len, aac_buf, aac_len, stream); if (ret != 0) { printf("write vod stream failed.\n"); return; } } /* 再读取一段视频数据和音频数据,然后调用接口写入OSS */ { h264_file = fopen("/path/to/video/2.h264", "r"); h264_len = fread(h264_buf, 1, max_size, h264_file); fclose(h264_file); aac_file = fopen("/path/to/audio/1.aac", "r"); aac_len = fread(aac_buf, 1, max_size, aac_file); fclose(aac_file); ret = oss_media_hls_stream_write(h264_buf, h264_len, aac_buf, aac_len, stream); if (ret != 0) { printf("write vod stream failed.\n"); return; } } /* 写完数据后,关闭HLS stream */ ret = oss_media_hls_stream_close(stream); if (ret != 0) { printf("close vod stream failed.\n"); return; } /* 释放资源 */ free(h264_buf); free(aac_buf); printf("convert H.264 and aac to HLS vod succeeded\n");} 注: 目前的录播、直播接口都支持只有视频,只有音频,同时有音视频等。示例代码参考:GitHub目前的录播、直播接口比较初级,用户如果有高级需求,可以模拟这两个接口,使用基础接口自助实现高级定制功能。可以通过示例程序观看效果

2019-12-01 23:15:00 0 浏览量 回答数 0

回答

详细解答可以参考官方帮助文档OSS MEDIA C SDK 客户端部分支持将接收到的H.264、AAC封装为TS、M3U8格式后写入OSS,除了基础接口外,还提供封装好的录播、直播接口。 接口HLS相关封装接口都位于oss_media_hls_stream.h中,目前提供的接口有: oss_media_hls_stream_openoss_media_hls_stream_writeoss_media_hls_stream_close 下面详细介绍各个接口的功能和注意事项 基础结构体介绍/** * OSS MEDIA HLS STREAM OPTIONS的描述信息 */typedef struct oss_media_hls_stream_options_s { int8_t is_live; char *bucket_name; char *ts_name_prefix; char *m3u8_name; int32_t video_frame_rate; int32_t audio_sample_rate; int32_t hls_time; int32_t hls_list_size;} oss_media_hls_stream_options_t;/** * OSS MEDIA HLS STREAM的描述信息 */typedef struct oss_media_hls_stream_s { const oss_media_hls_stream_options_t *options; oss_media_hls_file_t *ts_file; oss_media_hls_file_t *m3u8_file; oss_media_hls_frame_t *video_frame; oss_media_hls_frame_t *audio_frame; oss_media_hls_m3u8_info_t *m3u8_infos; int32_t ts_file_index; int64_t current_file_begin_pts; int32_t has_aud; aos_pool_t *pool;} oss_media_hls_stream_t; 注: is_live,是否是直播模式,直播模式的时候M3U8文件里面只最新的几个ts文件信息bucket_name,存储HLS文件的存储空间名称ts_name_prefix,TS文件名称的前缀m3u8_name,M3U8文件名称video_frame_rate,视频数据的帧率audio_sample_rate,音频数据的采样率hls_time,每个ts文件最大持续时间hls_list_size,直播模式时在M3U8文件中最多保留的ts文件个数 打开HLS stream文件/** * @brief 打开一个oss hls文件 * @param[in] auth_func 授权函数,设置access_key_id/access_key_secret等 * @param[in] options 配置信息 * @return: * 返回非NULL时成功,否则失败 */oss_media_hls_stream_t* oss_media_hls_stream_open(auth_fn_t auth_func, const oss_media_hls_stream_options_t *options); 注: 示例代码参考:GitHub 关闭HLS stream文件/** * @brief 关闭HLS stream文件 */int oss_media_hls_stream_close(oss_media_hls_stream_t *stream); 注: 示例代码参考:GitHub 写HLS stream文件/** * @brief 写入视频和音频数据 * @param[in] video_buf 视频数据 * @param[in] video_len 视频数据的长度,可以为0 * @param[in] audio_buf 音频数据 * @param[in] audio_len 音频数据的长度,可以为0 * @param[in] stream HLS stream * @return: * 返回0时表示成功 * 否则, 表示出现了错误 */int oss_media_hls_stream_write(uint8_t *video_buf, uint64_t video_len, uint8_t *audio_buf, uint64_t audio_len, oss_media_hls_stream_t *stream); 示例程序: static void write_video_audio_vod() { int ret; int max_size = 10 * 1024 * 1024; FILE *h264_file, *aac_file; uint8_t *h264_buf, *aac_buf; int h264_len, aac_len; oss_media_hls_stream_options_t options; oss_media_hls_stream_t *stream; /* 设置HLS stream的参数值 */ options.is_live = 0; options.bucket_name = "<your buckete name>"; options.ts_name_prefix = "vod/video_audio/test"; options.m3u8_name = "vod/video_audio/vod.m3u8"; options.video_frame_rate = 30; options.audio_sample_rate = 24000; options.hls_time = 5; /* 打开HLS stream */ stream = oss_media_hls_stream_open(auth_func, &options); if (stream == NULL) { printf("open hls stream failed.\n"); return; } /* 创建两个buffer用来存储音频和视频数据 */ h264_buf = malloc(max_size); aac_buf = malloc(max_size); /* 读取一段视频数据和音频数据,然后调用接口写入OSS */ { h264_file = fopen("/path/to/video/1.h264", "r"); h264_len = fread(h264_buf, 1, max_size, h264_file); fclose(h264_file); aac_file = fopen("/path/to/audio/1.aac", "r"); aac_len = fread(aac_buf, 1, max_size, aac_file); fclose(aac_file); ret = oss_media_hls_stream_write(h264_buf, h264_len, aac_buf, aac_len, stream); if (ret != 0) { printf("write vod stream failed.\n"); return; } } /* 再读取一段视频数据和音频数据,然后调用接口写入OSS */ { h264_file = fopen("/path/to/video/2.h264", "r"); h264_len = fread(h264_buf, 1, max_size, h264_file); fclose(h264_file); aac_file = fopen("/path/to/audio/1.aac", "r"); aac_len = fread(aac_buf, 1, max_size, aac_file); fclose(aac_file); ret = oss_media_hls_stream_write(h264_buf, h264_len, aac_buf, aac_len, stream); if (ret != 0) { printf("write vod stream failed.\n"); return; } } /* 写完数据后,关闭HLS stream */ ret = oss_media_hls_stream_close(stream); if (ret != 0) { printf("close vod stream failed.\n"); return; } /* 释放资源 */ free(h264_buf); free(aac_buf); printf("convert H.264 and aac to HLS vod succeeded\n");} 注: 目前的录播、直播接口都支持只有视频,只有音频,同时有音视频等。示例代码参考:GitHub目前的录播、直播接口比较初级,用户如果有高级需求,可以模拟这两个接口,使用基础接口自助实现高级定制功能。可以通过示例程序观看效果

2019-12-01 23:15:01 0 浏览量 回答数 0

回答

详细解答可以参考官方帮助文档OSS MEDIA C SDK 客户端部分支持将接收到的H.264、AAC封装为TS、M3U8格式后写入OSS,除了基础接口外,还提供封装好的录播、直播接口。 接口HLS相关封装接口都位于oss_media_hls_stream.h中,目前提供的接口有: oss_media_hls_stream_openoss_media_hls_stream_writeoss_media_hls_stream_close 下面详细介绍各个接口的功能和注意事项 基础结构体介绍/** * OSS MEDIA HLS STREAM OPTIONS的描述信息 */typedef struct oss_media_hls_stream_options_s { int8_t is_live; char *bucket_name; char *ts_name_prefix; char *m3u8_name; int32_t video_frame_rate; int32_t audio_sample_rate; int32_t hls_time; int32_t hls_list_size;} oss_media_hls_stream_options_t;/** * OSS MEDIA HLS STREAM的描述信息 */typedef struct oss_media_hls_stream_s { const oss_media_hls_stream_options_t *options; oss_media_hls_file_t *ts_file; oss_media_hls_file_t *m3u8_file; oss_media_hls_frame_t *video_frame; oss_media_hls_frame_t *audio_frame; oss_media_hls_m3u8_info_t *m3u8_infos; int32_t ts_file_index; int64_t current_file_begin_pts; int32_t has_aud; aos_pool_t *pool;} oss_media_hls_stream_t; 注: is_live,是否是直播模式,直播模式的时候M3U8文件里面只最新的几个ts文件信息bucket_name,存储HLS文件的存储空间名称ts_name_prefix,TS文件名称的前缀m3u8_name,M3U8文件名称video_frame_rate,视频数据的帧率audio_sample_rate,音频数据的采样率hls_time,每个ts文件最大持续时间hls_list_size,直播模式时在M3U8文件中最多保留的ts文件个数 打开HLS stream文件/** * @brief 打开一个oss hls文件 * @param[in] auth_func 授权函数,设置access_key_id/access_key_secret等 * @param[in] options 配置信息 * @return: * 返回非NULL时成功,否则失败 */oss_media_hls_stream_t* oss_media_hls_stream_open(auth_fn_t auth_func, const oss_media_hls_stream_options_t *options); 注: 示例代码参考:GitHub 关闭HLS stream文件/** * @brief 关闭HLS stream文件 */int oss_media_hls_stream_close(oss_media_hls_stream_t *stream); 注: 示例代码参考:GitHub 写HLS stream文件/** * @brief 写入视频和音频数据 * @param[in] video_buf 视频数据 * @param[in] video_len 视频数据的长度,可以为0 * @param[in] audio_buf 音频数据 * @param[in] audio_len 音频数据的长度,可以为0 * @param[in] stream HLS stream * @return: * 返回0时表示成功 * 否则, 表示出现了错误 */int oss_media_hls_stream_write(uint8_t *video_buf, uint64_t video_len, uint8_t *audio_buf, uint64_t audio_len, oss_media_hls_stream_t *stream); 示例程序: static void write_video_audio_vod() { int ret; int max_size = 10 * 1024 * 1024; FILE *h264_file, *aac_file; uint8_t *h264_buf, *aac_buf; int h264_len, aac_len; oss_media_hls_stream_options_t options; oss_media_hls_stream_t *stream; /* 设置HLS stream的参数值 */ options.is_live = 0; options.bucket_name = "<your buckete name>"; options.ts_name_prefix = "vod/video_audio/test"; options.m3u8_name = "vod/video_audio/vod.m3u8"; options.video_frame_rate = 30; options.audio_sample_rate = 24000; options.hls_time = 5; /* 打开HLS stream */ stream = oss_media_hls_stream_open(auth_func, &options); if (stream == NULL) { printf("open hls stream failed.\n"); return; } /* 创建两个buffer用来存储音频和视频数据 */ h264_buf = malloc(max_size); aac_buf = malloc(max_size); /* 读取一段视频数据和音频数据,然后调用接口写入OSS */ { h264_file = fopen("/path/to/video/1.h264", "r"); h264_len = fread(h264_buf, 1, max_size, h264_file); fclose(h264_file); aac_file = fopen("/path/to/audio/1.aac", "r"); aac_len = fread(aac_buf, 1, max_size, aac_file); fclose(aac_file); ret = oss_media_hls_stream_write(h264_buf, h264_len, aac_buf, aac_len, stream); if (ret != 0) { printf("write vod stream failed.\n"); return; } } /* 再读取一段视频数据和音频数据,然后调用接口写入OSS */ { h264_file = fopen("/path/to/video/2.h264", "r"); h264_len = fread(h264_buf, 1, max_size, h264_file); fclose(h264_file); aac_file = fopen("/path/to/audio/1.aac", "r"); aac_len = fread(aac_buf, 1, max_size, aac_file); fclose(aac_file); ret = oss_media_hls_stream_write(h264_buf, h264_len, aac_buf, aac_len, stream); if (ret != 0) { printf("write vod stream failed.\n"); return; } } /* 写完数据后,关闭HLS stream */ ret = oss_media_hls_stream_close(stream); if (ret != 0) { printf("close vod stream failed.\n"); return; } /* 释放资源 */ free(h264_buf); free(aac_buf); printf("convert H.264 and aac to HLS vod succeeded\n");} 注: 目前的录播、直播接口都支持只有视频,只有音频,同时有音视频等。示例代码参考:GitHub目前的录播、直播接口比较初级,用户如果有高级需求,可以模拟这两个接口,使用基础接口自助实现高级定制功能。可以通过示例程序观看效果

2019-12-01 23:15:01 0 浏览量 回答数 0

回答

详细解答可以参考官方帮助文档OSS MEDIA C SDK 客户端部分支持将接收到的H.264、AAC封装为TS、M3U8格式后写入OSS,除了基础接口外,还提供封装好的录播、直播接口。 接口HLS相关封装接口都位于oss_media_hls_stream.h中,目前提供的接口有: oss_media_hls_stream_openoss_media_hls_stream_writeoss_media_hls_stream_close 下面详细介绍各个接口的功能和注意事项 基础结构体介绍/** * OSS MEDIA HLS STREAM OPTIONS的描述信息 */typedef struct oss_media_hls_stream_options_s { int8_t is_live; char *bucket_name; char *ts_name_prefix; char *m3u8_name; int32_t video_frame_rate; int32_t audio_sample_rate; int32_t hls_time; int32_t hls_list_size;} oss_media_hls_stream_options_t;/** * OSS MEDIA HLS STREAM的描述信息 */typedef struct oss_media_hls_stream_s { const oss_media_hls_stream_options_t *options; oss_media_hls_file_t *ts_file; oss_media_hls_file_t *m3u8_file; oss_media_hls_frame_t *video_frame; oss_media_hls_frame_t *audio_frame; oss_media_hls_m3u8_info_t *m3u8_infos; int32_t ts_file_index; int64_t current_file_begin_pts; int32_t has_aud; aos_pool_t *pool;} oss_media_hls_stream_t; 注: is_live,是否是直播模式,直播模式的时候M3U8文件里面只最新的几个ts文件信息bucket_name,存储HLS文件的存储空间名称ts_name_prefix,TS文件名称的前缀m3u8_name,M3U8文件名称video_frame_rate,视频数据的帧率audio_sample_rate,音频数据的采样率hls_time,每个ts文件最大持续时间hls_list_size,直播模式时在M3U8文件中最多保留的ts文件个数 打开HLS stream文件/** * @brief 打开一个oss hls文件 * @param[in] auth_func 授权函数,设置access_key_id/access_key_secret等 * @param[in] options 配置信息 * @return: * 返回非NULL时成功,否则失败 */oss_media_hls_stream_t* oss_media_hls_stream_open(auth_fn_t auth_func, const oss_media_hls_stream_options_t *options); 注: 示例代码参考:GitHub 关闭HLS stream文件/** * @brief 关闭HLS stream文件 */int oss_media_hls_stream_close(oss_media_hls_stream_t *stream); 注: 示例代码参考:GitHub 写HLS stream文件/** * @brief 写入视频和音频数据 * @param[in] video_buf 视频数据 * @param[in] video_len 视频数据的长度,可以为0 * @param[in] audio_buf 音频数据 * @param[in] audio_len 音频数据的长度,可以为0 * @param[in] stream HLS stream * @return: * 返回0时表示成功 * 否则, 表示出现了错误 */int oss_media_hls_stream_write(uint8_t *video_buf, uint64_t video_len, uint8_t *audio_buf, uint64_t audio_len, oss_media_hls_stream_t *stream); 示例程序: static void write_video_audio_vod() { int ret; int max_size = 10 * 1024 * 1024; FILE *h264_file, *aac_file; uint8_t *h264_buf, *aac_buf; int h264_len, aac_len; oss_media_hls_stream_options_t options; oss_media_hls_stream_t *stream; /* 设置HLS stream的参数值 */ options.is_live = 0; options.bucket_name = "<your buckete name>"; options.ts_name_prefix = "vod/video_audio/test"; options.m3u8_name = "vod/video_audio/vod.m3u8"; options.video_frame_rate = 30; options.audio_sample_rate = 24000; options.hls_time = 5; /* 打开HLS stream */ stream = oss_media_hls_stream_open(auth_func, &options); if (stream == NULL) { printf("open hls stream failed.\n"); return; } /* 创建两个buffer用来存储音频和视频数据 */ h264_buf = malloc(max_size); aac_buf = malloc(max_size); /* 读取一段视频数据和音频数据,然后调用接口写入OSS */ { h264_file = fopen("/path/to/video/1.h264", "r"); h264_len = fread(h264_buf, 1, max_size, h264_file); fclose(h264_file); aac_file = fopen("/path/to/audio/1.aac", "r"); aac_len = fread(aac_buf, 1, max_size, aac_file); fclose(aac_file); ret = oss_media_hls_stream_write(h264_buf, h264_len, aac_buf, aac_len, stream); if (ret != 0) { printf("write vod stream failed.\n"); return; } } /* 再读取一段视频数据和音频数据,然后调用接口写入OSS */ { h264_file = fopen("/path/to/video/2.h264", "r"); h264_len = fread(h264_buf, 1, max_size, h264_file); fclose(h264_file); aac_file = fopen("/path/to/audio/1.aac", "r"); aac_len = fread(aac_buf, 1, max_size, aac_file); fclose(aac_file); ret = oss_media_hls_stream_write(h264_buf, h264_len, aac_buf, aac_len, stream); if (ret != 0) { printf("write vod stream failed.\n"); return; } } /* 写完数据后,关闭HLS stream */ ret = oss_media_hls_stream_close(stream); if (ret != 0) { printf("close vod stream failed.\n"); return; } /* 释放资源 */ free(h264_buf); free(aac_buf); printf("convert H.264 and aac to HLS vod succeeded\n");} 注: 目前的录播、直播接口都支持只有视频,只有音频,同时有音视频等。示例代码参考:GitHub目前的录播、直播接口比较初级,用户如果有高级需求,可以模拟这两个接口,使用基础接口自助实现高级定制功能。可以通过示例程序观看效果

2019-12-01 23:15:01 0 浏览量 回答数 0

回答

详细解答可以参考官方帮助文档OSS MEDIA C SDK 客户端部分支持将接收到的H.264、AAC封装为TS、M3U8格式后写入OSS,除了基础接口外,还提供封装好的录播、直播接口。 接口HLS相关封装接口都位于oss_media_hls_stream.h中,目前提供的接口有: oss_media_hls_stream_openoss_media_hls_stream_writeoss_media_hls_stream_close 下面详细介绍各个接口的功能和注意事项 基础结构体介绍/** * OSS MEDIA HLS STREAM OPTIONS的描述信息 */typedef struct oss_media_hls_stream_options_s { int8_t is_live; char *bucket_name; char *ts_name_prefix; char *m3u8_name; int32_t video_frame_rate; int32_t audio_sample_rate; int32_t hls_time; int32_t hls_list_size;} oss_media_hls_stream_options_t;/** * OSS MEDIA HLS STREAM的描述信息 */typedef struct oss_media_hls_stream_s { const oss_media_hls_stream_options_t *options; oss_media_hls_file_t *ts_file; oss_media_hls_file_t *m3u8_file; oss_media_hls_frame_t *video_frame; oss_media_hls_frame_t *audio_frame; oss_media_hls_m3u8_info_t *m3u8_infos; int32_t ts_file_index; int64_t current_file_begin_pts; int32_t has_aud; aos_pool_t *pool;} oss_media_hls_stream_t; 注: is_live,是否是直播模式,直播模式的时候M3U8文件里面只最新的几个ts文件信息bucket_name,存储HLS文件的存储空间名称ts_name_prefix,TS文件名称的前缀m3u8_name,M3U8文件名称video_frame_rate,视频数据的帧率audio_sample_rate,音频数据的采样率hls_time,每个ts文件最大持续时间hls_list_size,直播模式时在M3U8文件中最多保留的ts文件个数 打开HLS stream文件/** * @brief 打开一个oss hls文件 * @param[in] auth_func 授权函数,设置access_key_id/access_key_secret等 * @param[in] options 配置信息 * @return: * 返回非NULL时成功,否则失败 */oss_media_hls_stream_t* oss_media_hls_stream_open(auth_fn_t auth_func, const oss_media_hls_stream_options_t *options); 注: 示例代码参考:GitHub 关闭HLS stream文件/** * @brief 关闭HLS stream文件 */int oss_media_hls_stream_close(oss_media_hls_stream_t *stream); 注: 示例代码参考:GitHub 写HLS stream文件/** * @brief 写入视频和音频数据 * @param[in] video_buf 视频数据 * @param[in] video_len 视频数据的长度,可以为0 * @param[in] audio_buf 音频数据 * @param[in] audio_len 音频数据的长度,可以为0 * @param[in] stream HLS stream * @return: * 返回0时表示成功 * 否则, 表示出现了错误 */int oss_media_hls_stream_write(uint8_t *video_buf, uint64_t video_len, uint8_t *audio_buf, uint64_t audio_len, oss_media_hls_stream_t *stream); 示例程序: static void write_video_audio_vod() { int ret; int max_size = 10 * 1024 * 1024; FILE *h264_file, *aac_file; uint8_t *h264_buf, *aac_buf; int h264_len, aac_len; oss_media_hls_stream_options_t options; oss_media_hls_stream_t *stream; /* 设置HLS stream的参数值 */ options.is_live = 0; options.bucket_name = "<your buckete name>"; options.ts_name_prefix = "vod/video_audio/test"; options.m3u8_name = "vod/video_audio/vod.m3u8"; options.video_frame_rate = 30; options.audio_sample_rate = 24000; options.hls_time = 5; /* 打开HLS stream */ stream = oss_media_hls_stream_open(auth_func, &options); if (stream == NULL) { printf("open hls stream failed.\n"); return; } /* 创建两个buffer用来存储音频和视频数据 */ h264_buf = malloc(max_size); aac_buf = malloc(max_size); /* 读取一段视频数据和音频数据,然后调用接口写入OSS */ { h264_file = fopen("/path/to/video/1.h264", "r"); h264_len = fread(h264_buf, 1, max_size, h264_file); fclose(h264_file); aac_file = fopen("/path/to/audio/1.aac", "r"); aac_len = fread(aac_buf, 1, max_size, aac_file); fclose(aac_file); ret = oss_media_hls_stream_write(h264_buf, h264_len, aac_buf, aac_len, stream); if (ret != 0) { printf("write vod stream failed.\n"); return; } } /* 再读取一段视频数据和音频数据,然后调用接口写入OSS */ { h264_file = fopen("/path/to/video/2.h264", "r"); h264_len = fread(h264_buf, 1, max_size, h264_file); fclose(h264_file); aac_file = fopen("/path/to/audio/1.aac", "r"); aac_len = fread(aac_buf, 1, max_size, aac_file); fclose(aac_file); ret = oss_media_hls_stream_write(h264_buf, h264_len, aac_buf, aac_len, stream); if (ret != 0) { printf("write vod stream failed.\n"); return; } } /* 写完数据后,关闭HLS stream */ ret = oss_media_hls_stream_close(stream); if (ret != 0) { printf("close vod stream failed.\n"); return; } /* 释放资源 */ free(h264_buf); free(aac_buf); printf("convert H.264 and aac to HLS vod succeeded\n");} 注: 目前的录播、直播接口都支持只有视频,只有音频,同时有音视频等。示例代码参考:GitHub目前的录播、直播接口比较初级,用户如果有高级需求,可以模拟这两个接口,使用基础接口自助实现高级定制功能。可以通过示例程序观看效果

2019-12-01 23:15:00 0 浏览量 回答数 0

问题

基于阿里云产品的视频方案实验(一)

袖手哥 2019-12-01 21:13:48 8888 浏览量 回答数 0

问题

我用OSS产品实现在线音频直播必须配合MTS吗

周芒 2019-12-01 21:38:23 3281 浏览量 回答数 2

问题

阿里云视频直播为什么只能配置存储OSS,不能储存到VOD ?

i3kveiw4ablko 2020-10-20 18:02:36 3 浏览量 回答数 0

问题

视频直播转存oss无法选择bucket路径

飞弹哥 2019-12-01 19:02:15 178 浏览量 回答数 2

问题

求阿里云视频监控直存产品架构的具体方案

benjz 2019-12-01 21:05:51 4928 浏览量 回答数 0

问题

视频直播 录制功能启用没有在oss中找到对应的录制文件

ishengsheng 2019-12-01 18:52:14 280 浏览量 回答数 1

回答

据我所知,目前可以使用以下两种方式把摄像机的视频存储到OSS:1、摄像机直存,OSS有一个Media_C_SDK,该SDK可以是C语言,代码都开放,可以编译集成到摄像机的应用系统中。只需要调用接口,就可以把摄像机的H.246码流+AAC音频码流在摄像机端切片成HLS并直接存储到OSS中;另外,包括 安全令牌等功能SDK都已经支持了,由于存到OSS的视频已经是HLS了,所以,点播和直播都能支持,还有示例,用起来还是很方便的;2、ECS转存,对于不能改写摄像机代码的同学,可以使用这种方法。ECS上面部署收流服务器,摄像机把码流送到收流服务器,再通过服务器将视频码流写到OSS.OSS有多种SDK可以供服务器端使用,操作起来也是比较方便。

one刚刚 2019-12-02 01:40:56 0 浏览量 回答数 0

回答

最好是吧?最好就是如下软件:用智能媒体管理系统,这个里面包含了如下功能:1.文档格式转换、预览支持共48种文件类型不同办公文档的格式转换与预览。帮助用户搭建文档内容中心。1.图片内容识别支持25个主标签,上千个子标签。图片场景快速添加标签,帮助图片内容管理。3.人脸识别、聚类支持照片的人物识别与聚类。能够为照片添加人物维度属性,帮助快速查找人物。4.OSS云存储整合支持通过OSS 文件的URL直接进行数据处理分析。用户无需额外开发即能让OSS文件支持文档预览。至于设置,三言两语写不完,每一个功能都有具体的设置方法,自己认真去看一下。另外,关于视频直播,建议你用阿里云的视频直播系统。

ystpt 2019-12-02 01:41:25 0 浏览量 回答数 0

问题

高速通道打通不同地域的VPC,为何还需要DTS同步数据库数据

牧羊小人 2019-12-01 19:44:41 842 浏览量 回答数 2

回答

您好!使用存储至OSS,您需要授权视频直播可将视频内容写入OSS产品的权限,授权后才能将视频存储至指定的OSS bucket中。配置流程参考: https://help.aliyun.com/document_detail/84931.html?spm=5176.11065259.1996646101.searchclickresult.3c6e292biGOfnF

alvin.zhu 2019-12-02 00:49:17 0 浏览量 回答数 0

回答

可以的。2种方式:1,使用media c sdk,在sdk端会直接将h.264的数据封装成HLS协议的,然后用户就可以直接在任何支持HLS的浏览器或者播放器里面播放了,支持直播的。sdk:https://github.com/aliyun/aliyun-media-c-sdk2,使用OSS提供的RTMP,也支持直播。sdk:https://github.com/aliyun/aliyun-oss-c-sdk/tree/rtmp_develop

少强 2019-12-02 02:01:11 0 浏览量 回答数 0

问题

阿里云视频直播跨域问题

王小王001 2019-12-01 19:52:02 3950 浏览量 回答数 2

问题

Media-C-SDK之如何实现HLS封装接口?

青衫无名 2019-12-01 21:47:40 1319 浏览量 回答数 0

问题

直播无法播放

小南瓜拉 2019-12-01 19:30:20 1198 浏览量 回答数 1
阿里云大学 云服务器ECS com域名 网站域名whois查询 开发者平台 小程序定制 小程序开发 国内短信套餐包 开发者技术与产品 云数据库 图像识别 开发者问答 阿里云建站 阿里云备案 云市场 万网 阿里云帮助文档 免费套餐 开发者工具 企业信息查询 小程序开发制作 视频内容分析 企业网站制作 视频集锦 代理记账服务 企业建站模板