mirror of
https://github.com/ZLMediaKit/ZLMediaKit.git
synced 2026-07-05 02:38:10 +08:00
本协议拉流代码支持任意编码格式
This commit is contained in:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user