diff --git a/api/include/common.h b/api/include/mk_common.h similarity index 82% rename from api/include/common.h rename to api/include/mk_common.h index c54f7170..08100f69 100755 --- a/api/include/common.h +++ b/api/include/mk_common.h @@ -139,25 +139,6 @@ API_EXPORT uint16_t API_CALL mk_rtp_server_start(uint16_t port); */ API_EXPORT uint16_t API_CALL mk_shell_server_start(uint16_t port); -/** - * 打印日志 - * @param level 日志级别,支持0~4 - * @param file __FILE__ - * @param function __FUNCTION__ - * @param line __LINE__ - * @param fmt printf类型的格式控制字符串 - * @param ... 不定长参数 - */ -API_EXPORT void API_CALL mk_log_printf(int level, const char *file, const char *function, int line, const char *fmt, ...); - -// 以下宏可以替换printf使用 -#define log_trace(fmt,...) mk_log_printf(0,__FILE__,__FUNCTION__,__LINE__,fmt,##__VA_ARGS__) -#define log_debug(fmt,...) mk_log_printf(1,__FILE__,__FUNCTION__,__LINE__,fmt,##__VA_ARGS__) -#define log_info(fmt,...) mk_log_printf(2,__FILE__,__FUNCTION__,__LINE__,fmt,##__VA_ARGS__) -#define log_warn(fmt,...) mk_log_printf(3,__FILE__,__FUNCTION__,__LINE__,fmt,##__VA_ARGS__) -#define log_error(fmt,...) mk_log_printf(4,__FILE__,__FUNCTION__,__LINE__,fmt,##__VA_ARGS__) -#define log_printf(lev,fmt,...) mk_log_printf(lev,__FILE__,__FUNCTION__,__LINE__,fmt,##__VA_ARGS__) - #ifdef __cplusplus } #endif diff --git a/api/include/events.h b/api/include/mk_events.h similarity index 99% rename from api/include/events.h rename to api/include/mk_events.h index 26a9f5c2..f9336177 100644 --- a/api/include/events.h +++ b/api/include/mk_events.h @@ -27,8 +27,8 @@ #ifndef MK_EVENTS_H #define MK_EVENTS_H -#include "common.h" -#include "events_objects.h" +#include "mk_common.h" +#include "mk_events_objects.h" #ifdef __cplusplus extern "C" { diff --git a/api/include/events_objects.h b/api/include/mk_events_objects.h similarity index 99% rename from api/include/events_objects.h rename to api/include/mk_events_objects.h index 5881f0f7..ee456bf5 100644 --- a/api/include/events_objects.h +++ b/api/include/mk_events_objects.h @@ -26,8 +26,8 @@ #ifndef MK_EVENT_OBJECTS_H #define MK_EVENT_OBJECTS_H -#include "common.h" -#include "tcp.h" +#include "mk_common.h" +#include "mk_tcp.h" #ifdef __cplusplus extern "C" { #endif diff --git a/api/include/httpclient.h b/api/include/mk_httpclient.h similarity index 99% rename from api/include/httpclient.h rename to api/include/mk_httpclient.h index 7afef024..7acb91dd 100755 --- a/api/include/httpclient.h +++ b/api/include/mk_httpclient.h @@ -27,8 +27,8 @@ #ifndef MK_HTTPCLIENT_H_ #define MK_HTTPCLIENT_H_ -#include "common.h" -#include "events_objects.h" +#include "mk_common.h" +#include "mk_events_objects.h" #ifdef __cplusplus extern "C" { diff --git a/api/include/media.h b/api/include/mk_media.h similarity index 99% rename from api/include/media.h rename to api/include/mk_media.h index 55c6f141..d8162f6e 100755 --- a/api/include/media.h +++ b/api/include/mk_media.h @@ -27,7 +27,7 @@ #ifndef MK_MEDIA_H_ #define MK_MEDIA_H_ -#include "common.h" +#include "mk_common.h" #ifdef __cplusplus extern "C" { diff --git a/api/include/mediakit.h b/api/include/mk_mediakit.h similarity index 84% rename from api/include/mediakit.h rename to api/include/mk_mediakit.h index 6feb9eaf..e2b3dc35 100755 --- a/api/include/mediakit.h +++ b/api/include/mk_mediakit.h @@ -27,14 +27,15 @@ #ifndef MK_API_H_ #define MK_API_H_ -#include "common.h" -#include "httpclient.h" -#include "media.h" -#include "proxyplayer.h" -#include "recorder.h" -#include "player.h" -#include "pusher.h" -#include "events.h" -#include "tcp.h" +#include "mk_common.h" +#include "mk_httpclient.h" +#include "mk_media.h" +#include "mk_proxyplayer.h" +#include "mk_recorder.h" +#include "mk_player.h" +#include "mk_pusher.h" +#include "mk_events.h" +#include "mk_tcp.h" +#include "mk_util.h" #endif /* MK_API_H_ */ diff --git a/api/include/player.h b/api/include/mk_player.h similarity index 99% rename from api/include/player.h rename to api/include/mk_player.h index ad119a72..14092cd7 100755 --- a/api/include/player.h +++ b/api/include/mk_player.h @@ -27,7 +27,7 @@ #ifndef MK_PLAYER_H_ #define MK_PLAYER_H_ -#include "common.h" +#include "mk_common.h" #ifdef __cplusplus extern "C" { diff --git a/api/include/proxyplayer.h b/api/include/mk_proxyplayer.h similarity index 99% rename from api/include/proxyplayer.h rename to api/include/mk_proxyplayer.h index 24652e2e..a8495eda 100644 --- a/api/include/proxyplayer.h +++ b/api/include/mk_proxyplayer.h @@ -27,7 +27,7 @@ #ifndef MK_PROXY_PLAYER_H_ #define MK_PROXY_PLAYER_H_ -#include "common.h" +#include "mk_common.h" #ifdef __cplusplus extern "C" { diff --git a/api/include/pusher.h b/api/include/mk_pusher.h similarity index 99% rename from api/include/pusher.h rename to api/include/mk_pusher.h index f234c1bb..cc4f2645 100644 --- a/api/include/pusher.h +++ b/api/include/mk_pusher.h @@ -28,7 +28,7 @@ #ifndef MK_PUSHER_H #define MK_PUSHER_H -#include "common.h" +#include "mk_common.h" #ifdef __cplusplus extern "C" { diff --git a/api/include/recorder.h b/api/include/mk_recorder.h similarity index 99% rename from api/include/recorder.h rename to api/include/mk_recorder.h index 95bd9a84..effd77e7 100644 --- a/api/include/recorder.h +++ b/api/include/mk_recorder.h @@ -27,7 +27,7 @@ #ifndef MK_RECORDER_API_H_ #define MK_RECORDER_API_H_ -#include "common.h" +#include "mk_common.h" #ifdef __cplusplus extern "C" { diff --git a/api/include/tcp.h b/api/include/mk_tcp.h similarity index 99% rename from api/include/tcp.h rename to api/include/mk_tcp.h index b0511e86..3bd81885 100644 --- a/api/include/tcp.h +++ b/api/include/mk_tcp.h @@ -27,7 +27,7 @@ #ifndef MK_TCP_H #define MK_TCP_H -#include "common.h" +#include "mk_common.h" #ifdef __cplusplus extern "C" { diff --git a/api/include/mk_util.h b/api/include/mk_util.h new file mode 100644 index 00000000..99d7084c --- /dev/null +++ b/api/include/mk_util.h @@ -0,0 +1,94 @@ +/* + * MIT License + * + * Copyright (c) 2019 xiongziliang <771730766@qq.com> + * + * This file is part of ZLMediaKit(https://github.com/xiongziliang/ZLMediaKit). + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +#ifndef MK_UTIL_H +#define MK_UTIL_H + +#include +#include "mk_common.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * 获取本程序可执行文件路径 + * @return 文件路径,使用完后需要自己free + */ +API_EXPORT char* API_CALL mk_util_get_exe_path(); + +/** + * 获取本程序可执行文件相同目录下文件的绝对路径 + * @param relative_path 同目录下文件的路径相对,可以为null + * @return 文件路径,使用完后需要自己free + */ +API_EXPORT char* API_CALL mk_uitl_get_exe_dir(const char *relative_path); + +/** + * 获取unix标准的系统时间戳 + * @return 当前系统时间戳 + */ +API_EXPORT uint64_t API_CALL mk_uitl_get_current_millisecond(); + +/** + * 获取时间字符串 + * @param fmt 时间格式,譬如%Y-%m-%d %H:%M:%S + * @return 时间字符串,使用完后需要自己free + */ +API_EXPORT char* API_CALL mk_uitl_get_current_time_string(const char *fmt); + +/** + * 打印二进制为字符串 + * @param buf 二进制数据 + * @param len 数据长度 + * @return 可打印的调试信息,使用完后需要自己free + */ +API_EXPORT char* API_CALL mk_uitl_hex_dump(const void *buf, int len); +///////////////////////////////////////////日志///////////////////////////////////////////// + +/** + * 打印日志 + * @param level 日志级别,支持0~4 + * @param file __FILE__ + * @param function __FUNCTION__ + * @param line __LINE__ + * @param fmt printf类型的格式控制字符串 + * @param ... 不定长参数 + */ +API_EXPORT void API_CALL mk_log_printf(int level, const char *file, const char *function, int line, const char *fmt, ...); + +// 以下宏可以替换printf使用 +#define log_trace(fmt,...) mk_log_printf(0,__FILE__,__FUNCTION__,__LINE__,fmt,##__VA_ARGS__) +#define log_debug(fmt,...) mk_log_printf(1,__FILE__,__FUNCTION__,__LINE__,fmt,##__VA_ARGS__) +#define log_info(fmt,...) mk_log_printf(2,__FILE__,__FUNCTION__,__LINE__,fmt,##__VA_ARGS__) +#define log_warn(fmt,...) mk_log_printf(3,__FILE__,__FUNCTION__,__LINE__,fmt,##__VA_ARGS__) +#define log_error(fmt,...) mk_log_printf(4,__FILE__,__FUNCTION__,__LINE__,fmt,##__VA_ARGS__) +#define log_printf(lev,fmt,...) mk_log_printf(lev,__FILE__,__FUNCTION__,__LINE__,fmt,##__VA_ARGS__) + +#ifdef __cplusplus +} +#endif +#endif //MK_UTIL_H diff --git a/api/source/common.cpp b/api/source/mk_common.cpp similarity index 93% rename from api/source/common.cpp rename to api/source/mk_common.cpp index b96414e4..19849621 100755 --- a/api/source/common.cpp +++ b/api/source/mk_common.cpp @@ -24,7 +24,7 @@ * SOFTWARE. */ -#include "common.h" +#include "mk_common.h" #include #include #include "Util/logger.h" @@ -206,16 +206,3 @@ API_EXPORT uint16_t API_CALL mk_shell_server_start(uint16_t port){ return 0; } } - -API_EXPORT void API_CALL mk_log_printf(int level, const char *file, const char *function, int line, const char *fmt, ...) { - assert(file && function && fmt); - LogContextCapturer info(Logger::Instance(), (LogLevel) level, file, function, line); - va_list pArg; - va_start(pArg, fmt); - char buf[4096]; - int n = vsprintf(buf, fmt, pArg); - buf[n] = '\0'; - va_end(pArg); - info << buf; -} - diff --git a/api/source/events.cpp b/api/source/mk_events.cpp similarity index 99% rename from api/source/events.cpp rename to api/source/mk_events.cpp index 832ceb92..8d915eb1 100644 --- a/api/source/events.cpp +++ b/api/source/mk_events.cpp @@ -24,7 +24,7 @@ * SOFTWARE. */ -#include "events.h" +#include "mk_events.h" #include "Common/config.h" #include "Common/MediaSource.h" #include "Http/HttpSession.h" diff --git a/api/source/events_objects.cpp b/api/source/mk_events_objects.cpp similarity index 99% rename from api/source/events_objects.cpp rename to api/source/mk_events_objects.cpp index 435031f0..69e9fa3a 100644 --- a/api/source/events_objects.cpp +++ b/api/source/mk_events_objects.cpp @@ -25,7 +25,7 @@ */ #include -#include "events_objects.h" +#include "mk_events_objects.h" #include "Common/config.h" #include "Record/MP4Recorder.h" #include "Network/TcpSession.h" diff --git a/api/source/httpclient.cpp b/api/source/mk_httpclient.cpp similarity index 99% rename from api/source/httpclient.cpp rename to api/source/mk_httpclient.cpp index 01e4c68f..0e32b472 100755 --- a/api/source/httpclient.cpp +++ b/api/source/mk_httpclient.cpp @@ -23,7 +23,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -#include "httpclient.h" +#include "mk_httpclient.h" #include "Util/logger.h" #include "Http/HttpDownloader.h" diff --git a/api/source/media.cpp b/api/source/mk_media.cpp similarity index 99% rename from api/source/media.cpp rename to api/source/mk_media.cpp index df488b51..1751005b 100755 --- a/api/source/media.cpp +++ b/api/source/mk_media.cpp @@ -24,7 +24,7 @@ * SOFTWARE. */ -#include "media.h" +#include "mk_media.h" #include "Util/logger.h" #include "Common/Device.h" diff --git a/api/source/player.cpp b/api/source/mk_player.cpp similarity index 99% rename from api/source/player.cpp rename to api/source/mk_player.cpp index 6a320f0e..75c556ac 100755 --- a/api/source/player.cpp +++ b/api/source/mk_player.cpp @@ -24,7 +24,7 @@ * SOFTWARE. */ -#include "player.h" +#include "mk_player.h" #include "Util/logger.h" #include "Player/MediaPlayer.h" using namespace std; diff --git a/api/source/proxyplayer.cpp b/api/source/mk_proxyplayer.cpp similarity index 98% rename from api/source/proxyplayer.cpp rename to api/source/mk_proxyplayer.cpp index 0bf9d43a..23702a9d 100644 --- a/api/source/proxyplayer.cpp +++ b/api/source/mk_proxyplayer.cpp @@ -24,7 +24,7 @@ * SOFTWARE. */ -#include "proxyplayer.h" +#include "mk_proxyplayer.h" #include "Player/PlayerProxy.h" using namespace toolkit; diff --git a/api/source/pusher.cpp b/api/source/mk_pusher.cpp similarity index 99% rename from api/source/pusher.cpp rename to api/source/mk_pusher.cpp index df74f03a..cdab8d26 100644 --- a/api/source/pusher.cpp +++ b/api/source/mk_pusher.cpp @@ -25,7 +25,7 @@ */ #include -#include "pusher.h" +#include "mk_pusher.h" #include "Pusher/MediaPusher.h" using namespace mediakit; diff --git a/api/source/recorder.cpp b/api/source/mk_recorder.cpp similarity index 99% rename from api/source/recorder.cpp rename to api/source/mk_recorder.cpp index b5315bc8..ee5baa4a 100644 --- a/api/source/recorder.cpp +++ b/api/source/mk_recorder.cpp @@ -24,7 +24,7 @@ * SOFTWARE. */ -#include "recorder.h" +#include "mk_recorder.h" #include "Rtmp/FlvMuxer.h" #include "Record/Recorder.h" using namespace toolkit; diff --git a/api/source/tcp.cpp b/api/source/mk_tcp.cpp similarity index 99% rename from api/source/tcp.cpp rename to api/source/mk_tcp.cpp index 61dd22e4..613622a0 100644 --- a/api/source/tcp.cpp +++ b/api/source/mk_tcp.cpp @@ -24,7 +24,7 @@ * SOFTWARE. */ -#include "tcp.h" +#include "mk_tcp.h" #include "Network/TcpSession.h" #include "Network/TcpClient.h" #include "Http/WebSocketClient.h" diff --git a/api/source/mk_util.cpp b/api/source/mk_util.cpp new file mode 100644 index 00000000..872bf672 --- /dev/null +++ b/api/source/mk_util.cpp @@ -0,0 +1,69 @@ +/* + * MIT License + * + * Copyright (c) 2019 xiongziliang <771730766@qq.com> + * + * This file is part of ZLMediaKit(https://github.com/xiongziliang/ZLMediaKit). + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +#include "mk_util.h" +#include +#include "Util/logger.h" +using namespace std; +using namespace toolkit; + +API_EXPORT char* API_CALL mk_util_get_exe_path(){ + return strdup(exePath().data()); +} + +API_EXPORT char* API_CALL mk_uitl_get_exe_dir(const char *relative_path){ + if(relative_path){ + return strdup((exeDir() + relative_path).data()); + } + return strdup(exeDir().data()); +} + +API_EXPORT uint64_t API_CALL mk_uitl_get_current_millisecond(){ + return getCurrentMillisecond(); +} + +API_EXPORT char* API_CALL mk_uitl_get_current_time_string(const char *fmt){ + assert(fmt); + return strdup(getTimeStr(fmt).data()); +} + +API_EXPORT char* API_CALL mk_uitl_hex_dump(const void *buf, int len){ + assert(buf && len > 0); + return strdup(hexdump(buf,len).data()); +} + +API_EXPORT void API_CALL mk_log_printf(int level, const char *file, const char *function, int line, const char *fmt, ...) { + assert(file && function && fmt); + LogContextCapturer info(Logger::Instance(), (LogLevel) level, file, function, line); + va_list pArg; + va_start(pArg, fmt); + char buf[4096]; + int n = vsprintf(buf, fmt, pArg); + buf[n] = '\0'; + va_end(pArg); + info << buf; +} + diff --git a/api/tests/server.c b/api/tests/server.c index 16373389..34e3db1b 100644 --- a/api/tests/server.c +++ b/api/tests/server.c @@ -26,7 +26,7 @@ #include #include -#include "mediakit.h" +#include "mk_mediakit.h" #ifdef _WIN32 #include "windows.h" @@ -396,12 +396,24 @@ static void s_on_exit(int sig){ flag = 0; } int main(int argc, char *argv[]) { - char ini_path[2048] = {0}; - strcpy(ini_path,argv[0]); - strcat(ini_path,".ini"); + char *ini_path = mk_uitl_get_exe_dir("c_api.ini"); + char *ssl_path = mk_uitl_get_exe_dir("ssl.p12"); + + mk_config config = { + .ini = ini_path, + .ini_is_path = 1, + .log_level = 0, + .ssl = ssl_path, + .ssl_is_path = 1, + .ssl_pwd = NULL, + .thread_num = 0 + }; + mk_env_init(&config); + free(ini_path); + free(ssl_path); - mk_env_init1(0, 0, 1, ini_path, 0, NULL, NULL); mk_http_server_start(80, 0); + mk_http_server_start(443, 1); mk_rtsp_server_start(554, 0); mk_rtmp_server_start(1935, 0); mk_shell_server_start(9000); @@ -424,7 +436,6 @@ int main(int argc, char *argv[]) { }; mk_events_listen(&events); - signal(SIGINT, s_on_exit );// 设置退出信号 while (flag) { #ifdef _WIN32 diff --git a/api/tests/websocket.c b/api/tests/websocket.c index 0398bf97..845a78d6 100644 --- a/api/tests/websocket.c +++ b/api/tests/websocket.c @@ -28,7 +28,7 @@ #include #include #include -#include "mediakit.h" +#include "mk_mediakit.h" #ifdef _WIN32 #include "windows.h" #else @@ -36,6 +36,7 @@ #endif #define LOG_LEV 4 +//修改此宏,可以选择协议类型 #define TCP_TYPE mk_type_ws static int flag = 1; @@ -194,11 +195,21 @@ void test_client(){ } int main(int argc, char *argv[]) { - char ini_path[2048] = {0}; - strcpy(ini_path,argv[0]); - strcat(ini_path,".ini"); + char *ini_path = mk_uitl_get_exe_dir("c_api.ini"); + char *ssl_path = mk_uitl_get_exe_dir("ssl.p12"); - mk_env_init1(0, 0, 1, ini_path, 0, NULL, NULL); + mk_config config = { + .ini = ini_path, + .ini_is_path = 1, + .log_level = 0, + .ssl = ssl_path, + .ssl_is_path = 1, + .ssl_pwd = NULL, + .thread_num = 0 + }; + mk_env_init(&config); + free(ini_path); + free(ssl_path); test_server(); test_client();