mirror of
https://github.com/ZLMediaKit/ZLMediaKit.git
synced 2026-06-14 12:05:58 +08:00
c api和测试范例新增webrtc功能 (#1574)
* Update Rtsp.cpp * c sdk识别到enable_webrtc * mk_api增加json库 * 对rtc http请求的处理 * c sdk 增加rtc服务器
This commit is contained in:
@@ -34,6 +34,11 @@ static TcpServer::Ptr shell_server;
|
||||
static std::shared_ptr<RtpServer> rtpServer;
|
||||
#endif
|
||||
|
||||
#ifdef ENABLE_WEBRTC
|
||||
#include "../webrtc/WebRtcSession.h"
|
||||
static std::shared_ptr<UdpServer> rtcServer;
|
||||
#endif
|
||||
|
||||
//////////////////////////environment init///////////////////////////
|
||||
|
||||
API_EXPORT void API_CALL mk_env_init(const mk_config *cfg) {
|
||||
@@ -218,6 +223,36 @@ API_EXPORT uint16_t API_CALL mk_rtp_server_start(uint16_t port){
|
||||
#endif
|
||||
}
|
||||
|
||||
API_EXPORT uint16_t API_CALL mk_rtc_server_start(uint16_t port) {
|
||||
#ifdef ENABLE_WEBRTC
|
||||
try {
|
||||
//创建rtc服务器
|
||||
rtcServer = std::make_shared<UdpServer>();
|
||||
rtcServer->setOnCreateSocket([](const EventPoller::Ptr &poller, const Buffer::Ptr &buf, struct sockaddr *, int) {
|
||||
if (!buf) {
|
||||
return Socket::createSocket(poller, false);
|
||||
}
|
||||
auto new_poller = WebRtcSession::queryPoller(buf);
|
||||
if (!new_poller) {
|
||||
//该数据对应的webrtc对象未找到,丢弃之
|
||||
return Socket::Ptr();
|
||||
}
|
||||
return Socket::createSocket(new_poller, false);
|
||||
});
|
||||
rtcServer->start<WebRtcSession>(port);
|
||||
return rtcServer->getPort();
|
||||
|
||||
} catch (std::exception &ex) {
|
||||
rtpServer.reset();
|
||||
WarnL << ex.what();
|
||||
return 0;
|
||||
}
|
||||
#else
|
||||
WarnL << "未启用该功能!";
|
||||
return 0;
|
||||
#endif
|
||||
}
|
||||
|
||||
API_EXPORT uint16_t API_CALL mk_shell_server_start(uint16_t port){
|
||||
try {
|
||||
shell_server = std::make_shared<TcpServer>();
|
||||
|
||||
Reference in New Issue
Block a user