#pragma once #include #include extern "C" { #include "libavformat/avformat.h" #include "libavcodec/avcodec.h" #include "libavdevice/avdevice.h" #include "libavutil/imgutils.h" #include "libswscale/swscale.h" #include "libavutil/timestamp.h" #include "libavutil/rational.h" #include "libavutil/time.h" } class CMediaSourceRtsp { public: CMediaSourceRtsp(); ~CMediaSourceRtsp(); std::string m_Input_rtsp; std::string m_Output_rtsp; std::string m_TcpOrudp; int m_nVideoStream; bool m_nWriteflag; int64_t m_timeout;//打开输出文件阻塞的超时时间,单位为秒,av_gettime获取的单位是微妙 int m_NetCount; int64_t m_nStartTime;//微妙 AVFormatContext* outputContext; AVFormatContext* inputContext; void CheckOutputNet(); void ResetConnect(); void ActionOpenInput(); void ActionOpenOutput(); bool OpenInput(std::string inputUrl, std::string transport); bool OpenOutput(std::string outUrl); static int InterruptCb(void* ctx); void CloseOutput(); void CloseInput(); std::shared_ptr ReadPacket(); int WritePacket(std::shared_ptr packet); };