mirror of
https://github.com/ZLMediaKit/ZLMediaKit.git
synced 2024-11-22 19:00:01 +08:00
修改成c源码
This commit is contained in:
parent
3f9f9c4d81
commit
9dc1f3a804
@ -82,7 +82,7 @@ API_EXPORT int API_CALL mk_recorder_status(int type, const char *vhost, const ch
|
|||||||
* @param continue_record 流注销时是否继续等待录制还是立即停止录制
|
* @param continue_record 流注销时是否继续等待录制还是立即停止录制
|
||||||
* @return 0代表成功,负数代表失败
|
* @return 0代表成功,负数代表失败
|
||||||
*/
|
*/
|
||||||
API_EXPORT int API_CALL mk_recorder_start(int type, const char *vhost, const char *app, const char *stream,bool wait_for_record, bool continue_record);
|
API_EXPORT int API_CALL mk_recorder_start(int type, const char *vhost, const char *app, const char *stream,int wait_for_record, int continue_record);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 停止录制
|
* 停止录制
|
||||||
|
@ -57,7 +57,7 @@ API_EXPORT int API_CALL mk_recorder_status(int type, const char *vhost, const ch
|
|||||||
return Recorder::getRecordStatus((Recorder::type)type,vhost,app,stream);
|
return Recorder::getRecordStatus((Recorder::type)type,vhost,app,stream);
|
||||||
}
|
}
|
||||||
|
|
||||||
API_EXPORT int API_CALL mk_recorder_start(int type, const char *vhost, const char *app, const char *stream,bool wait_for_record, bool continue_record){
|
API_EXPORT int API_CALL mk_recorder_start(int type, const char *vhost, const char *app, const char *stream,int wait_for_record, int continue_record){
|
||||||
assert(vhost && app && stream);
|
assert(vhost && app && stream);
|
||||||
return Recorder::startRecord((Recorder::type)type,vhost,app,stream,wait_for_record,continue_record);
|
return Recorder::startRecord((Recorder::type)type,vhost,app,stream,wait_for_record,continue_record);
|
||||||
}
|
}
|
||||||
|
@ -24,9 +24,8 @@
|
|||||||
* SOFTWARE.
|
* SOFTWARE.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <csignal>
|
#include <signal.h>
|
||||||
#include <cstring>
|
#include <string.h>
|
||||||
#include <string>
|
|
||||||
#include "mediakit.h"
|
#include "mediakit.h"
|
||||||
|
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
@ -37,8 +36,6 @@
|
|||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
using namespace std;
|
|
||||||
|
|
||||||
#define LOG_LEV 4
|
#define LOG_LEV 4
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -80,7 +77,7 @@ void API_CALL on_mk_media_publish(const mk_media_info url_info,
|
|||||||
mk_media_info_get_params(url_info));
|
mk_media_info_get_params(url_info));
|
||||||
|
|
||||||
//允许推流,并且允许转rtxp/hls/mp4
|
//允许推流,并且允许转rtxp/hls/mp4
|
||||||
mk_publish_auth_invoker_do(invoker, nullptr, 1, 1, true);
|
mk_publish_auth_invoker_do(invoker, NULL, 1, 1, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -108,7 +105,7 @@ void API_CALL on_mk_media_play(const mk_media_info url_info,
|
|||||||
mk_media_info_get_params(url_info));
|
mk_media_info_get_params(url_info));
|
||||||
|
|
||||||
//允许播放
|
//允许播放
|
||||||
mk_auth_invoker_do(invoker, nullptr);
|
mk_auth_invoker_do(invoker, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -176,12 +173,12 @@ void API_CALL on_mk_http_request(const mk_parser parser,
|
|||||||
|
|
||||||
const char *url = mk_parser_get_url(parser);
|
const char *url = mk_parser_get_url(parser);
|
||||||
if(strcmp(url,"/api/test") != 0){
|
if(strcmp(url,"/api/test") != 0){
|
||||||
*consumed = false;
|
*consumed = 0;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
//只拦截api: /api/test
|
//只拦截api: /api/test
|
||||||
*consumed = true;
|
*consumed = 1;
|
||||||
const char *response_header[] = {"Content-Type","text/html",NULL};
|
const char *response_header[] = {"Content-Type","text/html",NULL};
|
||||||
const char *content =
|
const char *content =
|
||||||
"<html>"
|
"<html>"
|
||||||
@ -230,7 +227,7 @@ void API_CALL on_mk_http_access(const mk_parser parser,
|
|||||||
mk_parser_get_content(parser));
|
mk_parser_get_content(parser));
|
||||||
|
|
||||||
//有访问权限,每次访问文件都需要鉴权
|
//有访问权限,每次访问文件都需要鉴权
|
||||||
mk_http_access_path_invoker_do(invoker, nullptr, nullptr, 0);
|
mk_http_access_path_invoker_do(invoker, NULL, NULL, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -291,12 +288,12 @@ void API_CALL on_mk_rtsp_get_realm(const mk_media_info url_info,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 请求认证用户密码事件,user_name为用户名,must_no_encrypt如果为true,则必须提供明文密码(因为此时是base64认证方式),否则会导致认证失败
|
* 请求认证用户密码事件,user_name为用户名,must_no_encrypt如果为1,则必须提供明文密码(因为此时是base64认证方式),否则会导致认证失败
|
||||||
* 获取到密码后请调用invoker并输入对应类型的密码和密码类型,invoker执行时会匹配密码
|
* 获取到密码后请调用invoker并输入对应类型的密码和密码类型,invoker执行时会匹配密码
|
||||||
* @param url_info 请求rtsp url相关信息
|
* @param url_info 请求rtsp url相关信息
|
||||||
* @param realm rtsp认证realm
|
* @param realm rtsp认证realm
|
||||||
* @param user_name rtsp认证用户名
|
* @param user_name rtsp认证用户名
|
||||||
* @param must_no_encrypt 如果为true,则必须提供明文密码(因为此时是base64认证方式),否则会导致认证失败
|
* @param must_no_encrypt 如果为1,则必须提供明文密码(因为此时是base64认证方式),否则会导致认证失败
|
||||||
* @param invoker 执行invoker返回rtsp专属认证的密码
|
* @param invoker 执行invoker返回rtsp专属认证的密码
|
||||||
* @param sender rtsp客户端信息
|
* @param sender rtsp客户端信息
|
||||||
*/
|
*/
|
||||||
@ -323,7 +320,7 @@ void API_CALL on_mk_rtsp_auth(const mk_media_info url_info,
|
|||||||
realm,user_name,(int)must_no_encrypt);
|
realm,user_name,(int)must_no_encrypt);
|
||||||
|
|
||||||
//rtsp播放用户名跟密码一致
|
//rtsp播放用户名跟密码一致
|
||||||
mk_rtsp_auth_invoker_do(invoker,false,user_name);
|
mk_rtsp_auth_invoker_do(invoker,0,user_name);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -368,7 +365,7 @@ void API_CALL on_mk_shell_login(const char *user_name,
|
|||||||
mk_tcp_session_peer_port(sender),
|
mk_tcp_session_peer_port(sender),
|
||||||
user_name, passwd);
|
user_name, passwd);
|
||||||
//允许登录shell
|
//允许登录shell
|
||||||
mk_auth_invoker_do(invoker, nullptr);
|
mk_auth_invoker_do(invoker, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -392,11 +389,19 @@ void API_CALL on_mk_flow_report(const mk_media_info url_info,
|
|||||||
(int)total_bytes, (int)total_seconds, (int)is_player);
|
(int)total_bytes, (int)total_seconds, (int)is_player);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int flag = 1;
|
||||||
|
static void on_exit(int sig){
|
||||||
|
flag = 0;
|
||||||
|
}
|
||||||
int main(int argc, char *argv[]) {
|
int main(int argc, char *argv[]) {
|
||||||
mk_env_init1(0, 0, 1, (string(argv[0]) + ".ini").data(), 0, nullptr, nullptr);
|
char ini_path[2048] = {0};
|
||||||
mk_http_server_start(80, false);
|
strcpy(ini_path,argv[0]);
|
||||||
mk_rtsp_server_start(554, false);
|
strcat(ini_path,".ini");
|
||||||
mk_rtmp_server_start(1935, false);
|
|
||||||
|
mk_env_init1(0, 0, 1, ini_path, 0, NULL, NULL);
|
||||||
|
mk_http_server_start(80, 0);
|
||||||
|
mk_rtsp_server_start(554, 0);
|
||||||
|
mk_rtmp_server_start(1935, 0);
|
||||||
mk_shell_server_start(9000);
|
mk_shell_server_start(9000);
|
||||||
mk_rtp_server_start(10000);
|
mk_rtp_server_start(10000);
|
||||||
|
|
||||||
@ -417,8 +422,8 @@ int main(int argc, char *argv[]) {
|
|||||||
};
|
};
|
||||||
mk_events_listen(&events);
|
mk_events_listen(&events);
|
||||||
|
|
||||||
static bool flag = true;
|
|
||||||
signal(SIGINT, [](int) { flag = false; });// 设置退出信号
|
signal(SIGINT, on_exit );// 设置退出信号
|
||||||
while (flag) {
|
while (flag) {
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
Sleep(1000);
|
Sleep(1000);
|
Loading…
Reference in New Issue
Block a user