mirror of
https://github.com/ossrs/srs.git
synced 2025-03-09 15:49:59 +00:00
Merge branch 'feature/rtc' into develop
This commit is contained in:
commit
7c572dbae3
13 changed files with 153 additions and 28 deletions
|
@ -4820,8 +4820,10 @@ int SrsConfig::get_rtc_server_reuseport()
|
|||
int v = get_rtc_server_reuseport2();
|
||||
|
||||
#if !defined(SO_REUSEPORT)
|
||||
srs_warn("REUSEPORT not supported, reset %d to %d", reuseport, DEFAULT);
|
||||
v = 1
|
||||
if (v > 1) {
|
||||
srs_warn("REUSEPORT not supported, reset %d to %d", reuseport, DEFAULT);
|
||||
v = 1
|
||||
}
|
||||
#endif
|
||||
|
||||
return v;
|
||||
|
@ -4829,7 +4831,7 @@ int SrsConfig::get_rtc_server_reuseport()
|
|||
|
||||
int SrsConfig::get_rtc_server_reuseport2()
|
||||
{
|
||||
static int DEFAULT = 4;
|
||||
static int DEFAULT = 1;
|
||||
|
||||
SrsConfDirective* conf = root->get("rtc_server");
|
||||
if (!conf) {
|
||||
|
|
|
@ -247,7 +247,11 @@ SrsRtcSource::SrsRtcSource()
|
|||
rtc_publisher_ = NULL;
|
||||
|
||||
req = NULL;
|
||||
#ifdef SRS_FFMPEG_FIT
|
||||
bridger_ = new SrsRtcFromRtmpBridger(this);
|
||||
#else
|
||||
bridger_ = new SrsRtcDummyBridger();
|
||||
#endif
|
||||
}
|
||||
|
||||
SrsRtcSource::~SrsRtcSource()
|
||||
|
@ -266,9 +270,12 @@ srs_error_t SrsRtcSource::initialize(SrsRequest* r)
|
|||
|
||||
req = r->copy();
|
||||
|
||||
if ((err = bridger_->initialize(req)) != srs_success) {
|
||||
#ifdef SRS_FFMPEG_FIT
|
||||
SrsRtcFromRtmpBridger* bridger = dynamic_cast<SrsRtcFromRtmpBridger*>(bridger_);
|
||||
if ((err = bridger->initialize(req)) != srs_success) {
|
||||
return srs_error_wrap(err, "bridge initialize");
|
||||
}
|
||||
#endif
|
||||
|
||||
return err;
|
||||
}
|
||||
|
@ -414,6 +421,7 @@ srs_error_t SrsRtcSource::on_rtp(SrsRtpPacket2* pkt)
|
|||
return err;
|
||||
}
|
||||
|
||||
#ifdef SRS_FFMPEG_FIT
|
||||
SrsRtcFromRtmpBridger::SrsRtcFromRtmpBridger(SrsRtcSource* source)
|
||||
{
|
||||
req = NULL;
|
||||
|
@ -936,4 +944,32 @@ srs_error_t SrsRtcFromRtmpBridger::consume_packets(vector<SrsRtpPacket2*>& pkts)
|
|||
|
||||
return err;
|
||||
}
|
||||
#endif
|
||||
|
||||
SrsRtcDummyBridger::SrsRtcDummyBridger()
|
||||
{
|
||||
}
|
||||
|
||||
SrsRtcDummyBridger::~SrsRtcDummyBridger()
|
||||
{
|
||||
}
|
||||
|
||||
srs_error_t SrsRtcDummyBridger::on_publish()
|
||||
{
|
||||
return srs_error_new(ERROR_RTC_DUMMY_BRIDGER, "no FFmpeg fit");
|
||||
}
|
||||
|
||||
srs_error_t SrsRtcDummyBridger::on_audio(SrsSharedPtrMessage* /*audio*/)
|
||||
{
|
||||
return srs_error_new(ERROR_RTC_DUMMY_BRIDGER, "no FFmpeg fit");
|
||||
}
|
||||
|
||||
srs_error_t SrsRtcDummyBridger::on_video(SrsSharedPtrMessage* /*video*/)
|
||||
{
|
||||
return srs_error_new(ERROR_RTC_DUMMY_BRIDGER, "no FFmpeg fit");
|
||||
}
|
||||
|
||||
void SrsRtcDummyBridger::on_unpublish()
|
||||
{
|
||||
}
|
||||
|
||||
|
|
|
@ -115,7 +115,7 @@ private:
|
|||
SrsRequest* req;
|
||||
ISrsRtcPublisher* rtc_publisher_;
|
||||
// Transmux RTMP to RTC.
|
||||
SrsRtcFromRtmpBridger* bridger_;
|
||||
ISrsSourceBridger* bridger_;
|
||||
private:
|
||||
// To delivery stream to clients.
|
||||
std::vector<SrsRtcConsumer*> consumers;
|
||||
|
@ -159,6 +159,7 @@ public:
|
|||
srs_error_t on_rtp(SrsRtpPacket2* pkt);
|
||||
};
|
||||
|
||||
#ifdef SRS_FFMPEG_FIT
|
||||
class SrsRtcFromRtmpBridger : public ISrsSourceBridger
|
||||
{
|
||||
private:
|
||||
|
@ -197,6 +198,19 @@ private:
|
|||
srs_error_t package_fu_a(SrsSharedPtrMessage* msg, SrsSample* sample, int fu_payload_size, std::vector<SrsRtpPacket2*>& pkts);
|
||||
srs_error_t consume_packets(std::vector<SrsRtpPacket2*>& pkts);
|
||||
};
|
||||
#endif
|
||||
|
||||
class SrsRtcDummyBridger : public ISrsSourceBridger
|
||||
{
|
||||
public:
|
||||
SrsRtcDummyBridger();
|
||||
virtual ~SrsRtcDummyBridger();
|
||||
public:
|
||||
virtual srs_error_t on_publish();
|
||||
virtual srs_error_t on_audio(SrsSharedPtrMessage* audio);
|
||||
virtual srs_error_t on_video(SrsSharedPtrMessage* video);
|
||||
virtual void on_unpublish();
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
|
|
|
@ -24,6 +24,6 @@
|
|||
#ifndef SRS_CORE_VERSION4_HPP
|
||||
#define SRS_CORE_VERSION4_HPP
|
||||
|
||||
#define SRS_VERSION4_REVISION 30
|
||||
#define SRS_VERSION4_REVISION 32
|
||||
|
||||
#endif
|
||||
|
|
|
@ -352,6 +352,7 @@
|
|||
#define ERROR_RTC_DISABLED 5021
|
||||
#define ERROR_RTC_NO_SESSION 5022
|
||||
#define ERROR_RTC_INVALID_PARAMS 5023
|
||||
#define ERROR_RTC_DUMMY_BRIDGER 5024
|
||||
|
||||
///////////////////////////////////////////////////////
|
||||
// GB28181 API error.
|
||||
|
|
|
@ -212,6 +212,9 @@ srs_error_t do_main(int argc, char** argv)
|
|||
}
|
||||
|
||||
int main(int argc, char** argv) {
|
||||
// For background context id.
|
||||
_srs_context->generate_id();
|
||||
|
||||
srs_error_t err = do_main(argc, argv);
|
||||
|
||||
if (err != srs_success) {
|
||||
|
|
|
@ -69,11 +69,20 @@ srs_error_t srs_st_init()
|
|||
if (st_set_eventsys(ST_EVENTSYS_ALT) == -1) {
|
||||
return srs_error_new(ERROR_ST_SET_EPOLL, "st enable st failed, current is %s", st_get_eventsys_name());
|
||||
}
|
||||
|
||||
// Before ST init, we might have already inited the background cid.
|
||||
string cid = _srs_context->get_id();
|
||||
if (cid.empty()) {
|
||||
cid = _srs_context->generate_id();
|
||||
}
|
||||
|
||||
int r0 = 0;
|
||||
if((r0 = st_init()) != 0){
|
||||
return srs_error_new(ERROR_ST_INITIALIZE, "st initialize failed, r0=%d", r0);
|
||||
}
|
||||
|
||||
// Switch to the background cid.
|
||||
_srs_context->set_id(cid);
|
||||
srs_trace("st_init success, use %s", st_get_eventsys_name());
|
||||
|
||||
return srs_success;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue