整理代码
This commit is contained in:
commit
c7b4e178ec
364 changed files with 59691 additions and 0 deletions
97
video/mediaserver/RTMPDemuxHandler.h
Normal file
97
video/mediaserver/RTMPDemuxHandler.h
Normal file
|
|
@ -0,0 +1,97 @@
|
|||
#ifndef E3F40CBC_D6F1_4B8F_B90E_6765659CF90F
|
||||
#define E3F40CBC_D6F1_4B8F_B90E_6765659CF90F
|
||||
/*
|
||||
*******************************************************************************
|
||||
* INCLUDE
|
||||
*******************************************************************************
|
||||
*/
|
||||
#include "../core/Demuxer.h"
|
||||
extern "C"
|
||||
{
|
||||
#include <media-server/librtmp/rtmp-client.h>
|
||||
#include <media-server/libflv/flv-demuxer.h>
|
||||
#include <media-server/libflv/flv-proto.h>
|
||||
#include <media-server/libflv/opus-head.h>
|
||||
#include <media-server/libflv/mpeg4-aac.h>
|
||||
#include <media-server/libflv/amf0.h>
|
||||
#include <media-server/libflv/mpeg4-avc.h>
|
||||
#include <media-server/libflv/mpeg4-hevc.h>
|
||||
#include <avcodec/h264/bitstream.h>
|
||||
#include <avcodec/h264/h264-nal.h>
|
||||
#include <avcodec/h264/h264-sps.h>
|
||||
#include <avcodec/h264/h264-pps.h>
|
||||
#include <avcodec/h264/h264-util.h>
|
||||
#include <avcodec/h264/h264-internal.h>
|
||||
#include <avcodec/h265/h265-parser.h>
|
||||
#include <sdk/include/sockutil.h>
|
||||
}
|
||||
|
||||
namespace Video
|
||||
{
|
||||
namespace MediaServer
|
||||
{
|
||||
/*
|
||||
*******************************************************************************
|
||||
* CLASS DECLARE
|
||||
*******************************************************************************
|
||||
*/
|
||||
class RTMPDemuxHandler: public Core::DemuxHandler
|
||||
{
|
||||
public:
|
||||
RTMPDemuxHandler(const std::string& url);
|
||||
~RTMPDemuxHandler();
|
||||
|
||||
public:
|
||||
void run(Core::VideoEncoder::Ptr pVideoEncoder, Core::AudioEncoder::Ptr pAudioEncoder, const Post& post,
|
||||
std::atomic<bool>& isCancelled) override;
|
||||
|
||||
protected:
|
||||
int parseFLVMetaData(const uint8_t* pData, size_t length);
|
||||
int processH264Data(const void* data, size_t bytes, uint32_t pts, uint32_t dts, int flags);
|
||||
int processH265Data(const void* data, size_t bytes, uint32_t pts, uint32_t dts, int flags);
|
||||
int processASCData(const void* data, size_t bytes, uint32_t pts, uint32_t dts, int flags);
|
||||
int processAACData(const void* data, size_t bytes, uint32_t pts, uint32_t dts, int flags);
|
||||
int processOpusHeadData(const void* data, size_t bytes, uint32_t pts, uint32_t dts, int flags);
|
||||
int processOpusData(const void* data, size_t bytes, uint32_t pts, uint32_t dts, int flags);
|
||||
int processG711AData(const void* data, size_t bytes, uint32_t pts, uint32_t dts, int flags);
|
||||
int processG711UData(const void* data, size_t bytes, uint32_t pts, uint32_t dts, int flags);
|
||||
|
||||
void enqueueVideoPacket(const void* data, size_t bytes, uint32_t pts, uint32_t dts, int flags);
|
||||
void enqueueAudioPacket(const void* data, size_t bytes, uint32_t pts, uint32_t dts, int flags);
|
||||
|
||||
inline const uint8_t* annexBStartcode(const uint8_t* data, size_t bytes);
|
||||
bool isH264BFrame(const void* h264, size_t bytes);
|
||||
void adjustTimestamp(uint64_t& pts, uint64_t& dts);
|
||||
void updateTimeline(uint64_t ts);
|
||||
void seek(uint64_t) override;
|
||||
|
||||
private:
|
||||
socket_t _socket;
|
||||
rtmp_client_t* _pCient;
|
||||
flv_demuxer_t* _pDemuxer;
|
||||
bool _audioInfoParsed;
|
||||
bool _videoInfoParsed;
|
||||
uint32_t _iFrameLength;
|
||||
Core::VideoEncoder::Ptr _pVideoEncoder;
|
||||
Core::AudioEncoder::Ptr _pAudioEncoder;
|
||||
Post _post;
|
||||
union
|
||||
{
|
||||
struct mpeg4_avc_t avc;
|
||||
struct mpeg4_hevc_t hevc;
|
||||
} _v;
|
||||
|
||||
protected:
|
||||
static int clientSend(void* param, const void* header, size_t len, const void* data, size_t bytes);
|
||||
static int clientOnAudio(void* param, const void* data, size_t bytes, uint32_t timestamp);
|
||||
static int clientOnVideo(void* param, const void* data, size_t bytes, uint32_t timestamp);
|
||||
static int clientOnScript(void* param, const void* data, size_t bytes, uint32_t timestamp);
|
||||
|
||||
static int flvDemuxerHandler(void* param, int codec, const void* data, size_t bytes, uint32_t pts, uint32_t dts,
|
||||
int flags);
|
||||
static void h264NALhandler(void* param, const uint8_t* nalu, size_t bytes);
|
||||
static void h265NALhandler(void* param, const uint8_t* nalu, size_t bytes);
|
||||
};
|
||||
}
|
||||
}
|
||||
#endif
|
||||
Loading…
Add table
Add a link
Reference in a new issue