完成Track对象与SDP对象的转换

This commit is contained in:
xiongziliang
2018-10-23 22:16:54 +08:00
parent be9af50dbb
commit b6c64fb4ed
4 changed files with 95 additions and 39 deletions

38
src/Rtsp/RtspEncoder.cpp Normal file
View File

@@ -0,0 +1,38 @@
//
// Created by xzl on 2018/10/23.
//
#include "RtspEncoder.h"
namespace ZL{
namespace Rtsp{
Sdp::Ptr Sdp::getSdpByTrack(const Track::Ptr &track) {
switch (track->getCodecId()){
case CodecH264:{
H264Track::Ptr h264Track = dynamic_pointer_cast<H264Track>(track);
if(!h264Track){
return nullptr;
}
return std::make_shared<H264Sdp>(h264Track->getSps(),h264Track->getPps());
}
case CodecAAC:{
AACTrack::Ptr aacTrack = dynamic_pointer_cast<AACTrack>(track);
if(!aacTrack){
return nullptr;
}
return std::make_shared<AACSdp>(aacTrack->getAacCfg(),aacTrack->getAudioSampleRate());
}
default:
return nullptr;
}
}
}
}

View File

@@ -8,6 +8,7 @@
#include "RTP/H264RtpCodec.h"
#include "RTP/AACRtpCodec.h"
#include "Util/base64.h"
#include "Player/Track.h"
namespace ZL{
namespace Rtsp{
@@ -28,6 +29,14 @@ public:
_sample_rate = sample_rate;
_playload_type = playload_type;
}
/**
* 根据Track生成SDP对象
* @param track 媒体信息
* @return 返回sdp对象
*/
static Ptr getSdpByTrack(const Track::Ptr &track);
virtual ~Sdp(){}
/**