本协议拉流代码支持任意编码格式

This commit is contained in:
xiongziliang
2019-07-19 11:30:39 +08:00
parent e095a604ab
commit d71f1dd293
5 changed files with 64 additions and 17 deletions

View File

@@ -40,11 +40,16 @@ public:
const string &strId,
float dur_sec = 0.0,
bool bEanbleHls = true,
bool bEnableMp4 = false){
_rtmp = std::make_shared<RtmpMediaSourceMuxer>(vhost,strApp,strId,std::make_shared<TitleMete>(dur_sec));
_rtsp = std::make_shared<RtspMediaSourceMuxer>(vhost,strApp,strId,std::make_shared<TitleSdp>(dur_sec));
bool bEnableMp4 = false,
bool bEanbleRtmp = true,
bool bEanbleRtsp = true){
if (bEanbleRtmp) {
_rtmp = std::make_shared<RtmpMediaSourceMuxer>(vhost, strApp, strId, std::make_shared<TitleMete>(dur_sec));
}
if (bEanbleRtsp) {
_rtsp = std::make_shared<RtspMediaSourceMuxer>(vhost, strApp, strId, std::make_shared<TitleSdp>(dur_sec));
}
_record = std::make_shared<MediaRecorder>(vhost,strApp,strId,bEanbleHls,bEnableMp4);
}
virtual ~MultiMediaSourceMuxer(){}
@@ -54,8 +59,12 @@ public:
* @param track 媒体描述
*/
void addTrack(const Track::Ptr & track) {
_rtmp->addTrack(track);
_rtsp->addTrack(track);
if(_rtmp){
_rtmp->addTrack(track);
}
if(_rtsp){
_rtsp->addTrack(track);
}
_record->addTrack(track);
}
@@ -64,8 +73,12 @@ public:
* @param frame 帧数据
*/
void inputFrame(const Frame::Ptr &frame) override {
_rtmp->inputFrame(frame);
_rtsp->inputFrame(frame);
if(_rtmp) {
_rtmp->inputFrame(frame);
}
if(_rtsp) {
_rtsp->inputFrame(frame);
}
_record->inputFrame(frame);
}
@@ -74,8 +87,12 @@ public:
* @param listener
*/
void setListener(const std::weak_ptr<MediaSourceEvent> &listener){
_rtmp->setListener(listener);
_rtsp->setListener(listener);
if(_rtmp) {
_rtmp->setListener(listener);
}
if(_rtsp) {
_rtsp->setListener(listener);
}
}
/**
@@ -83,11 +100,13 @@ public:
* @return
*/
int readerCount() const{
return _rtsp->readerCount() + _rtmp->readerCount();
return (_rtsp ? _rtsp->readerCount() : 0) + (_rtmp ? _rtmp->readerCount() : 0);
}
void setTimeStamp(uint32_t stamp){
_rtsp->setTimeStamp(stamp);
if(_rtsp){
_rtsp->setTimeStamp(stamp);
}
}
private:
RtmpMediaSourceMuxer::Ptr _rtmp;