• 关于

    stream

    的搜索结果

问题

万网主机不支持streamsocketclient

万网主机不支持stream_socket_client万网主机不支持stream_socket_client万网主机不支持stream_socket_client万网主机不支持stream_socket_client万网主机不支持strea...
湖南人家园 2019-12-01 21:53:40 2840 浏览量 回答数 3

问题

在阿里云VPC环境下,部署了k8sV1.11.1高可用集群,kubelet一直有报一个错误

Oct 18 10:03:20 worker001 kubelet[18956]: E1018 10:03:20.625638 18956 streamwatcher.go:109] Unable to decode an event ...
ang 2019-12-01 20:23:32 913 浏览量 回答数 2

回答

您可以使用Arrays.stream Eg Arrays.stream(array); 您也可以Stream.of按@fge所述使用,看起来像 public static Stream of(T... values) { return Arrays.stream(values); } 但是note Stream.of(intArray)将返回,Stream<int[]>而Arrays.stream(intArr)如果IntStream您传递type数组,则将返回int[]。因此,简而言之,您可以观察两种方法之间的区别,例如 int[] arr = {1, 2}; Stream<int[]> arr1 = Stream.of(arr); IntStream stream2 = Arrays.stream(arr); 将原始数组传递给时Arrays.stream,将调用以下代码 public static IntStream stream(int[] array) { return stream(array, 0, array.length); } 当您将原始数组传递给Stream.of以下代码时,将被调用 public static Stream of(T t) { return StreamSupport.stream(new Streams.StreamBuilderImpl<>(t), false); } 因此,您得到不同的结果。 更新:如Stuart Marks的评论所述,的子范围重载Arrays.stream比使用更可取,Stream.of(array).skip(n).limit(m)因为前者会导致SIZED流,而后者则不会。原因是limit(m)不知道大小是m还是小于m,而Arrays.stream范围检查并知道流的确切大小您可以阅读Arrays.stream(array,start,end) here返回的流实现的源代码,而Stream.of(array).skip().limit()is 读取的流实现的源代码在这种方法内。
保持可爱mmm 2020-02-07 01:27:48 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

回答

详细解答可以参考官方帮助文档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: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

问题

System.ArgumentException流不可读

