代码拉取完成,页面将自动刷新
#ifndef RTSPCAMERA_H
#define RTSPCAMERA_H
#include <atomic>
#include <iostream>
#include <chrono>
#include <vector>
#include <thread>
#include <mutex>
#include <opencv2/opencv.hpp>
extern "C" {
#include <libavcodec/avcodec.h>
#include <libavformat/avformat.h>
#include <libavutil/dict.h>
#include <libavutil/imgutils.h>
#include <libavutil/samplefmt.h>
#include <libavutil/timestamp.h>
#include <libswscale/swscale.h>
}
class RtspCamera {
public:
RtspCamera(const std::string& rtspUrl);
~RtspCamera();
bool initFFmpeg();
bool startCapture();
void stopCapture();
cv::Mat getLatestFrame();
private:
void captureLoop();
int ConverFrameToRgb(AVFrame *input_frame, AVFrame *output_frame, AVPixelFormat inputFormate);
private:
std::string m_rtspUrl;
AVFormatContext* m_pFormatCtx;
AVCodecContext* m_pCodecCtx;
AVFrame* m_pFrame;
AVFrame* m_pFrameRGB;
uint8_t* m_buffer;
int m_videoIndex;
AVDictionary* m_options;
std::thread m_captureThread;
std::mutex m_frameMutex;
cv::Mat m_latestFrame;
std::atomic<bool> m_isCapturing;
std::atomic<bool> m_isRequest;
int m_cameraIndex;
static int cameraSeq;
static std::mutex seqMux;
};
#endif // RTSPCAMERA_H
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。