MediaSourceRtsp.h 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. #pragma once
  2. #include <string>
  3. #include <memory>
  4. extern "C"
  5. {
  6. #include "libavformat/avformat.h"
  7. #include "libavcodec/avcodec.h"
  8. #include "libavdevice/avdevice.h"
  9. #include "libavutil/imgutils.h"
  10. #include "libswscale/swscale.h"
  11. #include "libavutil/timestamp.h"
  12. #include "libavutil/rational.h"
  13. #include "libavutil/time.h"
  14. }
  15. class CMediaSourceRtsp {
  16. public:
  17. CMediaSourceRtsp();
  18. ~CMediaSourceRtsp();
  19. std::string m_Input_rtsp;
  20. std::string m_Output_rtsp;
  21. std::string m_TcpOrudp;
  22. int m_nVideoStream;
  23. bool m_nWriteflag;
  24. int64_t m_timeout;//打开输出文件阻塞的超时时间,单位为秒,av_gettime获取的单位是微妙
  25. int m_NetCount;
  26. int64_t m_nStartTime;//微妙
  27. AVFormatContext* outputContext;
  28. AVFormatContext* inputContext;
  29. void CheckOutputNet();
  30. void ResetConnect();
  31. void ActionOpenInput();
  32. void ActionOpenOutput();
  33. bool OpenInput(std::string inputUrl, std::string transport);
  34. bool OpenOutput(std::string outUrl);
  35. static int InterruptCb(void* ctx);
  36. void CloseOutput();
  37. void CloseInput();
  38. std::shared_ptr<AVPacket> ReadPacket();
  39. int WritePacket(std::shared_ptr<AVPacket> packet);
  40. };