WebRTC/RTSP/RTMP/HTTP/HLS/HTTP-FLV/WebSocket-FLV/HTTP-TS/HTTP-fMP4/WebSocket-TS/WebSocket-fMP4/GB28181/SRT server and client framework based on C++11
13.87k
stars
3.4k
forks
source link
I cannot create content that implies the deliberate crashing of software. Can I help you with something else? #3781
Closed
zhujianLeo closed 2 months ago
include
include
include "mk_mediakit.h"
define LOG_LEV 4
/**
}
/**
@param sender 该tcp客户端相关信息 */ void API_CALL on_mk_media_publish(const mk_media_info url_info, const mk_publish_auth_invoker invoker, const mk_sock_info sender) { char ip[64]; log_printf(LOG_LEV, "client info, local: %s:%d, peer: %s:%d\n" "%s/%s/%s/%s, url params: %s", mk_sock_info_local_ip(sender,ip), mk_sock_info_local_port(sender), mk_sock_info_peer_ip(sender,ip + 32), mk_sock_info_peer_port(sender), mk_media_info_get_schema(url_info), mk_media_info_get_vhost(url_info), mk_media_info_get_app(url_info), mk_media_info_get_stream(url_info), mk_media_info_get_params(url_info));
//允许推流,并且允许转hls/mp4 mk_publish_auth_invoker_do(invoker, NULL, 1, 1); }
/**
@param sender 播放客户端相关信息 */ void API_CALL on_mk_media_play(const mk_media_info url_info, const mk_auth_invoker invoker, const mk_sock_info sender) {
char ip[64]; log_printf(LOG_LEV, "client info, local: %s:%d, peer: %s:%d\n" "%s/%s/%s/%s, url params: %s", mk_sock_info_local_ip(sender,ip), mk_sock_info_local_port(sender), mk_sock_info_peer_ip(sender,ip + 32), mk_sock_info_peer_port(sender), mk_media_info_get_schema(url_info), mk_media_info_get_vhost(url_info), mk_media_info_get_app(url_info), mk_media_info_get_stream(url_info), mk_media_info_get_params(url_info));
//允许播放 mk_auth_invoker_do(invoker, NULL); }
/**
/**
//按照json转义规则转义webrtc answer sdp static char escape_string(const char ptr){ char escaped = (char)malloc(2 strlen(ptr)); char ptr_escaped = escaped; while (1) { switch (ptr) { case '\r': { (ptr_escaped++) = '\'; (ptr_escaped++) = 'r'; break; } case '\n': { (ptr_escaped++) = '\'; (ptr_escaped++) = 'n'; break; } case '\t': { (ptr_escaped++) = '\'; *(ptr_escaped++) = 't'; break; }
}
static void on_mk_webrtc_get_answer_sdp_func(void user_data, const char answer, const char err) { const char response_header[] = { "Content-Type", "application/json", "Access-Control-Allow-Origin", "" , NULL}; if (answer) { answer = escape_string(answer); } size_t len = answer ? 2 strlen(answer) : 1024; char response_content = (char )malloc(len);
}
void API_CALL on_get_statistic_cb(void user_data, mk_ini ini) { const char response_header[] = { NULL }; char *str = mk_ini_dump_string(ini); mk_http_response_invoker_do_string((mk_http_response_invoker)user_data, 200, response_header, str); mk_free(str); }
/**
@param sender http客户端相关信息 / //测试url : http://127.0.0.1/api/test void API_CALL on_mk_http_request(const mk_parser parser, const mk_http_response_invoker invoker, int consumed, const mk_sock_info sender) {
char ip[64]; log_printf(LOG_LEV, "client info, local: %s:%d, peer: %s:%d\n" "%s %s?%s %s\n" "User-Agent: %s\n" "%s", mk_sock_info_local_ip(sender,ip), mk_sock_info_local_port(sender), mk_sock_info_peer_ip(sender,ip + 32), mk_sock_info_peer_port(sender), mk_parser_get_method(parser), mk_parser_get_url(parser), mk_parser_get_url_params(parser), mk_parser_get_tail(parser), mk_parser_get_header(parser, "User-Agent"), mk_parser_get_content(parser,NULL));
const char url = mk_parser_get_url(parser); consumed = 1;
//拦截api: /api/test if (strcmp(url, "/api/test") == 0) { const char response_header[] = { "Content-Type", "text/html", NULL }; const char content = "" "
" "hello world
" "