diff --git a/src/Common/Device.cpp b/src/Common/Device.cpp index 2891683a..4e45ef07 100644 --- a/src/Common/Device.cpp +++ b/src/Common/Device.cpp @@ -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; diff --git a/src/Common/MediaSink.h b/src/Common/MediaSink.h index 683ca865..7dc9fff0 100644 --- a/src/Common/MediaSink.h +++ b/src/Common/MediaSink.h @@ -103,20 +103,6 @@ private: }; - - - - - - - - - - - - - - }//namespace mediakit #endif //ZLMEDIAKIT_MEDIASINK_H diff --git a/src/Extension/Factory.h b/src/Extension/Factory.h index 578c9efd..a69e83be 100644 --- a/src/Extension/Factory.h +++ b/src/Extension/Factory.h @@ -101,24 +101,6 @@ public: static AMFValue getAmfByCodecId(CodecId codecId); }; - - - - - - - - - - - - - - - - - - }//namespace mediakit #endif //ZLMEDIAKIT_FACTORY_H diff --git a/src/Extension/Frame.h b/src/Extension/Frame.h index acae063d..7995be3c 100644 --- a/src/Extension/Frame.h +++ b/src/Extension/Frame.h @@ -304,9 +304,6 @@ public: }; - - - }//namespace mediakit #endif //ZLMEDIAKIT_FRAME_H diff --git a/src/Extension/H264.h b/src/Extension/H264.h index 67962787..eebfec63 100644 --- a/src/Extension/H264.h +++ b/src/Extension/H264.h @@ -405,8 +405,6 @@ private: }; - - }//namespace mediakit diff --git a/src/MediaFile/MediaReader.cpp b/src/MediaFile/MediaReader.cpp index ebbfb9f6..8cdd3fae 100644 --- a/src/MediaFile/MediaReader.cpp +++ b/src/MediaFile/MediaReader.cpp @@ -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 { diff --git a/src/MediaFile/MediaReader.h b/src/MediaFile/MediaReader.h index cb9d398e..2092d9fe 100644 --- a/src/MediaFile/MediaReader.h +++ b/src/MediaFile/MediaReader.h @@ -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 diff --git a/src/Player/PlayerProxy.cpp b/src/Player/PlayerProxy.cpp index eca5c9ab..b7656272 100644 --- a/src/Player/PlayerProxy.cpp +++ b/src/Player/PlayerProxy.cpp @@ -29,6 +29,7 @@ #include "Util/mini.h" #include "Util/MD5.h" #include "Util/logger.h" +#include "Extension/AAC.h" using namespace toolkit; diff --git a/src/RtmpMuxer/RtmpMetedata.cpp b/src/Rtmp/Rtmp.cpp similarity index 51% rename from src/RtmpMuxer/RtmpMetedata.cpp rename to src/Rtmp/Rtmp.cpp index a0936e68..f0073589 100644 --- a/src/RtmpMuxer/RtmpMetedata.cpp +++ b/src/Rtmp/Rtmp.cpp @@ -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 \ No newline at end of file diff --git a/src/Rtmp/Rtmp.h b/src/Rtmp/Rtmp.h index d38adae6..70c0baf8 100644 --- a/src/Rtmp/Rtmp.h +++ b/src/Rtmp/Rtmp.h @@ -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 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 Ptr; + + TitleMete(float dur_sec = 0, + uint64_t fileSize = 0, + const map &header = map()){ + _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 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 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 diff --git a/src/RtmpMuxer/RtmpCodec.cpp b/src/RtmpMuxer/RtmpCodec.cpp deleted file mode 100644 index 8e0e3fc7..00000000 --- a/src/RtmpMuxer/RtmpCodec.cpp +++ /dev/null @@ -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{ - -} \ No newline at end of file diff --git a/src/RtmpMuxer/RtmpDemuxer.h b/src/RtmpMuxer/RtmpDemuxer.h index f4b9721c..47045a08 100644 --- a/src/RtmpMuxer/RtmpDemuxer.h +++ b/src/RtmpMuxer/RtmpDemuxer.h @@ -81,20 +81,4 @@ private: } /* namespace mediakit */ - - - - - - - - - - - - - - - - #endif /* SRC_RTMP_RTMPDEMUXER_H_ */ diff --git a/src/RtmpMuxer/RtmpMediaSourceMuxer.h b/src/RtmpMuxer/RtmpMediaSourceMuxer.h index c9855d7f..d9b712b4 100644 --- a/src/RtmpMuxer/RtmpMediaSourceMuxer.h +++ b/src/RtmpMuxer/RtmpMediaSourceMuxer.h @@ -60,10 +60,5 @@ private: }; - - - - - }//namespace mediakit #endif //ZLMEDIAKIT_RTMPMEDIASOURCEMUXER_H diff --git a/src/RtmpMuxer/RtmpMetedata.h b/src/RtmpMuxer/RtmpMetedata.h deleted file mode 100644 index 58a1ac98..00000000 --- a/src/RtmpMuxer/RtmpMetedata.h +++ /dev/null @@ -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 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 Ptr; - - TitleMete(float dur_sec = 0, - uint64_t fileSize = 0, - const map &header = map()){ - _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 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 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 diff --git a/src/RtmpMuxer/RtmpMuxer.cpp b/src/RtmpMuxer/RtmpMuxer.cpp index 526c5987..f2b391c5 100644 --- a/src/RtmpMuxer/RtmpMuxer.cpp +++ b/src/RtmpMuxer/RtmpMuxer.cpp @@ -25,6 +25,7 @@ */ #include "RtmpMuxer.h" +#include "Extension/Factory.h" namespace mediakit { diff --git a/src/RtmpMuxer/RtmpMuxer.h b/src/RtmpMuxer/RtmpMuxer.h index 04028cbc..3315a1f3 100644 --- a/src/RtmpMuxer/RtmpMuxer.h +++ b/src/RtmpMuxer/RtmpMuxer.h @@ -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