mirror of
https://github.com/ZLMediaKit/ZLMediaKit.git
synced 2026-06-13 03:31:45 +08:00
添加pusher接口
整理代码
This commit is contained in:
@@ -45,7 +45,7 @@ static TcpServer::Ptr http_server[2];
|
||||
|
||||
//////////////////////////environment init///////////////////////////
|
||||
API_EXPORT void API_CALL mk_env_init(const config *cfg) {
|
||||
assert(cfg != nullptr);
|
||||
assert(cfg);
|
||||
static onceToken token([&]() {
|
||||
Logger::Instance().add(std::make_shared<ConsoleChannel>("console", (LogLevel) cfg->log_level));
|
||||
Logger::Instance().setWriter(std::make_shared<AsyncLogWriter>());
|
||||
@@ -70,6 +70,7 @@ API_EXPORT void API_CALL mk_env_init(const config *cfg) {
|
||||
}
|
||||
|
||||
API_EXPORT void API_CALL mk_set_option(const char *key, const char *val) {
|
||||
assert(key && val);
|
||||
if (mINI::Instance().find(key) == mINI::Instance().end()) {
|
||||
WarnL << "key:" << key << " not existed!";
|
||||
return;
|
||||
@@ -129,6 +130,7 @@ API_EXPORT uint16_t API_CALL mk_rtmp_server_start(uint16_t port, int ssl) {
|
||||
}
|
||||
|
||||
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);
|
||||
|
||||
@@ -34,13 +34,14 @@ API_EXPORT mk_flv_recorder API_CALL mk_flv_recorder_create(){
|
||||
return ret;
|
||||
}
|
||||
API_EXPORT void API_CALL mk_flv_recorder_release(mk_flv_recorder ctx){
|
||||
assert(ctx);
|
||||
FlvRecorder::Ptr *record = (FlvRecorder::Ptr *)(ctx);
|
||||
delete record;
|
||||
}
|
||||
API_EXPORT int API_CALL mk_flv_recorder_start(mk_flv_recorder ctx, const char *app, const char *stream, const char *file_path){
|
||||
DebugL << app << " " << stream << " " << file_path;
|
||||
FlvRecorder::Ptr *record = (FlvRecorder::Ptr *)(ctx);
|
||||
assert(ctx && app && stream && file_path);
|
||||
try {
|
||||
FlvRecorder::Ptr *record = (FlvRecorder::Ptr *)(ctx);
|
||||
(*record)->startRecord(EventPollerPool::Instance().getPoller(), DEFAULT_VHOST,app,stream,file_path);
|
||||
return 0;
|
||||
}catch (std::exception &ex){
|
||||
|
||||
@@ -37,11 +37,13 @@ API_EXPORT mk_http_downloader API_CALL mk_http_downloader_create() {
|
||||
}
|
||||
|
||||
API_EXPORT void API_CALL mk_http_downloader_release(mk_http_downloader ctx) {
|
||||
assert(ctx);
|
||||
HttpDownloader::Ptr *obj = (HttpDownloader::Ptr *) ctx;
|
||||
delete obj;
|
||||
}
|
||||
|
||||
API_EXPORT void API_CALL mk_http_downloader_start(mk_http_downloader ctx, const char *url, const char *file, on_mk_download_complete cb, void *user_data) {
|
||||
assert(ctx && url && file);
|
||||
HttpDownloader::Ptr *obj = (HttpDownloader::Ptr *) ctx;
|
||||
(*obj)->setOnResult([cb, user_data](ErrCode code, const string &errMsg, const string &filePath) {
|
||||
if (cb) {
|
||||
|
||||
@@ -32,17 +32,20 @@ using namespace std;
|
||||
using namespace toolkit;
|
||||
using namespace mediakit;
|
||||
|
||||
API_EXPORT mk_media API_CALL mk_media_create(const char *app, const char *stream, float duration, int hls_enabled, int mp4_enabled) {
|
||||
DevChannel::Ptr *obj(new DevChannel::Ptr(new DevChannel(DEFAULT_VHOST, app, stream, duration, true, true, hls_enabled, mp4_enabled)));
|
||||
API_EXPORT mk_media API_CALL mk_media_create(const char *vhost, const char *app, const char *stream, float duration, int hls_enabled, int mp4_enabled) {
|
||||
assert(vhost && app && stream);
|
||||
DevChannel::Ptr *obj(new DevChannel::Ptr(new DevChannel(vhost, app, stream, duration, true, true, hls_enabled, mp4_enabled)));
|
||||
return (mk_media) obj;
|
||||
}
|
||||
|
||||
API_EXPORT void API_CALL mk_media_release(mk_media ctx) {
|
||||
assert(ctx);
|
||||
DevChannel::Ptr *obj = (DevChannel::Ptr *) ctx;
|
||||
delete obj;
|
||||
}
|
||||
|
||||
API_EXPORT void API_CALL mk_media_init_h264(mk_media ctx, int width, int height, int frameRate) {
|
||||
assert(ctx);
|
||||
DevChannel::Ptr *obj = (DevChannel::Ptr *) ctx;
|
||||
VideoInfo info;
|
||||
info.iFrameRate = frameRate;
|
||||
@@ -52,6 +55,7 @@ API_EXPORT void API_CALL mk_media_init_h264(mk_media ctx, int width, int height,
|
||||
}
|
||||
|
||||
API_EXPORT void API_CALL mk_media_init_h265(mk_media ctx, int width, int height, int frameRate) {
|
||||
assert(ctx);
|
||||
DevChannel::Ptr *obj = (DevChannel::Ptr *) ctx;
|
||||
VideoInfo info;
|
||||
info.iFrameRate = frameRate;
|
||||
@@ -61,6 +65,7 @@ API_EXPORT void API_CALL mk_media_init_h265(mk_media ctx, int width, int height,
|
||||
}
|
||||
|
||||
API_EXPORT void API_CALL mk_media_init_aac(mk_media ctx, int channel, int sample_bit, int sample_rate, int profile) {
|
||||
assert(ctx);
|
||||
DevChannel::Ptr *obj = (DevChannel::Ptr *) ctx;
|
||||
AudioInfo info;
|
||||
info.iSampleRate = sample_rate;
|
||||
@@ -71,21 +76,25 @@ API_EXPORT void API_CALL mk_media_init_aac(mk_media ctx, int channel, int sample
|
||||
}
|
||||
|
||||
API_EXPORT void API_CALL mk_media_input_h264(mk_media ctx, void *data, int len, uint32_t dts, uint32_t pts) {
|
||||
assert(ctx && data && len > 0);
|
||||
DevChannel::Ptr *obj = (DevChannel::Ptr *) ctx;
|
||||
(*obj)->inputH264((char *) data, len, dts, pts);
|
||||
}
|
||||
|
||||
API_EXPORT void API_CALL mk_media_input_h265(mk_media ctx, void *data, int len, uint32_t dts, uint32_t pts) {
|
||||
assert(ctx && data && len > 0);
|
||||
DevChannel::Ptr *obj = (DevChannel::Ptr *) ctx;
|
||||
(*obj)->inputH265((char *) data, len, dts, pts);
|
||||
}
|
||||
|
||||
API_EXPORT void API_CALL mk_media_input_aac(mk_media ctx, void *data, int len, uint32_t dts, int with_adts_header) {
|
||||
assert(ctx && data && len > 0);
|
||||
DevChannel::Ptr *obj = (DevChannel::Ptr *) ctx;
|
||||
(*obj)->inputAAC((char *) data, len, dts, with_adts_header);
|
||||
}
|
||||
|
||||
API_EXPORT void API_CALL mk_media_input_aac1(mk_media ctx, void *data, int len, uint32_t dts, void *adts) {
|
||||
assert(ctx && data && len > 0 && adts);
|
||||
DevChannel::Ptr *obj = (DevChannel::Ptr *) ctx;
|
||||
(*obj)->inputAAC((char *) data, len, dts, (char *) adts);
|
||||
}
|
||||
|
||||
@@ -42,9 +42,7 @@ API_EXPORT void API_CALL mk_player_release(mk_player ctx) {
|
||||
}
|
||||
|
||||
API_EXPORT void API_CALL mk_player_set_option(mk_player ctx,const char* key,const char *val){
|
||||
assert(ctx);
|
||||
assert(key);
|
||||
assert(val);
|
||||
assert(ctx && key && val);
|
||||
MediaPlayer::Ptr &player = *((MediaPlayer::Ptr *)ctx);
|
||||
string key_str(key), val_str(val);
|
||||
player->getPoller()->async([key_str,val_str,player](){
|
||||
@@ -53,8 +51,7 @@ API_EXPORT void API_CALL mk_player_set_option(mk_player ctx,const char* key,cons
|
||||
});
|
||||
}
|
||||
API_EXPORT void API_CALL mk_player_play(mk_player ctx, const char *url) {
|
||||
assert(ctx);
|
||||
assert(url);
|
||||
assert(ctx && url);
|
||||
MediaPlayer::Ptr &player = *((MediaPlayer::Ptr *)ctx);
|
||||
string url_str(url);
|
||||
player->getPoller()->async([url_str,player](){
|
||||
@@ -82,8 +79,7 @@ API_EXPORT void API_CALL mk_player_seekto(mk_player ctx, float progress) {
|
||||
}
|
||||
|
||||
static void mk_player_set_on_event(mk_player ctx, on_mk_play_event cb, void *user_data, int type) {
|
||||
assert(ctx);
|
||||
assert(cb);
|
||||
assert(ctx && cb);
|
||||
MediaPlayer::Ptr &player = *((MediaPlayer::Ptr *)ctx);
|
||||
player->getPoller()->async([cb,user_data,type,player](){
|
||||
//切换线程后再操作
|
||||
@@ -108,8 +104,7 @@ API_EXPORT void API_CALL mk_player_set_on_shutdown(mk_player ctx, on_mk_play_eve
|
||||
}
|
||||
|
||||
API_EXPORT void API_CALL mk_player_set_on_data(mk_player ctx, on_mk_play_data cb, void *user_data) {
|
||||
assert(ctx);
|
||||
assert(cb);
|
||||
assert(ctx && cb);
|
||||
MediaPlayer::Ptr &player = *((MediaPlayer::Ptr *)ctx);
|
||||
player->getPoller()->async([player,cb,user_data](){
|
||||
//切换线程后再操作
|
||||
|
||||
@@ -30,18 +30,34 @@
|
||||
using namespace toolkit;
|
||||
using namespace mediakit;
|
||||
|
||||
API_EXPORT mk_proxy_player API_CALL mk_proxy_player_create(const char *app, const char *stream, int rtp_type, int hls_enabled, int mp4_enabled) {
|
||||
PlayerProxy::Ptr *obj(new PlayerProxy::Ptr(new PlayerProxy(DEFAULT_VHOST, app, stream, true, true, hls_enabled, mp4_enabled)));
|
||||
(**obj)[Client::kRtpType] = rtp_type;
|
||||
API_EXPORT mk_proxy_player API_CALL mk_proxy_player_create(const char *vhost, const char *app, const char *stream, int hls_enabled, int mp4_enabled) {
|
||||
assert(vhost && app && stream);
|
||||
PlayerProxy::Ptr *obj(new PlayerProxy::Ptr(new PlayerProxy(vhost, app, stream, true, true, hls_enabled, mp4_enabled)));
|
||||
return (mk_proxy_player) obj;
|
||||
}
|
||||
|
||||
API_EXPORT void API_CALL mk_proxy_player_release(mk_proxy_player ctx) {
|
||||
assert(ctx);
|
||||
PlayerProxy::Ptr *obj = (PlayerProxy::Ptr *) ctx;
|
||||
delete obj;
|
||||
}
|
||||
|
||||
API_EXPORT void API_CALL mk_proxy_player_play(mk_proxy_player ctx, const char *url) {
|
||||
PlayerProxy::Ptr *obj = (PlayerProxy::Ptr *) ctx;
|
||||
(*obj)->play(url);
|
||||
API_EXPORT void API_CALL mk_proxy_player_set_option(mk_proxy_player ctx, const char *key, const char *val){
|
||||
assert(ctx && key && val);
|
||||
PlayerProxy::Ptr &obj = *((PlayerProxy::Ptr *) ctx);
|
||||
string key_str(key),val_str(val);
|
||||
obj->getPoller()->async([obj,key_str,val_str](){
|
||||
//切换线程再操作
|
||||
(*obj)[key_str] = val_str;
|
||||
});
|
||||
}
|
||||
|
||||
API_EXPORT void API_CALL mk_proxy_player_play(mk_proxy_player ctx, const char *url) {
|
||||
assert(ctx && url);
|
||||
PlayerProxy::Ptr &obj = *((PlayerProxy::Ptr *) ctx);
|
||||
string url_str(url);
|
||||
obj->getPoller()->async([obj,url_str](){
|
||||
//切换线程再操作
|
||||
obj->play(url_str);
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user