整理优化代码

This commit is contained in:
xiongziliang 2019-06-28 17:25:53 +08:00
parent 27ce8a9915
commit ea131d9740
16 changed files with 155 additions and 329 deletions

View File

@ -30,6 +30,8 @@
#include "Util/util.h"
#include "Util/base64.h"
#include "Util/TimeTicker.h"
#include "Extension/AAC.h"
#include "Extension/H264.h"
using namespace toolkit;

View File

@ -103,20 +103,6 @@ private:
};
}//namespace mediakit
#endif //ZLMEDIAKIT_MEDIASINK_H

View File

@ -101,24 +101,6 @@ public:
static AMFValue getAmfByCodecId(CodecId codecId);
};
}//namespace mediakit
#endif //ZLMEDIAKIT_FACTORY_H

View File

@ -304,9 +304,6 @@ public:
};
}//namespace mediakit
#endif //ZLMEDIAKIT_FRAME_H

View File

@ -405,8 +405,6 @@ private:
};
}//namespace mediakit

View File

@ -28,6 +28,9 @@
#include "Common/config.h"
#include "Util/mini.h"
#include "Http/HttpSession.h"
#include "Extension/AAC.h"
#include "Extension/H264.h"
using namespace toolkit;
namespace mediakit {

View File

@ -27,9 +27,8 @@
#ifndef SRC_MEDIAFILE_MEDIAREADER_H_
#define SRC_MEDIAFILE_MEDIAREADER_H_
#include "Common/Device.h"
#include "Rtsp/RtspMediaSource.h"
#include "Rtmp/RtmpMediaSource.h"
#include "Common/MultiMediaSourceMuxer.h"
#include "Extension/AAC.h"
#ifdef ENABLE_MP4V2
#include <mp4v2/mp4v2.h>

View File

@ -29,6 +29,7 @@
#include "Util/mini.h"
#include "Util/MD5.h"
#include "Util/logger.h"
#include "Extension/AAC.h"
using namespace toolkit;

View File

@ -23,8 +23,39 @@
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*/
#include "Rtmp.h"
#include "Extension/Factory.h"
namespace mediakit{
#include "RtmpMetedata.h"
namespace mediakit {
VideoMete::VideoMete(const VideoTrack::Ptr &video,int datarate ){
if(video->getVideoWidth() > 0 ){
_metedata.set("width", video->getVideoWidth());
}
if(video->getVideoHeight() > 0 ){
_metedata.set("height", video->getVideoHeight());
}
if(video->getVideoFps() > 0 ){
_metedata.set("framerate", video->getVideoFps());
}
_metedata.set("videodatarate", datarate);
_codecId = video->getCodecId();
_metedata.set("videocodecid", Factory::getAmfByCodecId(_codecId));
}
AudioMete::AudioMete(const AudioTrack::Ptr &audio,int datarate){
_metedata.set("audiodatarate", datarate);
if(audio->getAudioSampleRate() > 0){
_metedata.set("audiosamplerate", audio->getAudioSampleRate());
}
if(audio->getAudioSampleBit() > 0){
_metedata.set("audiosamplesize", audio->getAudioSampleBit());
}
if(audio->getAudioChannel() > 0){
_metedata.set("audiochannels", audio->getAudioChannel());
_metedata.set("stereo", audio->getAudioChannel() > 1);
}
_codecId = audio->getCodecId();
_metedata.set("audiocodecid", Factory::getAmfByCodecId(_codecId));
}
}//namespace mediakit

View File

@ -33,6 +33,9 @@
#include "Util/logger.h"
#include "Network/Buffer.h"
#include "Network/sockutil.h"
#include "amf.h"
#include "Extension/Track.h"
using namespace toolkit;
#define PORT 1935
@ -292,6 +295,114 @@ public:
}
};
/**
* rtmp metedata基类rtmp格式信息
*/
class Metedata : public CodecInfo{
public:
typedef std::shared_ptr<Metedata> Ptr;
Metedata():_metedata(AMF_OBJECT){}
virtual ~Metedata(){}
const AMFValue &getMetedata() const{
return _metedata;
}
protected:
AMFValue _metedata;
};
/**
* metedata中除音视频外的其他描述部分
*/
class TitleMete : public Metedata{
public:
typedef std::shared_ptr<TitleMete> Ptr;
TitleMete(float dur_sec = 0,
uint64_t fileSize = 0,
const map<string,string> &header = map<string,string>()){
_metedata.set("duration", dur_sec);
_metedata.set("fileSize", 0);
_metedata.set("server","ZLMediaKit");
for (auto &pr : header){
_metedata.set(pr.first, pr.second);
}
}
/**
*
* @return
*/
TrackType getTrackType() const override {
return TrackTitle;
}
/**
* id
* @return
*/
CodecId getCodecId() const override{
return CodecInvalid;
}
};
class VideoMete : public Metedata{
public:
typedef std::shared_ptr<VideoMete> Ptr;
VideoMete(const VideoTrack::Ptr &video,int datarate = 5000);
virtual ~VideoMete(){}
/**
*
* @return
*/
TrackType getTrackType() const override {
return TrackVideo;
}
/**
* id
* @return
*/
CodecId getCodecId() const override{
return _codecId;
}
private:
CodecId _codecId;
};
class AudioMete : public Metedata{
public:
typedef std::shared_ptr<AudioMete> Ptr;
AudioMete(const AudioTrack::Ptr &audio,int datarate = 160);
virtual ~AudioMete(){}
/**
*
* @return
*/
TrackType getTrackType() const override {
return TrackAudio;
}
/**
* id
* @return
*/
CodecId getCodecId() const override{
return _codecId;
}
private:
CodecId _codecId;
};
}//namespace mediakit