System.ArgumentException: 流不可读。 在 System.IO.StreamReader..ctor(Stream stream, Encoding encoding, Boolean detectEncodingF...
ap8139x3t 2019-12-01 20:17:46 9263 浏览量 回答数 2

问题

StreamDetails的含义

表示一个表的stream信息。 数据结构message StreamDetails {    required bool enable_stream = 1;    optional string stream_id =...
云栖大讲堂 2019-12-01 21:01:35 1351 浏览量 回答数 0

问题

如何操作ListStream

行为: 获取当前实例下所有表的stream信息。 请求结构:message ListStreamRequest {    optional string table_name = 1;} ...
云栖大讲堂 2019-12-01 21:00:14 1333 浏览量 回答数 0

回答

这是Reader的代码: class Reader(object): def __init__(self, stream): if isinstance(stream, str): self.name = "<unicode string>" self.check_printable(stream) self.buffer = stream+'\0' elif isinstance(stream, bytes): self.name = "<byte string>" self.raw_buffer = stream self.determine_encoding() else: self.stream = stream self.name = getattr(stream, 'name', "<file>") self.eof = False self.raw_buffer = None self.determine_encoding() 函数本身会检验数据类型然后做不同的处理。
游客gsy3rkgcdl27k 2019-12-01 23:24:32 0 浏览量 回答数 0

问题

如何使用Stream API/SDK

API 打开/关闭 Stream 用户可以在创建表的时候设置 Stream 是否开启,也可以通过 UpdateTable 来开启或者关闭 Stream。CreateTable 和 UpdateTable 中新增了 ...
云栖大讲堂 2019-12-01 20:59:26 1047 浏览量 回答数 0

问题

如何操作DescribeStream

行为: 获取当前stream的shard信息。 请求结构:message DescribeStreamRequest {    required string stream_id = 1;    ...
云栖大讲堂 2019-12-01 21:00:17 1070 浏览量 回答数 0

问题

PHP安装出现错误

服务器用的是Windows2008的系统,安装PHP时出现PHP Warning: rename(admin,admin): 锟杰撅拷锟斤拷锟绞★拷 (code: 5) in D:hnfxgwwwrootinstall.php on li...
冷月葬相思 2019-12-01 20:24:56 838 浏览量 回答数 1

回答

1、+用两种方式实现java对象序列化反序列化 //1使用jdk自带的序列化方式 public class MyObject implements Serializable{} //然后使用ObjectOutputStream.write实现序列化,ObjectInputStream.readObject方法进行反序列化 ObjectOutputStream stream = new ObjectOutputStream(new FileOutputStream("a.txt")); stream.writeObject(stream); ObjectInputStream stream2 = new ObjectInputStream(new FileInputStream("a.txt")); stream2.readObject(stream2); //2 使用json 工具实现Java对象的序列化 比如fastjson工具 JSON.ParseObject("{\"key\":\"value\"}") JSON.toJavaObject(jsonString,MyObject.class);
詹伟 2019-12-02 01:02:45 0 浏览量 回答数 0

回答

调用下一个函数,例如 byte[] m_Bytes = StreamHelper.ReadToEnd (mystream); 功能: public static byte[] ReadToEnd(System.IO.Stream stream) { long originalPosition = 0; if(stream.CanSeek) { originalPosition = stream.Position; stream.Position = 0; } try { byte[] readBuffer = new byte[4096]; int totalBytesRead = 0; int bytesRead; while ((bytesRead = stream.Read(readBuffer, totalBytesRead, readBuffer.Length - totalBytesRead)) > 0) { totalBytesRead += bytesRead; if (totalBytesRead == readBuffer.Length) { int nextByte = stream.ReadByte(); if (nextByte != -1) { byte[] temp = new byte[readBuffer.Length * 2]; Buffer.BlockCopy(readBuffer, 0, temp, 0, readBuffer.Length); Buffer.SetByte(temp, totalBytesRead, (byte)nextByte); readBuffer = temp; totalBytesRead++; } } } byte[] buffer = readBuffer; if (readBuffer.Length != totalBytesRead) { buffer = new byte[totalBytesRead]; Buffer.BlockCopy(readBuffer, 0, buffer, 0, totalBytesRead); } return buffer; } finally { if(stream.CanSeek) { stream.Position = originalPosition; } } } 问题来源于stack overflow
保持可爱mmm 2020-01-15 16:41:41 0 浏览量 回答数 0

回答

简介 HPL(the High-Performance Linpack Benchmark)是国际上最流行的用于测试高性能计算机系统浮点性能的benchmark。通过对高性能计算机采用高斯消元法求解一元N次稠密线性代数方程组的测试,评价高性能计算机的浮点性能。浮点计算峰值是指计算机每秒钟能完成的浮点计算最大次数。包括理论浮点峰值和实测浮点峰值。理论浮点峰值是该计算机理论上能达到的每秒钟能完成浮点计算最大次数,它主要是由CPU的主频决定的。 理论浮点峰值 = CPU主频 × CPU每个时钟周期执行浮点运算的次数 × 系统中CPU数 准备工作 若您尚未拥有E-HPC集群,请先创建E-HPC集群 运行以下示例需要在创建集群时或者软件管理界面上选择安装linpack软件包和intel-mpi通信库。勾选linpack勾选intel mpi 输入参数说明 输入文件HPL.dat包含了HPL的运行参数,下图是在单台scch5实例上运行HPL的推荐配置。 HPLinpack benchmark input file Innovative Computing Laboratory, University of Tennessee HPL.out output file name (if any) 6 device out (6=stdout,7=stderr,file) 1 # of problems sizes (N) 143360 256000 1000 Ns 1 # of NBs 384 192 256 NBs 1 PMAP process mapping (0=Row-,1=Column-major) 1 # of process grids (P x Q) 1 2 Ps 1 2 Qs 16.0 threshold 1 # of panel fact 2 1 0 PFACTs (0=left, 1=Crout, 2=Right) 1 # of recursive stopping criterium 2 NBMINs (>= 1) 1 # of panels in recursion 2 NDIVs 1 # of recursive panel fact. 1 0 2 RFACTs (0=left, 1=Crout, 2=Right) 1 # of broadcast 0 BCASTs (0=1rg,1=1rM,2=2rg,3=2rM,4=Lng,5=LnM) 1 # of lookahead depth 0 DEPTHs (>=0) 0 SWAP (0=bin-exch,1=long,2=mix) 1 swapping threshold 1 L1 in (0=transposed,1=no-transposed) form 1 U in (0=transposed,1=no-transposed) form 0 Equilibration (0=no,1=yes) 8 memory alignment in double (> 0) 测试过程中需要根据节点硬件配置而做出调整的运行参数主要有: 第5、6行:代表求解的矩阵数量与规模。矩阵规模N越大,有效计算所占的比例也越大,系统浮点处理性能也就越高;但与此同时,矩阵规模N的增加会导致内存消耗量的增加,一旦系统实际内存空间不足,使用缓存、性能会大幅度降低。矩阵占用系统总内存的80%左右为最佳,即N x N x 8 = 系统总内存 x 80% (其中总内存换算以字节为单位)。 第7、8行:代表求解矩阵过程中矩阵分块的大小。分块大小对性能有很大的影响,NB的选择和软硬件许多因素密切相关。NB值的选择主要是通过实际测试得出最优值,但还是有一些规律可循:NB不能太大或太小,一般在384以下;NB × 8一定是Cache line的倍数等。例如,L2 cache为1024K, NB就设置为192。另外,NB大小的选择还跟通信方式、矩阵规模、网络、处理器速度等有关系。一般通过单节点或单CPU测试可以得到几个较好的NB值,但当系统规模增加、问题规模变大,有些NB取值所得性能会下降。所以最好在小规模测试时选择3个左右性能不错的NB,再通过大规模测试检验这些选择。 第10~12行:代表二维处理器网格(P × Q)。P × Q = 系统CPU数 = 进程数。一般来说一个进程对于一个CPU可以得到最佳性能。对于Intel Xeon来说,关闭超线程可以提高HPL性能。P≤Q;一般来说,P的值尽量取得小一点,因为列向通信量(通信次数和通信数据量)要远大于横向通信。P = 2n,即P最好选择2的幂。HPL中,L分解的列向通信采用二元交换法(Binary Exchange),当列向处理器个数P为2的幂时,性能最优。例如,当系统进程数为4的时候,P × Q选择为1 × 4的效果要比选择2 × 2好一些。 在集群测试中,P × Q = 系统CPU总核数。 运行HPL测试 E-HPC控制台创建HPL.dat输入文件 返回E-HPC管理控制台,点选左侧栏的“作业”标签,进入作业管理界面。依次选择“创建作业”->“新建文件”->“使用文件模板”->“HPL.dat”,根据节点硬件配置调整HPL输入参数,得到HPL输入文件如下。 HPL.dat E-HPC控制台创建HPL.pbs作业脚本 在作业管理界面中,依次选择“创建作业”->“新建文件”->“使用文件模板”->“pbs demo”,对pbs demo脚本进行修改,得到HPL作业脚本HPL.pbs如下。 #!/bin/sh #PBS -j oe export MODULEPATH=/opt/ehpcmodulefiles/ module load linpack/2018 module load intel-mpi/2018 echo "run at the beginning" mpirun -n 1 -host /opt/linpack/2018/xhpl_intel64_static > hpl-ouput #测试单节点的浮点性能 mpirun -n -ppn 1 -host ,..., /opt/linpack/2018/xhpl_intel64_static > hpl-ouput #测试多节点的浮点性能 E-HPC控制台提交HPL测试作业 确定下图左侧作业基本参数后,点击右上角“确认”提交作业。作业个性化配置、作业导入、作业导出以及作业状态查看,请参见作业管理。 作业配置 E-HPC控制台查询作业状态 点击作业列表中HPL作业右侧的 “详情” 按钮,查看作业详细信息。 作业详细信息 E-HPC控制台查看结果文件 返回E-HPC管理控制台,点选集群右侧“更多”选项,选择“执行命令”,进入集群命令运行界面。 执行命令 在集群命令运行界面点击“批量执行”,选择集群登录/管控节点执行命令,查看HPL作业结果文件。 查看结果 从结果文件中获取测得的HPL浮点运算效率数据,格式如下。 T/V N NB P Q Time Gflops WC00C2R2 143360 384 1 1 XXXX XXXXXXX 简介 IMB (Intel MPI Benchmarks) 用于评估HPC集群在不同消息粒度下节点间点对点、全局通信的效率。 准备工作 若您尚未拥有E-HPC集群,请先创建E-HPC集群 运行以下示例需要在创建集群时或者软件管理界面上选择安装intel-mpi-benchmarks软件包和intel-mpi通信库 勾选IMBintel-mpi IMB测试方法说明 $ /opt/intel-mpi-benchmarks/2019/IMB-MPI1 -h #查看IMB支持的通信模式及参数说明 $ cd /home/ /<work_dir> #非root用户下执行 $ /opt/intel/impi/2018.3.222/bin64/mpirun -genv I_MPI_DEBUG 5 -np 2 -ppn 1 -host , /opt/intel-mpi-benchmarks/2019/IMB-MPI1 pingpong #测试两节点间pingpong通信模式效率,获取通信延迟和带宽 $ /opt/intel/impi/2018.3.222/bin64/mpirun -genv I_MPI_DEBUG 5 -np <N*2> -ppn 2 -host ,..., /opt/intel-mpi-benchmarks/2019/IMB-MPI1 -npmin 2 -msglog 19:21 allreduce #测试N节点间allreduce通信模式效率,每个节点开启两个进程,获取不同消息粒度下的通信时间 $ /opt/intel/impi/2018.3.222/bin64/mpirun -genv I_MPI_DEBUG 5 -np -ppn 1 -host ,..., /opt/intel-mpi-benchmarks/2019/IMB-MPI1 -npmin 1 -msglog 15:17 alltoall #测试N节点间alltoall通信模式效率,每个节点开启一个进程,获取不同消息粒度下的通信时间 ############关键参数说明############# -genv I_MPI_DEBUG 打印mpi debug信息 -np 指定mpi总进程数 -ppn 指定每个节点的进程数 -host 指定任务节点列表 -npmin 指定至少运行的进程数 -msglog 指定消息片粒度范围 运行IMB测试 E-HPC控制台创建IMB.pbs作业脚本 在作业管理界面中,依次选择“创建作业”->“新建文件”->“使用文件模板”->“pbs demo”,对pbs demo脚本进行修改,得到IMB作业脚本IMB.pbs如下。 #!/bin/sh #PBS -j oe #PBS -l select=2:ncpus= :mpiprocs=1 #N为节点CPU核数,实际测试中根据节点配置进行设置 export MODULEPATH=/opt/ehpcmodulefiles/ module load intel-mpi/2018 module load intel-mpi-benchmarks/2019 echo "run at the beginning" /opt/intel/impi/2018.3.222/bin64/mpirun -genv I_MPI_DEBUG 5 -np 2 -ppn 1 -host compute0,compute1 /opt/intel-mpi-benchmarks/2019/IMB-MPI1 pingpong > IMB-pingpong E-HPC控制台提交IMB测试作业 确定下图左侧作业基本参数后,点击右上角“确认”提交作业。作业个性化配置、作业导入、作业导出以及作业状态查看,请参见作业管理。 作业提交 E-HPC控制台查看结果文件 从E-HPC管理控制台,点选集群右侧“更多”选项,选择“执行命令”,进入集群命令运行界面。点击“批量执行”,选择集群登录/管控节点执行命令,查看IMB作业结果文件。 作业结果 简介 STREAM测试是内存测试中业界公认的内存带宽性能测试基准工具,是衡量服务器内存性能指标的通用工具。STREAM具有良好的空间局部性,是对 TLB 友好、Cache友好的一款测试,支持Copy、Scale、Add、Triad四种操作。 准备工作 若您尚未拥有E-HPC集群,请先创建E-HPC集群 运行以下示例需要在创建集群时或者软件管理界面上选择安装STREAM软件包 勾选stream 运行STREAM测试 E-HPC控制台编译STREAM 为了避免数据Cache重用对测试结果准确度产生较大影响,需确保STREAM开辟的数组大小远大于L3 Cache的容量且小于内存的容量。因此在实际测试中要根据测试节点配置对STREAM进行重新编译。由E-HPC管理控制台进入集群命令运行界面,登录节点执行如下操作。 编译stream $ cd /opt/stream/2018/; gcc stream.c -O3 -fopenmp -DSTREAM_ARRAY_SIZE=102410241024 -DNTIMES=20 -mcmodel=medium -o stream.1g.20 #-DSTREAM_ARRAY_SIZE用于指定STREAM一次搬运的数据量,-DTIMES用于指定迭代次数 E-HPC控制台创建STREAM.pbs作业脚本 在作业管理界面中,依次选择“创建作业”->“新建文件”->“使用文件模板”->“pbs demo”,对pbs demo脚本进行修改,得到STREAM作业脚本STREAM.pbs如下。 #!/bin/sh #PBS -j oe #PBS -l select=1:ncpus= #N为节点CPU核数,实际测试中根据节点配置进行设置 export MODULEPATH=/opt/ehpcmodulefiles/ module load stream/2018 echo "run at the beginning" OMP_NUM_THREADS=1 /opt/stream/stream.1g.20 > stream-1-thread.log OMP_NUM_THREADS=2 /opt/stream/stream.1g.20 > stream-2-thread.log OMP_NUM_THREADS=4 /opt/stream/stream.1g.20 > stream-4-thread.log OMP_NUM_THREADS=8 /opt/stream/stream.1g.20 > stream-8-thread.log ... OMP_NUM_THREADS= /opt/stream/stream.1g.20 > stream- -thread.log E-HPC控制台提交STREAM测试作业 确定下图左侧作业基本参数后,点击右上角“确认”提交作业。作业个性化配置、作业导入、作业导出以及作业状态查看,请参见作业管理。 提交作业 E-HPC控制台查看结果文件 从E-HPC管理控制台,点选集群右侧“更多”选项,选择“执行命令”,进入集群命令运行界面。点击“批量执行”,选择集群登录/管控节点执行命令,查看STREAM作业结果文件。 stream结果 简介 STREAM测试是内存测试中业界公认的内存带宽性能测试基准工具,是衡量服务器内存性能指标的通用工具。STREAM具有良好的空间局部性,是对 TLB 友好、Cache友好的一款测试,支持Copy、Scale、Add、Triad四种操作。 准备工作 若您尚未拥有E-HPC集群,请先创建E-HPC集群 运行以下示例需要在创建集群时或者软件管理界面上选择安装STREAM软件包 勾选stream 运行STREAM测试 E-HPC控制台编译STREAM 为了避免数据Cache重用对测试结果准确度产生较大影响,需确保STREAM开辟的数组大小远大于L3 Cache的容量且小于内存的容量。因此在实际测试中要根据测试节点配置对STREAM进行重新编译。由E-HPC管理控制台进入集群命令运行界面,登录节点执行如下操作。 编译stream $ cd /opt/stream/2018/; gcc stream.c -O3 -fopenmp -DSTREAM_ARRAY_SIZE=102410241024 -DNTIMES=20 -mcmodel=medium -o stream.1g.20 #-DSTREAM_ARRAY_SIZE用于指定STREAM一次搬运的数据量,-DTIMES用于指定迭代次数 E-HPC控制台创建STREAM.pbs作业脚本 在作业管理界面中,依次选择“创建作业”->“新建文件”->“使用文件模板”->“pbs demo”,对pbs demo脚本进行修改,得到STREAM作业脚本STREAM.pbs如下。 #!/bin/sh #PBS -j oe #PBS -l select=1:ncpus= #N为节点CPU核数,实际测试中根据节点配置进行设置 export MODULEPATH=/opt/ehpcmodulefiles/ module load stream/2018 echo "run at the beginning" OMP_NUM_THREADS=1 /opt/stream/stream.1g.20 > stream-1-thread.log OMP_NUM_THREADS=2 /opt/stream/stream.1g.20 > stream-2-thread.log OMP_NUM_THREADS=4 /opt/stream/stream.1g.20 > stream-4-thread.log OMP_NUM_THREADS=8 /opt/stream/stream.1g.20 > stream-8-thread.log ... OMP_NUM_THREADS= /opt/stream/stream.1g.20 > stream- -thread.log E-HPC控制台提交STREAM测试作业 确定下图左侧作业基本参数后,点击右上角“确认”提交作业。作业个性化配置、作业导入、作业导出以及作业状态查看,请参见作业管理。 提交作业 E-HPC控制台查看结果文件 从E-HPC管理控制台,点选集群右侧“更多”选项,选择“执行命令”,进入集群命令运行界面。点击“批量执行”,选择集群登录/管控节点执行命令,查看STREAM作业结果文件。 stream结果
1934890530796658 2020-03-23 18:05:57 0 浏览量 回答数 0

问题

StreamSpecification

表示一个表的stream信息。 数据结构message StreamSpecification {    required bool enable_stream = 1;    optional int32 expiration...
云栖大讲堂 2019-12-01 21:01:41 1313 浏览量 回答数 0

问题

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

OSS MEDIA C SDK 客户端部分支持将接收到的H.264、AAC封装为TS、M3U8格式后写入OSS,除了基础接口外,还提供封装好的录播、直播接口。 接口 HLS相关封装接口都位于oss_med...
青衫无名 2019-12-01 21:47:40 1319 浏览量 回答数 0

回答

RecossClient.PutObject中Stream疑问 使用C#的ossClient.PutObject(bucketName, key, stream, meta); 上传本地文件到oss. 怎么设置stream啊? 我怎么老是报错 can't access to a closed stream?
uniken 2019-12-02 01:58:59 0 浏览量 回答数 0

回答

我找到的解决办法,先全部读到内存流中,然后转为字符就OK了。 public static string readHtml(Stream stream) { if (stream == null) return ""; MemoryStream destination = new MemoryStream(); stream.CopyTo(destination); stream.Close(); return Encoding.GetEncoding("gb2312").GetString(destination.ToArray()); } ######是coding的问题###### gb2312 变成utf-8呢
kun坤 2020-06-07 17:13:14 0 浏览量 回答数 0

回答

stream,读一次就空了啊。就像袋子里有个苹果,你拿出来袋子就空了。要么把你读出来的stream set回去,要么把你读出来的stream作为参数传递,不能多次读stream。
因为相信,所以看见。 2020-05-27 16:23:37 0 浏览量 回答数 0

回答

回 3楼dongshan8的帖子 谢谢版主,这句代码运行成功了。我也重新启动了服务器,可是问题还没有解决 现在的问题应该是服务器不支持 adodb.stream组件。 我这有一个地址测试服务器支持不支持adodb.stream组件aositai.zsdiandian.com:8013/test.asp 代码是这样的 <%on error resume nextdim objstream set objstream = CreateObject("adodb.stream") objstream.Openif err.number <> 0 then   response.Write "服务器不支持adodb.stream组件.错误代码为"& err.numberelse   response.Write "服务器支持adodb.stream组件!"end iferr.Clear %> 所以现在的问题点就是因为服务器不支持 adodb.stream了。 请问如何修复这个问题吗?
a63814 2019-12-02 02:14:50 0 浏览量 回答数 0

问题

ffmpeg stream_loop找不到?报错

ffmpeg -re -stream_loop -1 -i test.mp4 -vcodec copy -acodec copy -f flv rtmp://...... 报错:  stream_loop参数不对 Unrecognize...
爱吃鱼的程序员 2020-06-06 15:24:54 0 浏览量 回答数 1

问题

php push 出来的奇怪问题,做过iOS推送的朋友帮忙看看

Warning: stream_socket_client() [ function.stream-socket-client]: SSL operation failed with code 1. OpenSSL Error messag...
杨冬芳 2019-12-01 20:15:53 714 浏览量 回答数 1

问题

php5.2做苹果的推送stream_socket_client报错。:报错

问题:php5.2做苹果的推送stream_socket_client报错。 错误:Warning: stream_socket_client() has been disabled for securit...
kun坤 2020-06-14 10:31:35 0 浏览量 回答数 1

问题

php5.2做苹果的推送stream_socket_client报错。?报错

问题:php5.2做苹果的推送stream_socket_client报错。 错误:Warning: stream_socket_client() has been disabled for securit...
爱吃鱼的程序员 2020-06-22 18:58:31 0 浏览量 回答数 1
阿里云企业服务平台 陈四清的老板信息查询 上海奇点人才服务相关的云产品 爱迪商标注册信息 安徽华轩堂药业的公司信息查询 小程序定制 上海微企信息技术相关的云产品 国内短信套餐包 ECS云服务器安全配置相关的云产品 天籁阁商标注册信息 开发者问答 阿里云建站 自然场景识别相关的云产品 万网 小程序开发制作 视频内容分析 视频集锦 代理记账服务 北京芙蓉天下的公司信息查询