Browse Source

V0.6
1、Linux也可以编译完成了

Apple 2 weeks ago
parent
commit
3cc72ecd60

+ 15 - 7
CPlayer/Player/PlayerGLWidget.cpp

@@ -1,17 +1,16 @@
 #include "PlayerGLWidget.h"
 #include <QOpenGLFunctions> // 添加此行
-#include <QApplication>
 
 #include "LHQLogAPI.h"
 
 PlayerGLWidget::PlayerGLWidget(QWidget *parent) : QOpenGLWidget(parent)
 {
-    QString imagePath = QApplication::applicationDirPath() + "/0.jpg";
-    QImage image(imagePath);
-    Image_YUV420 yuv420;
-    convertQImageToYUV420(image, yuv420);
-    /* 显示图片  */
-    updateFrame(yuv420);
+    // QString imagePath = QApplication::applicationDirPath() + "/0.jpg";
+    // QImage image(imagePath);
+    // Image_YUV420 yuv420;
+    // convertQImageToYUV420(image, yuv420);
+    // /* 显示图片  */
+    // updateFrame(yuv420);
 }
 
 PlayerGLWidget::~PlayerGLWidget()
@@ -19,6 +18,15 @@ PlayerGLWidget::~PlayerGLWidget()
 
 }
 
+/* 设置一张图片,用于显示默认的图片 */
+void PlayerGLWidget::setImage(const QImage& image)
+{
+    Image_YUV420 yuv420;
+    convertQImageToYUV420(image, yuv420);
+    /* 显示图片  */
+    updateFrame(yuv420);
+}
+
 /* 刷新一帧 */
 void PlayerGLWidget::updateFrame(Image_YUV420& image)
 {

+ 4 - 1
CPlayer/Player/PlayerGLWidget.h

@@ -3,7 +3,7 @@
 
 
 #include <QOpenGLWidget>
-#include <QOpenGLFunctions> // 添加此行
+// #include <QOpenGLFunctions> // 添加此行
 #include <QOpenGLFunctions_3_3_Core> // 添加此行
 #include <QOpenGLTexture>
 #include "PlayerGlobalInfo.h"
@@ -21,6 +21,9 @@ public:
     explicit PlayerGLWidget(QWidget *parent = nullptr);
     ~PlayerGLWidget();
 
+    /* 设置一张图片,用于显示默认的图片 */
+    void setImage(const QImage& image);
+
     /* 刷新一帧 */
     void updateFrame(Image_YUV420& image);
     /* 刷新一帧QImage */

+ 11 - 4
CPlayer/cameraplayer.cpp

@@ -15,11 +15,10 @@ CameraPlayer::CameraPlayer(QObject *parent) : QObject(parent)
     m_imageQueue.setQueueCapacity(10);
     m_imageQueue.setDefaultValue(nullptr);
 
-#if(USING_YUV420 == true)
     m_player = new PlayerGLWidget();
-#else
-    m_player = new PlayerWidget();
-#endif
+
+    // m_player = new PlayerWidget();
+
     /* 连接信号和槽 */
     connect(&m_frameTimer, &QTimer::timeout, this, &CameraPlayer::do_updateFrame);
 }
@@ -31,6 +30,12 @@ CameraPlayer::~CameraPlayer()
     NET_DVR_Logout(m_loginID);
     /* 释放SDK资源,重复清除资源会怎么样 */
     NET_DVR_Cleanup();
+
+    if(m_transCode != nullptr)
+    {
+        delete m_transCode;
+        m_transCode == nullptr;
+    }
 }
 
 /* 设置摄像机信息 */
@@ -386,8 +391,10 @@ void CameraPlayer::DecCallBack(int nPort, char * pBuf, int nSize,FRAME_INFO * pF
         {
             player->m_frameRate = frameRate;
         }
+        
         int width = pFrameInfo->nWidth;
         int height = pFrameInfo->nHeight;
+        player->m_imageSize = QSize(width, height);
 
         // LH_WRITE_LOG_DEBUG(QString("视频宽高: %1 x %2, 视频帧率: %3, 当前队列数目: %4").arg(width).arg(height).arg(frameRate).arg(player->m_imageQueue.QueueSize()));
 

+ 7 - 1
CPlayer/cameraplayer.h

@@ -11,7 +11,7 @@
 #include "PlayerGLWidget.h"
 #include "PlayerWidget.h"
 
-#define USING_YUV420 1
+
 
 class TransCode;
 
@@ -54,6 +54,11 @@ public:
     /* 获取播放窗口指针 */
     QWidget* getPlayWnd() { return m_player; }
 
+    /* 设置一张默认的图片 */
+    void setImage(const QImage& image) { m_player->setImage(image); }
+    /* 获取视频分辨率 */
+    QSize getImageSize() { return m_imageSize; }
+
 private slots:
     /* 更新一帧数据 */
     void do_updateFrame();
@@ -82,6 +87,7 @@ private:
 
     LONG m_playPort = -1;                               /* 全局的播放库port号 */
     int m_frameRate = 0;                                /* 帧率 */
+    QSize m_imageSize;                                  /* 图片大小 */
     QTimer m_frameTimer;                                /* 定时器,用于更新一帧数据 */
 
     RingQueue<Image_YUV420*> m_imageQueue;              /* 环形队列,存放YUV数据 */

+ 5 - 0
show1/widget.cpp

@@ -2,6 +2,7 @@
 #include "ui_widget.h"
 
 #include <QResizeEvent>
+#include <QApplication>
 
 #include "cameraplayer.h"
 
@@ -16,6 +17,10 @@ widget::widget(QWidget *parent) :
     /* 创建摄像机播放器 */
     m_cameraPlayer = new CameraPlayer;
 
+    QString imagePath = QApplication::applicationDirPath() + "/0.jpg";
+    QImage image(imagePath);
+    m_cameraPlayer->setImage(image);
+
     m_cameraPlayer->initCamera("192.1.2.73", 8000, "admin", "LH123456");
     m_cameraPlayer->startRealPlay(1);
 

+ 17 - 0
使用说明.txt

@@ -0,0 +1,17 @@
+
+使用说明:
+    1、直接创建CameraPlayer实例
+    2、调用initCamera()函数初始化摄像机信息
+    3、使用getCameraInfo()获取摄像机通道号
+    4、使用startRealPlay()传入通道号开始接收摄像机的数据
+    5、startPlay()开始播放视频
+
+链接的动态库
+    1、Linux:
+        HCCore、hcnetsdk、libssl.so.1.1、libcrypto.so.1.1、AudioRender
+        PlayCtrl、SuperRender
+        还要链接OpenGL库“GL”
+    2、Windows
+        Windows使用MSVC编译器
+        HCCore.lib、HCNetSDK.lib、PlayCtrl.lib
+        链接OpenGL动态库:opengl32.lib