From 4648c156c84c68c04a193b4e889554a8338ccd27 Mon Sep 17 00:00:00 2001 From: alexliyu7352 Date: Fri, 1 Dec 2023 17:56:08 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96hls=E6=92=AD=E6=94=BE?= =?UTF-8?q?=E5=99=A8,=E4=BD=BF=E7=94=A8=E6=8C=81=E4=B9=85=E5=8C=96?= =?UTF-8?q?=E8=BF=9E=E6=8E=A5=20(#3070)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit hls播放时,如果对方reset断开了tcp连接,应该自动发起重连 --- 3rdpart/CMakeLists.txt | 11 +++ 3rdpart/ZLToolKit | 2 +- CMakeLists.txt | 44 +++++++-- src/Http/HlsPlayer.cpp | 2 + src/Http/HttpClient.cpp | 24 ++++- src/Http/HttpClient.h | 9 ++ www/swagger/openapi.json | 186 +++++++++++++++++++-------------------- 7 files changed, 176 insertions(+), 102 deletions(-) diff --git a/3rdpart/CMakeLists.txt b/3rdpart/CMakeLists.txt index c90129d3..5fc879e0 100644 --- a/3rdpart/CMakeLists.txt +++ b/3rdpart/CMakeLists.txt @@ -151,6 +151,17 @@ if(HAVE_RECVMMSG_API) list(APPEND COMPILE_DEFINITIONS HAVE_RECVMMSG_API) endif() +# check the socket buffer size set by the upper cmake project, if it is set, use the setting of the upper cmake project, otherwise set it to 256K +# if the socket buffer size is set to 0, it means that the socket buffer size is not set, and the kernel default value is used(just for linux) +if(DEFINED SOCKET_DEFAULT_BUF_SIZE) + if (SOCKET_DEFAULT_BUF_SIZE EQUAL 0) + message(STATUS "Socket default buffer size is not set, use the kernel default value") + else() + message(STATUS "Socket default buffer size is set to ${SOCKET_DEFAULT_BUF_SIZE}") + endif () + add_definitions(-DSOCKET_DEFAULT_BUF_SIZE=${SOCKET_DEFAULT_BUF_SIZE}) +endif() + set(ToolKit_ROOT ${CMAKE_CURRENT_SOURCE_DIR}/ZLToolKit) # 收集源代码 file(GLOB ToolKit_SRC_LIST diff --git a/3rdpart/ZLToolKit b/3rdpart/ZLToolKit index ad44a16c..63d8521c 160000 --- a/3rdpart/ZLToolKit +++ b/3rdpart/ZLToolKit @@ -1 +1 @@ -Subproject commit ad44a16c99834540b397774ad6c7f3f8ed619d56 +Subproject commit 63d8521c31bdae6656d9ff0f5d55883618f5eaf1 diff --git a/CMakeLists.txt b/CMakeLists.txt index 39c6c517..22afa0dd 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -24,11 +24,13 @@ cmake_minimum_required(VERSION 3.1.3) # 加载自定义模块 +# Load custom modules list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake") project(ZLMediaKit LANGUAGES C CXX) # 使能 C++11 +# Enable C++11 set(CMAKE_CXX_STANDARD 11) option(ENABLE_API "Enable C API SDK" ON) @@ -58,8 +60,11 @@ option(ENABLE_X264 "Enable x264" OFF) option(ENABLE_WEPOLL "Enable wepoll" ON) option(DISABLE_REPORT "Disable report to report.zlmediakit.com" off) option(USE_SOLUTION_FOLDERS "Enable solution dir supported" ON) - ############################################################################## +# 设置socket默认缓冲区大小为256k.如果设置为0则不设置socket的默认缓冲区大小,使用系统内核默认值(设置为0仅对linux有效) +# Set the default buffer size of the socket to 256k. If set to 0, the default buffer size of the socket will not be set, +# and the system kernel default value will be used (setting to 0 is only valid for linux) +set(SOCKET_DEFAULT_BUF_SIZE 262144 CACHE STRING "Default buffer size for socket" FORCE) if("${CMAKE_BUILD_TYPE}" STREQUAL "") set(CMAKE_BUILD_TYPE "Debug") @@ -68,12 +73,14 @@ endif() message(STATUS "编译类型: ${CMAKE_BUILD_TYPE}") # 方便排查编译问题, 需要 FORCE CACHE, 否则需要命令行设置才生效 +# To facilitate the troubleshooting of compilation problems, you need to FORCE CACHE, otherwise you need to set it on the command line to take effect set(CMAKE_VERBOSE_MAKEFILE ON CACHE INTERNAL "" FORCE) # TODO: include 当前目录会导致 server 编译出错, 待排除 set(CMAKE_INCLUDE_CURRENT_DIR OFF) # 安装路径 +# Install path if(NOT CMAKE_INSTALL_PREFIX) if(UNIX) set(INSTALL_PATH_LIB lib${LIB_SUFFIX}) @@ -81,6 +88,7 @@ if(NOT CMAKE_INSTALL_PREFIX) set(INSTALL_PATH_RUNTIME bin) elseif(WIN32) # Windows 下安装到了用户主目录下? + # Install to the user's home directory under Windows? set(INSTALL_PATH_LIB $ENV{HOME}/${CMAKE_PROJECT_NAME}/lib) set(INSTALL_PATH_INCLUDE $ENV{HOME}/${CMAKE_PROJECT_NAME}/include) else() @@ -95,11 +103,14 @@ endif() string(TOLOWER ${CMAKE_SYSTEM_NAME} SYSTEM_NAME_LOWER) # 设置输出目录, 包括 bin, lib 以及其他文件 # Windows 也不再区分 32/64 +# Set the output directory, including bin, lib and other files +# Windows no longer distinguishes 32/64 set(OUTPUT_DIR ${CMAKE_CURRENT_SOURCE_DIR}/release/${SYSTEM_NAME_LOWER}/${CMAKE_BUILD_TYPE}) set(LIBRARY_OUTPUT_PATH ${OUTPUT_DIR}) set(EXECUTABLE_OUTPUT_PATH ${OUTPUT_DIR}) # 添加 git 版本信息 +# Add git version information set(COMMIT_HASH "Git_Unkown_commit") set(COMMIT_TIME "Git_Unkown_time") set(BRANCH_NAME "Git_Unkown_branch") @@ -140,6 +151,7 @@ message(STATUS "Git version is ${BRANCH_NAME} ${COMMIT_HASH}/${COMMIT_TIME} ${BU ############################################################################## # 方便修改全局变量 +# Convenient to modify global variables function(update_cached name value) set("${name}" "${value}" CACHE INTERNAL "*** Internal ***" FORCE) endfunction() @@ -202,6 +214,7 @@ if(CMAKE_HOST_SYSTEM_NAME STREQUAL "Darwin") endif() # mediakit 以及各个 runtime 依赖 +# mediakit and various runtime dependencies update_cached(MK_LINK_LIBRARIES "") update_cached(MK_COMPILE_DEFINITIONS ENABLE_VERSION) @@ -226,9 +239,11 @@ if(CMAKE_SYSTEM_NAME MATCHES "Linux") endif() # 多个模块依赖 ffmpeg 相关库, 统一查找 +# Multiple modules depend on ffmpeg related libraries, unified search if(ENABLE_FFMPEG) find_package(PkgConfig QUIET) # 查找 ffmpeg/libutil 是否安装 + # find ffmpeg/libutil installed if(PKG_CONFIG_FOUND) pkg_check_modules(AVUTIL QUIET IMPORTED_TARGET libavutil) if(AVUTIL_FOUND) @@ -238,6 +253,7 @@ if(ENABLE_FFMPEG) endif() # 查找 ffmpeg/libavcodec 是否安装 + # find ffmpeg/libavcodec installed if(PKG_CONFIG_FOUND) pkg_check_modules(AVCODEC QUIET IMPORTED_TARGET libavcodec) if(AVCODEC_FOUND) @@ -247,6 +263,7 @@ if(ENABLE_FFMPEG) endif() # 查找 ffmpeg/libswscale 是否安装 + # find ffmpeg/libswscale installed if(PKG_CONFIG_FOUND) pkg_check_modules(SWSCALE QUIET IMPORTED_TARGET libswscale) if(SWSCALE_FOUND) @@ -256,6 +273,7 @@ if(ENABLE_FFMPEG) endif() # 查找 ffmpeg/libswresample 是否安装 + # find ffmpeg/libswresample installed if(PKG_CONFIG_FOUND) pkg_check_modules(SWRESAMPLE QUIET IMPORTED_TARGET libswresample) if(SWRESAMPLE_FOUND) @@ -265,6 +283,7 @@ if(ENABLE_FFMPEG) endif() # 查找 ffmpeg/libutil 是否安装 + # find ffmpeg/libutil installed if(NOT AVUTIL_FOUND) find_package(AVUTIL QUIET) if(AVUTIL_FOUND) @@ -275,6 +294,7 @@ if(ENABLE_FFMPEG) endif () # 查找 ffmpeg/libavcodec 是否安装 + # find ffmpeg/libavcodec installed if(NOT AVCODEC_FOUND) find_package(AVCODEC QUIET) if(AVCODEC_FOUND) @@ -285,6 +305,7 @@ if(ENABLE_FFMPEG) endif() # 查找 ffmpeg/libswscale 是否安装 + # find ffmpeg/libswscale installed if(NOT SWSCALE_FOUND) find_package(SWSCALE QUIET) if(SWSCALE_FOUND) @@ -295,6 +316,7 @@ if(ENABLE_FFMPEG) endif() # 查找 ffmpeg/libswresample 是否安装 + # find ffmpeg/libswresample installed if(NOT SWRESAMPLE_FOUND) find_package(SWRESAMPLE QUIET) if(SWRESAMPLE_FOUND) @@ -309,7 +331,7 @@ if(ENABLE_FFMPEG) update_cached_list(MK_LINK_LIBRARIES ${CMAKE_DL_LIBS}) else() set(ENABLE_FFMPEG OFF) - message(WARNING "ffmpeg 相关功能未找到") + message(WARNING "ffmpeg related functions not found") endif() endif() @@ -317,7 +339,7 @@ if(ENABLE_MEM_DEBUG) update_cached_list(MK_LINK_LIBRARIES "-Wl,-wrap,free;-Wl,-wrap,malloc;-Wl,-wrap,realloc;-Wl,-wrap,calloc") update_cached_list(MK_COMPILE_DEFINITIONS ENABLE_MEM_DEBUG) - message(STATUS "已启用内存调试功能") + message(STATUS "Memory debugging enabled") endif() if(ENABLE_ASAN) @@ -327,10 +349,11 @@ if(ENABLE_ASAN) # > In order to use AddressSanitizer you will need to # > compile and link your program using clang with the -fsanitize=address switch. update_cached_list(MK_LINK_LIBRARIES "-fsanitize=address") - message(STATUS "已启用 Address Sanitize") + message(STATUS "Address Sanitize enabled") endif() -# TODO: 下载静态编译 jemalloc 后静态编译链接? +# 下载jemalloc后静态编译 +# Static compilation after downloading jemalloc set(DEP_ROOT_DIR ${CMAKE_CURRENT_SOURCE_DIR}/3rdpart/external-${CMAKE_SYSTEM_NAME}) if(ENABLE_JEMALLOC_STATIC) if(NOT EXISTS ${DEP_ROOT_DIR}) @@ -345,10 +368,12 @@ if(ENABLE_JEMALLOC_STATIC) include_directories(SYSTEM ${DEP_ROOT_DIR}/${JEMALLOC_NAME}/include/jemalloc) link_directories(${DEP_ROOT_DIR}/${JEMALLOC_NAME}/lib) # 用于影响后续查找过程 + # Used to affect subsequent lookup process set(JEMALLOC_ROOT_DIR "${DEP_ROOT_DIR}/${JEMALLOC_NAME}") endif() # 默认链接 jemalloc 库避免内存碎片 +# Link the jemalloc library by default to avoid memory fragmentation find_package(JEMALLOC QUIET) if(JEMALLOC_FOUND) message(STATUS "found library: ${JEMALLOC_LIBRARIES}") @@ -363,6 +388,7 @@ if(JEMALLOC_FOUND) endif() # 查找 openssl 是否安装 +# find openssl installed find_package(OpenSSL QUIET) if(OPENSSL_FOUND AND ENABLE_OPENSSL) message(STATUS "found library: ${OPENSSL_LIBRARIES}, ENABLE_OPENSSL defined") @@ -379,6 +405,7 @@ else() endif() # 查找 mysql 是否安装 +# find mysql installed find_package(MYSQL QUIET) if(MYSQL_FOUND AND ENABLE_MYSQL) message(STATUS "found library: ${MYSQL_LIBRARIES}, ENABLE_MYSQL defined") @@ -391,6 +418,7 @@ if(MYSQL_FOUND AND ENABLE_MYSQL) endif() # 查找 x264 是否安装 +# find x264 installed find_package(X264 QUIET) if(X264_FOUND AND ENABLE_X264) message(STATUS "found library: ${X264_LIBRARIES}, ENABLE_X264 defined") @@ -401,6 +429,7 @@ if(X264_FOUND AND ENABLE_X264) endif() # 查找 faac 是否安装 +# find faac installed find_package(FAAC QUIET) if(FAAC_FOUND AND ENABLE_FAAC) message(STATUS "found library:${FAAC_LIBRARIES}, ENABLE_FAAC defined") @@ -468,26 +497,31 @@ if(ENABLE_PLAYER AND ENABLE_FFMPEG) endif() #MediaServer主程序 +#MediaServer main program if(ENABLE_SERVER) add_subdirectory(server) endif() # Android 会 add_subdirectory 并依赖该变量 +# Android will add_subdirectory and depend on this variable if(ENABLE_SERVER_LIB AND NOT CMAKE_PARENT_LIST_FILE STREQUAL CMAKE_CURRENT_LIST_FILE) set(MK_LINK_LIBRARIES ${MK_LINK_LIBRARIES} PARENT_SCOPE) endif() # IOS 不编译可执行程序 +# IOS does not compile executable programs if(IOS) return() endif() #cpp测试demo程序 +#cpp test demo program if (ENABLE_TESTS) add_subdirectory(tests) endif () # 拷贝www文件夹、配置文件、默认证书 +# Copy www folder, configuration file, default certificate file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/www" DESTINATION ${EXECUTABLE_OUTPUT_PATH}) file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/conf/config.ini" DESTINATION ${EXECUTABLE_OUTPUT_PATH}) file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/default.pem" DESTINATION ${EXECUTABLE_OUTPUT_PATH}) diff --git a/src/Http/HlsPlayer.cpp b/src/Http/HlsPlayer.cpp index 36507ca8..6d15a45c 100644 --- a/src/Http/HlsPlayer.cpp +++ b/src/Http/HlsPlayer.cpp @@ -23,6 +23,7 @@ void HlsPlayer::play(const string &url) { _play_result = false; _play_url = url; setProxyUrl((*this)[Client::kProxyUrl]); + setAllowResendRequest(true); fetchIndexFile(); } @@ -99,6 +100,7 @@ void HlsPlayer::fetchSegment() { if (!_http_ts_player) { _http_ts_player = std::make_shared(getPoller()); _http_ts_player->setProxyUrl((*this)[Client::kProxyUrl]); + _http_ts_player->setAllowResendRequest(true); _http_ts_player->setOnCreateSocket([weak_self](const EventPoller::Ptr &poller) { auto strong_self = weak_self.lock(); if (strong_self) { diff --git a/src/Http/HttpClient.cpp b/src/Http/HttpClient.cpp index 068727a5..fbe76eab 100644 --- a/src/Http/HttpClient.cpp +++ b/src/Http/HttpClient.cpp @@ -56,10 +56,14 @@ void HttpClient::sendRequest(const string &url) { splitUrl(host, host, port); _header.emplace("Host", host_header); _header.emplace("User-Agent", kServerName); - _header.emplace("Connection", "keep-alive"); _header.emplace("Accept", "*/*"); _header.emplace("Accept-Language", "zh-CN,zh;q=0.8"); - + if (_http_persistent) { + _header.emplace("Connection", "keep-alive"); + } else { + _header.emplace("Connection", "close"); + } + _http_persistent = true; if (_body && _body->remainSize()) { _header.emplace("Content-Length", to_string(_body->remainSize())); _header.emplace("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8"); @@ -78,7 +82,7 @@ void HttpClient::sendRequest(const string &url) { printer.pop_back(); _header.emplace("Cookie", printer); } - if (!alive() || host_changed) { + if (!alive() || host_changed || !_http_persistent) { if (isUsedProxy()) { _proxy_connected = false; startConnect(_proxy_host, _proxy_port, _wait_header_ms / 1000.0f); @@ -189,6 +193,17 @@ void HttpClient::onRecv(const Buffer::Ptr &pBuf) { } void HttpClient::onError(const SockException &ex) { + if (ex.getErrCode() == Err_reset && _allow_resend_request && _http_persistent && _recved_body_size == 0 && !_header_recved) { + // 连接被重置,可能是服务器主动断开了连接, 或者服务器内核参数或防火墙的持久连接空闲时间超时或不一致. + // 如果是持久化连接,那么我们可以通过重连来解决这个问题 + // The connection was reset, possibly because the server actively disconnected the connection, + // or the persistent connection idle time of the server kernel parameters or firewall timed out or inconsistent. + // If it is a persistent connection, then we can solve this problem by reconnecting + WarnL << "http persistent connect reset, try reconnect"; + _http_persistent = false; + sendRequest(_url); + return; + } onResponseCompleted_l(ex); } @@ -437,4 +452,7 @@ bool HttpClient::checkProxyConnected(const char *data, size_t len) { return _proxy_connected; } +void HttpClient::setAllowResendRequest(bool allow) { + _allow_resend_request = allow; +} } /* namespace mediakit */ diff --git a/src/Http/HttpClient.h b/src/Http/HttpClient.h index 6a00c63a..813562e8 100644 --- a/src/Http/HttpClient.h +++ b/src/Http/HttpClient.h @@ -146,6 +146,13 @@ public: */ void setProxyUrl(std::string proxy_url); + /** + * 当重用连接失败时, 是否允许重新发起请求 + * If the reuse connection fails, whether to allow the request to be resent + * @param allow true:允许重新发起请求 / true: allow the request to be resent + */ + void setAllowResendRequest(bool allow); + protected: /** * 收到http回复头 @@ -201,6 +208,8 @@ private: //for http response bool _complete = false; bool _header_recved = false; + bool _http_persistent = true; + bool _allow_resend_request = false; size_t _recved_body_size; ssize_t _total_body_size; Parser _parser; diff --git a/www/swagger/openapi.json b/www/swagger/openapi.json index 1e4a7d17..480c977c 100644 --- a/www/swagger/openapi.json +++ b/www/swagger/openapi.json @@ -3,7 +3,7 @@ "info": { "title": "ZLMediaKit HTTP API", "description": "You can test the HTTP API provided by ZlMediaKit here. For usage documentation, please refer to [here](https://docs.zlmediakit.com/guide/media_server/restful_api.html)", - "version": "ZLMediaKit(git hash:\"644a333\"/\"2023-11-30T17:58:28+08:00\",branch:\"master\",build time:\"2023-11-30T14:05:40\")", + "version": "ZLMediaKit(git hash:\"5028151\"/\"2023-12-01T14:43:35+08:00\",branch:\"master\",build time:\"2023-12-01T07:54:14\")", "x-logo": { "url": "/logo.png", "backgroundColor": "#FFFFFF", @@ -45,7 +45,7 @@ "type": "string" }, "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", - "example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" + "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp" } ], "responses": { @@ -70,7 +70,7 @@ "type": "string" }, "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", - "example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" + "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp" } ], "responses": { @@ -97,7 +97,7 @@ "type": "string" }, "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", - "example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" + "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp" } ], "responses": { @@ -122,7 +122,7 @@ "type": "string" }, "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", - "example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" + "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp" } ], "responses": { @@ -149,7 +149,7 @@ "type": "string" }, "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", - "example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" + "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp" } ], "responses": { @@ -174,7 +174,7 @@ "type": "string" }, "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", - "example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" + "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp" } ], "responses": { @@ -201,7 +201,7 @@ "type": "string" }, "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", - "example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" + "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp" } ], "responses": { @@ -226,7 +226,7 @@ "type": "string" }, "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", - "example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" + "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp" } ], "responses": { @@ -253,7 +253,7 @@ "type": "string" }, "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", - "example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" + "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp" } ], "responses": { @@ -278,7 +278,7 @@ "type": "string" }, "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", - "example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" + "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp" } ], "responses": { @@ -305,7 +305,7 @@ "type": "string" }, "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", - "example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" + "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp" }, { "name": "api.apiDebug", @@ -339,7 +339,7 @@ "type": "string" }, "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", - "example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" + "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp" }, { "name": "api.apiDebug", @@ -375,7 +375,7 @@ "type": "string" }, "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", - "example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" + "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp" } ], "responses": { @@ -400,7 +400,7 @@ "type": "string" }, "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", - "example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" + "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp" } ], "responses": { @@ -427,7 +427,7 @@ "type": "string" }, "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", - "example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" + "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp" } ], "responses": { @@ -452,7 +452,7 @@ "type": "string" }, "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", - "example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" + "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp" } ], "responses": { @@ -479,7 +479,7 @@ "type": "string" }, "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", - "example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" + "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp" }, { "name": "schema", @@ -540,7 +540,7 @@ "type": "string" }, "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", - "example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" + "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp" }, { "name": "schema", @@ -603,7 +603,7 @@ "type": "string" }, "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", - "example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" + "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp" }, { "name": "schema", @@ -664,7 +664,7 @@ "type": "string" }, "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", - "example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" + "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp" }, { "name": "schema", @@ -727,7 +727,7 @@ "type": "string" }, "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", - "example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" + "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp" } ], "responses": { @@ -752,7 +752,7 @@ "type": "string" }, "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", - "example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" + "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp" } ], "responses": { @@ -779,7 +779,7 @@ "type": "string" }, "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", - "example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" + "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp" }, { "name": "id", @@ -813,7 +813,7 @@ "type": "string" }, "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", - "example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" + "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp" }, { "name": "id", @@ -849,7 +849,7 @@ "type": "string" }, "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", - "example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" + "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp" } ], "responses": { @@ -874,7 +874,7 @@ "type": "string" }, "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", - "example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" + "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp" } ], "responses": { @@ -901,7 +901,7 @@ "type": "string" }, "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", - "example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" + "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp" }, { "name": "vhost", @@ -962,7 +962,7 @@ "type": "string" }, "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", - "example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" + "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp" }, { "name": "vhost", @@ -1025,7 +1025,7 @@ "type": "string" }, "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", - "example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" + "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp" }, { "name": "key", @@ -1059,7 +1059,7 @@ "type": "string" }, "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", - "example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" + "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp" }, { "name": "key", @@ -1095,7 +1095,7 @@ "type": "string" }, "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", - "example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" + "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp" }, { "name": "schema", @@ -1165,7 +1165,7 @@ "type": "string" }, "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", - "example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" + "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp" }, { "name": "schema", @@ -1237,7 +1237,7 @@ "type": "string" }, "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", - "example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" + "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp" }, { "name": "key", @@ -1271,7 +1271,7 @@ "type": "string" }, "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", - "example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" + "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp" }, { "name": "key", @@ -1307,7 +1307,7 @@ "type": "string" }, "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", - "example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" + "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp" }, { "name": "src_url", @@ -1377,7 +1377,7 @@ "type": "string" }, "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", - "example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" + "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp" }, { "name": "src_url", @@ -1449,7 +1449,7 @@ "type": "string" }, "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", - "example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" + "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp" }, { "name": "key", @@ -1482,7 +1482,7 @@ "type": "string" }, "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", - "example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" + "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp" }, { "name": "key", @@ -1517,7 +1517,7 @@ "type": "string" }, "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", - "example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" + "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp" }, { "name": "schema", @@ -1578,7 +1578,7 @@ "type": "string" }, "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", - "example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" + "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp" }, { "name": "schema", @@ -1641,7 +1641,7 @@ "type": "string" }, "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", - "example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" + "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp" }, { "name": "schema", @@ -1702,7 +1702,7 @@ "type": "string" }, "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", - "example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" + "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp" }, { "name": "schema", @@ -1765,7 +1765,7 @@ "type": "string" }, "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", - "example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" + "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp" }, { "name": "schema", @@ -1834,7 +1834,7 @@ "type": "string" }, "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", - "example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" + "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp" }, { "name": "schema", @@ -1905,7 +1905,7 @@ "type": "string" }, "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", - "example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" + "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp" }, { "name": "schema", @@ -1966,7 +1966,7 @@ "type": "string" }, "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", - "example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" + "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp" }, { "name": "schema", @@ -2029,7 +2029,7 @@ "type": "string" }, "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", - "example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" + "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp" }, { "name": "vhost", @@ -2099,7 +2099,7 @@ "type": "string" }, "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", - "example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" + "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp" }, { "name": "vhost", @@ -2171,7 +2171,7 @@ "type": "string" }, "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", - "example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" + "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp" }, { "name": "vhost", @@ -2232,7 +2232,7 @@ "type": "string" }, "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", - "example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" + "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp" }, { "name": "vhost", @@ -2295,7 +2295,7 @@ "type": "string" }, "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", - "example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" + "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp" }, { "name": "type", @@ -2356,7 +2356,7 @@ "type": "string" }, "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", - "example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" + "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp" }, { "name": "type", @@ -2419,7 +2419,7 @@ "type": "string" }, "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", - "example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" + "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp" }, { "name": "vhost", @@ -2480,7 +2480,7 @@ "type": "string" }, "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", - "example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" + "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp" }, { "name": "vhost", @@ -2543,7 +2543,7 @@ "type": "string" }, "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", - "example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" + "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp" }, { "name": "vhost", @@ -2604,7 +2604,7 @@ "type": "string" }, "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", - "example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" + "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp" }, { "name": "vhost", @@ -2667,7 +2667,7 @@ "type": "string" }, "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", - "example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" + "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp" }, { "name": "type", @@ -2728,7 +2728,7 @@ "type": "string" }, "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", - "example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" + "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp" }, { "name": "type", @@ -2791,7 +2791,7 @@ "type": "string" }, "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", - "example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" + "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp" }, { "name": "type", @@ -2852,7 +2852,7 @@ "type": "string" }, "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", - "example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" + "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp" }, { "name": "type", @@ -2915,7 +2915,7 @@ "type": "string" }, "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", - "example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" + "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp" }, { "name": "url", @@ -2967,7 +2967,7 @@ "type": "string" }, "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", - "example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" + "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp" }, { "name": "url", @@ -3021,7 +3021,7 @@ "type": "string" }, "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", - "example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" + "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp" }, { "name": "stream_id", @@ -3055,7 +3055,7 @@ "type": "string" }, "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", - "example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" + "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp" }, { "name": "stream_id", @@ -3091,7 +3091,7 @@ "type": "string" }, "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", - "example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" + "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp" }, { "name": "port", @@ -3143,7 +3143,7 @@ "type": "string" }, "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", - "example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" + "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp" }, { "name": "port", @@ -3197,7 +3197,7 @@ "type": "string" }, "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", - "example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" + "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp" }, { "name": "dst_url", @@ -3249,7 +3249,7 @@ "type": "string" }, "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", - "example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" + "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp" }, { "name": "dst_url", @@ -3303,7 +3303,7 @@ "type": "string" }, "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", - "example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" + "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp" }, { "name": "stream_id", @@ -3337,7 +3337,7 @@ "type": "string" }, "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", - "example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" + "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp" }, { "name": "stream_id", @@ -3373,7 +3373,7 @@ "type": "string" }, "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", - "example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" + "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp" }, { "name": "stream_id", @@ -3416,7 +3416,7 @@ "type": "string" }, "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", - "example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" + "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp" }, { "name": "stream_id", @@ -3461,7 +3461,7 @@ "type": "string" }, "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", - "example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" + "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp" }, { "name": "stream_id", @@ -3495,7 +3495,7 @@ "type": "string" }, "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", - "example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" + "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp" }, { "name": "stream_id", @@ -3531,7 +3531,7 @@ "type": "string" }, "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", - "example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" + "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp" }, { "name": "stream_id", @@ -3565,7 +3565,7 @@ "type": "string" }, "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", - "example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" + "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp" }, { "name": "stream_id", @@ -3601,7 +3601,7 @@ "type": "string" }, "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", - "example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" + "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp" } ], "responses": { @@ -3626,7 +3626,7 @@ "type": "string" }, "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", - "example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" + "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp" } ], "responses": { @@ -3653,7 +3653,7 @@ "type": "string" }, "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", - "example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" + "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp" }, { "name": "vhost", @@ -3741,7 +3741,7 @@ "type": "string" }, "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", - "example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" + "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp" }, { "name": "vhost", @@ -3831,7 +3831,7 @@ "type": "string" }, "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", - "example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" + "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp" }, { "name": "vhost", @@ -3892,7 +3892,7 @@ "type": "string" }, "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", - "example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" + "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp" }, { "name": "vhost", @@ -3955,7 +3955,7 @@ "type": "string" }, "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", - "example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" + "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp" }, { "name": "vhost", @@ -4007,7 +4007,7 @@ "type": "string" }, "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", - "example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" + "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp" }, { "name": "vhost", @@ -4060,7 +4060,7 @@ "schema": { "type": "string" }, - "example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" + "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp" } ], "responses": { @@ -4084,7 +4084,7 @@ "schema": { "type": "string" }, - "example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" + "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp" } ], "responses": { @@ -4110,7 +4110,7 @@ "schema": { "type": "string" }, - "example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" + "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp" }, { "name": "key", @@ -4142,7 +4142,7 @@ "schema": { "type": "string" }, - "example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" + "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp" }, { "name": "key", @@ -4176,7 +4176,7 @@ "schema": { "type": "string" }, - "example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" + "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp" }, { "name": "key", @@ -4208,7 +4208,7 @@ "schema": { "type": "string" }, - "example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" + "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp" }, { "name": "key", @@ -4243,7 +4243,7 @@ "type": "string" }, "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", - "example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" + "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp" }, { "name": "vhost", @@ -4304,7 +4304,7 @@ "type": "string" }, "description": "api\u64cd\u4f5c\u5bc6\u94a5(\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e)", - "example": "OJnXXZ4Eh1uHvDmJz8eud5ykuprr0AWv" + "example": "FTRaFEWs08KeTxKEEO25ePDKuV3CjOqp" }, { "name": "vhost",