View File

@ -1,30 +0,0 @@
/*
* MIT License
*
* Copyright (c) 2016-2019 xiongziliang <771730766@qq.com>
*
* This file is part of ZLMediaKit(https://github.com/xiongziliang/ZLMediaKit).
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*/
#include "RtmpCodec.h"
namespace mediakit{
}

View File

@ -81,20 +81,4 @@ private:
} /* namespace mediakit */
#endif /* SRC_RTMP_RTMPDEMUXER_H_ */

View File

@ -60,10 +60,5 @@ private:
};
}//namespace mediakit
#endif //ZLMEDIAKIT_RTMPMEDIASOURCEMUXER_H

View File

@ -1,203 +0,0 @@
/*
* MIT License
*
* Copyright (c) 2016-2019 xiongziliang <771730766@qq.com>
*
* This file is part of ZLMediaKit(https://github.com/xiongziliang/ZLMediaKit).
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*/
#ifndef ZLMEDIAKIT_RTMPMETEDATA_H
#define ZLMEDIAKIT_RTMPMETEDATA_H
#include "RtmpMuxer/H264RtmpCodec.h"
#include "RtmpMuxer/AACRtmpCodec.h"
#include "Util/base64.h"
#include "Extension/Track.h"
#include "Rtmp/amf.h"
#include "Extension/Factory.h"
namespace mediakit {
/**
* rtmp metedata基类rtmp格式信息
*/
class Metedata : public CodecInfo{
public:
typedef std::shared_ptr<Metedata> Ptr;
Metedata():_metedata(AMF_OBJECT){}
virtual ~Metedata(){}
const AMFValue &getMetedata() const{
return _metedata;
}
protected:
AMFValue _metedata;
};
/**
* metedata中除音视频外的其他描述部分
*/
class TitleMete : public Metedata{
public:
typedef std::shared_ptr<TitleMete> Ptr;
TitleMete(float dur_sec = 0,
uint64_t fileSize = 0,
const map<string,string> &header = map<string,string>()){
_metedata.set("duration", dur_sec);
_metedata.set("fileSize", 0);
_metedata.set("server","ZLMediaKit");
for (auto &pr : header){
_metedata.set(pr.first, pr.second);
}
}
/**
*
* @return
*/
TrackType getTrackType() const override {
return TrackTitle;
}
/**
* id
* @return
*/
CodecId getCodecId() const override{
return CodecInvalid;
}
};
class VideoMete : public Metedata{
public:
typedef std::shared_ptr<VideoMete> Ptr;
VideoMete(const VideoTrack::Ptr &video,int datarate = 5000){
if(video->getVideoWidth() > 0 ){
_metedata.set("width", video->getVideoWidth());
}
if(video->getVideoHeight() > 0 ){
_metedata.set("height", video->getVideoHeight());
}
if(video->getVideoFps() > 0 ){
_metedata.set("framerate", video->getVideoFps());
}
_metedata.set("videodatarate", datarate);
_codecId = video->getCodecId();
_metedata.set("videocodecid", Factory::getAmfByCodecId(_codecId));
}
virtual ~VideoMete(){}
/**
*
* @return
*/
TrackType getTrackType() const override {
return TrackVideo;
}
/**
* id
* @return
*/
CodecId getCodecId() const override{
return _codecId;
}
private:
CodecId _codecId;
};
class AudioMete : public Metedata{
public:
typedef std::shared_ptr<AudioMete> Ptr;
AudioMete(const AudioTrack::Ptr &audio,int datarate = 160){
_metedata.set("audiodatarate", datarate);
if(audio->getAudioSampleRate() > 0){
_metedata.set("audiosamplerate", audio->getAudioSampleRate());
}
if(audio->getAudioSampleBit() > 0){
_metedata.set("audiosamplesize", audio->getAudioSampleBit());
}
if(audio->getAudioChannel() > 0){
_metedata.set("audiochannels", audio->getAudioChannel());
_metedata.set("stereo", audio->getAudioChannel() > 1);
}
_codecId = audio->getCodecId();
_metedata.set("audiocodecid", Factory::getAmfByCodecId(_codecId));
}
virtual ~AudioMete(){}
/**
*
* @return
*/
TrackType getTrackType() const override {
return TrackAudio;
}
/**
* id
* @return
*/
CodecId getCodecId() const override{
return _codecId;
}
private:
CodecId _codecId;
};
}//namespace mediakit
#endif //ZLMEDIAKIT_RTMPMETEDATA_H

View File

@ -25,6 +25,7 @@
*/
#include "RtmpMuxer.h"
#include "Extension/Factory.h"
namespace mediakit {

View File

@ -27,9 +27,10 @@
#ifndef ZLMEDIAKIT_RTMPMUXER_H
#define ZLMEDIAKIT_RTMPMUXER_H
#include "RtmpMetedata.h"
#include "Rtmp/Rtmp.h"
#include "Extension/Frame.h"
#include "Common/MediaSink.h"
#include "RtmpCodec.h"
namespace mediakit{
@ -67,38 +68,6 @@ private:
};
} /* namespace mediakit */
#endif //ZLMEDIAKIT_RTMPMUXER_H