mirror of
https://github.com/ZLMediaKit/ZLMediaKit.git
synced 2024-11-27 04:20:13 +08:00
优化接口
This commit is contained in:
parent
0839ddb681
commit
3d83a236b6
@ -104,7 +104,7 @@ void DevChannel::inputH264(const char* pcData, int iDataLen, uint32_t uiStamp) {
|
|||||||
uint32_t ui32Ssrc;
|
uint32_t ui32Ssrc;
|
||||||
memcpy(&ui32Ssrc, makeRandStr(4, false).data(), 4);
|
memcpy(&ui32Ssrc, makeRandStr(4, false).data(), 4);
|
||||||
auto lam = [this](const RtpPacket::Ptr &pkt, bool bKeyPos) {
|
auto lam = [this](const RtpPacket::Ptr &pkt, bool bKeyPos) {
|
||||||
onGetRTP(pkt,bKeyPos);
|
onWrite(pkt,bKeyPos);
|
||||||
};
|
};
|
||||||
GET_CONFIG_AND_REGISTER(uint32_t,videoMtu,Rtp::kVideoMtuSize);
|
GET_CONFIG_AND_REGISTER(uint32_t,videoMtu,Rtp::kVideoMtuSize);
|
||||||
_pRtpMaker_h264.reset(new RtpMaker_H264(lam, ui32Ssrc,videoMtu));
|
_pRtpMaker_h264.reset(new RtpMaker_H264(lam, ui32Ssrc,videoMtu));
|
||||||
@ -136,7 +136,7 @@ void DevChannel::inputAAC(const char *pcDataWithoutAdts,int iDataLen, uint32_t u
|
|||||||
uint32_t ssrc;
|
uint32_t ssrc;
|
||||||
memcpy(&ssrc, makeRandStr(8, false).data() + 4, 4);
|
memcpy(&ssrc, makeRandStr(8, false).data() + 4, 4);
|
||||||
auto lam = [this](const RtpPacket::Ptr &pkt, bool keyPos) {
|
auto lam = [this](const RtpPacket::Ptr &pkt, bool keyPos) {
|
||||||
onGetRTP(pkt,keyPos);
|
onWrite(pkt,keyPos);
|
||||||
};
|
};
|
||||||
GET_CONFIG_AND_REGISTER(uint32_t,audioMtu,Rtp::kAudioMtuSize);
|
GET_CONFIG_AND_REGISTER(uint32_t,audioMtu,Rtp::kAudioMtuSize);
|
||||||
_pRtpMaker_aac.reset(new RtpMaker_AAC(lam, ssrc, audioMtu,_audio->iSampleRate));
|
_pRtpMaker_aac.reset(new RtpMaker_AAC(lam, ssrc, audioMtu,_audio->iSampleRate));
|
||||||
|
@ -76,6 +76,7 @@ public:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
virtual void onGetMetaData(const AMFValue &metadata) {
|
virtual void onGetMetaData(const AMFValue &metadata) {
|
||||||
lock_guard<recursive_mutex> lock(_mtxMap);
|
lock_guard<recursive_mutex> lock(_mtxMap);
|
||||||
_metadata = metadata;
|
_metadata = metadata;
|
||||||
@ -88,7 +89,8 @@ public:
|
|||||||
_bAsyncRegist = true;
|
_bAsyncRegist = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
virtual void onGetMedia(const RtmpPacket::Ptr &pkt) {
|
|
||||||
|
void onWrite(const RtmpPacket::Ptr &pkt,bool isKey = true) override {
|
||||||
lock_guard<recursive_mutex> lock(_mtxMap);
|
lock_guard<recursive_mutex> lock(_mtxMap);
|
||||||
if (pkt->isCfgFrame()) {
|
if (pkt->isCfgFrame()) {
|
||||||
_mapCfgFrame.emplace(pkt->typeId, pkt);
|
_mapCfgFrame.emplace(pkt->typeId, pkt);
|
||||||
@ -107,10 +109,6 @@ private:
|
|||||||
lock_guard<recursive_mutex> lock(_mtxMap);
|
lock_guard<recursive_mutex> lock(_mtxMap);
|
||||||
return _iCfgFrameSize != -1 && _iCfgFrameSize == _mapCfgFrame.size();
|
return _iCfgFrameSize != -1 && _iCfgFrameSize == _mapCfgFrame.size();
|
||||||
}
|
}
|
||||||
|
|
||||||
void onWrite(const RtmpPacket::Ptr &pkt,bool isKey = true) override {
|
|
||||||
onGetMedia(pkt);
|
|
||||||
}
|
|
||||||
protected:
|
protected:
|
||||||
AMFValue _metadata;
|
AMFValue _metadata;
|
||||||
unordered_map<int, RtmpPacket::Ptr> _mapCfgFrame;
|
unordered_map<int, RtmpPacket::Ptr> _mapCfgFrame;
|
||||||
|
@ -80,7 +80,7 @@ private:
|
|||||||
_parser->inputRtmp(chunkData);
|
_parser->inputRtmp(chunkData);
|
||||||
}
|
}
|
||||||
if(_pRtmpMediaSrc){
|
if(_pRtmpMediaSrc){
|
||||||
_pRtmpMediaSrc->onGetMedia(chunkData);
|
_pRtmpMediaSrc->onWrite(chunkData);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -509,7 +509,7 @@ void RtmpSession::onRtmpChunk(RtmpPacket &chunkData) {
|
|||||||
if(rtmp_modify_stamp){
|
if(rtmp_modify_stamp){
|
||||||
chunkData.timeStamp = _stampTicker[chunkData.typeId % 2].elapsedTime();
|
chunkData.timeStamp = _stampTicker[chunkData.typeId % 2].elapsedTime();
|
||||||
}
|
}
|
||||||
_pPublisherSrc->onGetMedia(std::make_shared<RtmpPacket>(chunkData));
|
_pPublisherSrc->onWrite(std::make_shared<RtmpPacket>(chunkData));
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
@ -83,7 +83,7 @@ void RtmpToRtspMediaSource::makeSDP() {
|
|||||||
// uint32_t ssrc0;
|
// uint32_t ssrc0;
|
||||||
// memcpy(&ssrc0, makeRandStr(4, false).data(), 4);
|
// memcpy(&ssrc0, makeRandStr(4, false).data(), 4);
|
||||||
// auto lam = [this](const RtpPacket::Ptr &pkt, bool bKeyPos) {
|
// auto lam = [this](const RtpPacket::Ptr &pkt, bool bKeyPos) {
|
||||||
// _pRtspSrc->onGetRTP(pkt,bKeyPos);
|
// _pRtspSrc->onWrite(pkt,bKeyPos);
|
||||||
// };
|
// };
|
||||||
//
|
//
|
||||||
// GET_CONFIG_AND_REGISTER(uint32_t,videoMtu,Rtp::kVideoMtuSize);
|
// GET_CONFIG_AND_REGISTER(uint32_t,videoMtu,Rtp::kVideoMtuSize);
|
||||||
@ -126,7 +126,7 @@ void RtmpToRtspMediaSource::makeSDP() {
|
|||||||
// uint32_t ssrc1;
|
// uint32_t ssrc1;
|
||||||
// memcpy(&ssrc1, makeRandStr(8, false).data() + 4, 4);
|
// memcpy(&ssrc1, makeRandStr(8, false).data() + 4, 4);
|
||||||
// auto lam = [this](const RtpPacket::Ptr &pkt, bool bKeyPos) {
|
// auto lam = [this](const RtpPacket::Ptr &pkt, bool bKeyPos) {
|
||||||
// _pRtspSrc->onGetRTP(pkt,bKeyPos);
|
// _pRtspSrc->onWrite(pkt,bKeyPos);
|
||||||
// };
|
// };
|
||||||
// GET_CONFIG_AND_REGISTER(uint32_t,audioMtu,Rtp::kAudioMtuSize);
|
// GET_CONFIG_AND_REGISTER(uint32_t,audioMtu,Rtp::kAudioMtuSize);
|
||||||
// _pRtpMaker_aac.reset(new RtpMaker_AAC(lam, ssrc1, audioMtu,_pParser->getAudioSampleRate()));
|
// _pRtpMaker_aac.reset(new RtpMaker_AAC(lam, ssrc1, audioMtu,_pParser->getAudioSampleRate()));
|
||||||
|
@ -72,14 +72,14 @@ public:
|
|||||||
RtmpMediaSource::onGetMetaData(_metadata);
|
RtmpMediaSource::onGetMetaData(_metadata);
|
||||||
}
|
}
|
||||||
|
|
||||||
void onGetMedia(const RtmpPacket::Ptr &pkt) override {
|
void onWrite(const RtmpPacket::Ptr &pkt,bool key_pos) override {
|
||||||
if (_pParser) {
|
if (_pParser) {
|
||||||
if (!_pRtspSrc && _pParser->isInited()) {
|
if (!_pRtspSrc && _pParser->isInited()) {
|
||||||
makeSDP();
|
makeSDP();
|
||||||
}
|
}
|
||||||
_pParser->inputRtmp(pkt);
|
_pParser->inputRtmp(pkt);
|
||||||
}
|
}
|
||||||
RtmpMediaSource::onGetMedia(pkt);
|
RtmpMediaSource::onWrite(pkt,key_pos);
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
@ -85,7 +85,8 @@ public:
|
|||||||
_strSdp = sdp;
|
_strSdp = sdp;
|
||||||
regist();
|
regist();
|
||||||
}
|
}
|
||||||
virtual void onGetRTP(const RtpPacket::Ptr &rtppt, bool keyPos) {
|
|
||||||
|
void onWrite(const RtpPacket::Ptr &rtppt, bool keyPos) override {
|
||||||
auto &trackRef = _mapTracks[rtppt->type];
|
auto &trackRef = _mapTracks[rtppt->type];
|
||||||
trackRef.seq = rtppt->sequence;
|
trackRef.seq = rtppt->sequence;
|
||||||
trackRef.timeStamp = rtppt->timeStamp;
|
trackRef.timeStamp = rtppt->timeStamp;
|
||||||
@ -93,11 +94,6 @@ public:
|
|||||||
trackRef.type = rtppt->type;
|
trackRef.type = rtppt->type;
|
||||||
_pRing->write(rtppt,keyPos);
|
_pRing->write(rtppt,keyPos);
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
|
||||||
void onWrite(const RtpPacket::Ptr &rtppt, bool keyPos) override {
|
|
||||||
onGetRTP(rtppt,keyPos);
|
|
||||||
}
|
|
||||||
protected:
|
protected:
|
||||||
unordered_map<int, RtspTrack> _mapTracks;
|
unordered_map<int, RtspTrack> _mapTracks;
|
||||||
string _strSdp; //媒体描述信息
|
string _strSdp; //媒体描述信息
|
||||||
|
@ -84,7 +84,7 @@ private:
|
|||||||
}
|
}
|
||||||
|
|
||||||
if(_pRtspMediaSrc){
|
if(_pRtspMediaSrc){
|
||||||
_pRtspMediaSrc->onGetRTP(rtppt,true);
|
_pRtspMediaSrc->onWrite(rtppt,true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -86,7 +86,7 @@ void RtspToRtmpMediaSource::makeVideoConfigPkt() {
|
|||||||
rtmpPkt->streamId = STREAM_MEDIA;
|
rtmpPkt->streamId = STREAM_MEDIA;
|
||||||
rtmpPkt->timeStamp = 0;
|
rtmpPkt->timeStamp = 0;
|
||||||
rtmpPkt->typeId = MSG_VIDEO;
|
rtmpPkt->typeId = MSG_VIDEO;
|
||||||
_pRtmpSrc->onGetMedia(rtmpPkt);
|
_pRtmpSrc->onWrite(rtmpPkt);
|
||||||
}
|
}
|
||||||
void RtspToRtmpMediaSource::onGetH264(const H264Frame& frame) {
|
void RtspToRtmpMediaSource::onGetH264(const H264Frame& frame) {
|
||||||
if(_pRecorder){
|
if(_pRecorder){
|
||||||
@ -120,7 +120,7 @@ void RtspToRtmpMediaSource::onGetH264(const H264Frame& frame) {
|
|||||||
rtmpPkt->streamId = STREAM_MEDIA;
|
rtmpPkt->streamId = STREAM_MEDIA;
|
||||||
rtmpPkt->timeStamp = frame.timeStamp;
|
rtmpPkt->timeStamp = frame.timeStamp;
|
||||||
rtmpPkt->typeId = MSG_VIDEO;
|
rtmpPkt->typeId = MSG_VIDEO;
|
||||||
_pRtmpSrc->onGetMedia(rtmpPkt);
|
_pRtmpSrc->onWrite(rtmpPkt);
|
||||||
}
|
}
|
||||||
void RtspToRtmpMediaSource::onGetAAC(const AACFrame& frame) {
|
void RtspToRtmpMediaSource::onGetAAC(const AACFrame& frame) {
|
||||||
if(_pRecorder){
|
if(_pRecorder){
|
||||||
@ -139,7 +139,7 @@ void RtspToRtmpMediaSource::onGetAAC(const AACFrame& frame) {
|
|||||||
rtmpPkt->streamId = STREAM_MEDIA;
|
rtmpPkt->streamId = STREAM_MEDIA;
|
||||||
rtmpPkt->timeStamp = frame.timeStamp;
|
rtmpPkt->timeStamp = frame.timeStamp;
|
||||||
rtmpPkt->typeId = MSG_AUDIO;
|
rtmpPkt->typeId = MSG_AUDIO;
|
||||||
_pRtmpSrc->onGetMedia(rtmpPkt);
|
_pRtmpSrc->onWrite(rtmpPkt);
|
||||||
}
|
}
|
||||||
|
|
||||||
void RtspToRtmpMediaSource::makeAudioConfigPkt() {
|
void RtspToRtmpMediaSource::makeAudioConfigPkt() {
|
||||||
@ -181,7 +181,7 @@ void RtspToRtmpMediaSource::makeAudioConfigPkt() {
|
|||||||
rtmpPkt->streamId = STREAM_MEDIA;
|
rtmpPkt->streamId = STREAM_MEDIA;
|
||||||
rtmpPkt->timeStamp = 0;
|
rtmpPkt->timeStamp = 0;
|
||||||
rtmpPkt->typeId = MSG_AUDIO;
|
rtmpPkt->typeId = MSG_AUDIO;
|
||||||
_pRtmpSrc->onGetMedia(rtmpPkt);
|
_pRtmpSrc->onWrite(rtmpPkt);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
@ -61,11 +61,11 @@ public:
|
|||||||
}
|
}
|
||||||
RtspMediaSource::onGetSDP(strSdp);
|
RtspMediaSource::onGetSDP(strSdp);
|
||||||
}
|
}
|
||||||
virtual void onGetRTP(const RtpPacket::Ptr &pRtppkt, bool bKeyPos) override{
|
virtual void onWrite(const RtpPacket::Ptr &pRtppkt, bool bKeyPos) override{
|
||||||
if (_pParser) {
|
if (_pParser) {
|
||||||
bKeyPos = _pParser->inputRtp(pRtppkt);
|
bKeyPos = _pParser->inputRtp(pRtppkt);
|
||||||
}
|
}
|
||||||
RtspMediaSource::onGetRTP(pRtppkt, bKeyPos);
|
RtspMediaSource::onWrite(pRtppkt, bKeyPos);
|
||||||
}
|
}
|
||||||
|
|
||||||
int readerCount(){
|
int readerCount(){
|
||||||
|
Loading…
Reference in New Issue
Block a user