Explorar el Código

修复本地视频文件刚开始播放不出图的问题

huihui hace 4 meses
padre
commit
350503558a

+ 16 - 5
.vscode/launch.json

@@ -4,6 +4,17 @@
     // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
     "version": "0.2.0",
     "configurations": [
+        { 
+            "name": "VideoPlayer(Debug_x86)",
+            "type": "cppvsdbg",
+            "request": "launch",
+            "program": "${workspaceRoot}/bin/win32/Debug/VideoPlayer.exe",
+            "args": [],
+            "stopAtEntry": false,
+            "cwd": "${workspaceRoot}/bin/win32/",
+            "environment": [{"name":"PATH","value":"C:/Qt/Qt5.13.2/5.13.2/msvc2017/bin"}],
+            "console": "externalTerminal"
+        },
         { 
             "name": "VideoPlayer(Debug_x64)",
             "type": "cppvsdbg",
@@ -16,14 +27,14 @@
             "console": "externalTerminal"
         },
         { 
-            "name": "VideoPlayer(Release_x64)",
+            "name": "VideoPlayer(Release_x86)",
             "type": "cppvsdbg",
             "request": "launch",
-            "program": "${workspaceRoot}/bin/win64/Release/VideoPlayer.exe",
+            "program": "${workspaceRoot}/bin/win32/Release/VideoPlayer.exe",
             "args": [],
             "stopAtEntry": false,
-            "cwd": "${workspaceRoot}/bin/win64/",
-            "environment": [{"name":"PATH","value":"C:/Qt/Qt5.13.2/5.13.2/msvc2017_64/bin"}],
+            "cwd": "${workspaceRoot}/bin/win32/",
+            "environment": [{"name":"PATH","value":"C:/Qt/Qt5.13.2/5.13.2/msvc2017/bin"}],
             // "console": "externalTerminal"
             "console": "internalConsole" //在 VSCode 内部的调试控制台中显示输出,这个控制台只能在调试会话期间使用。
         },
@@ -35,7 +46,7 @@
             "args": [],
             "stopAtEntry": false,
             "cwd": "${workspaceRoot}/bin/win64/",
-            "environment": [{"name":"PATH","value":"D:/Qt/Qt5.13.2/5.13.2/msvc2017_64/bin"}],
+            "environment": [{"name":"PATH","value":"C:/Qt/Qt5.13.2/5.13.2/msvc2017_64/bin"}],
             // "console": "externalTerminal"
             "console": "internalConsole" //在 VSCode 内部的调试控制台中显示输出,这个控制台只能在调试会话期间使用。
         }

+ 3 - 3
CMakeLists.txt

@@ -29,7 +29,7 @@ if(UNIX)
     set(CMAKE_PREFIX_PATH "/opt/Qt/Qt5.13.2")
     set(QT_QMAKE_EXECUTABLE "/opt/Qt/Qt5.13.2/bin/qmake")
 
-    set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/bin/linux)
+    set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/bin/linux)
 
 elseif(WIN32)
 
@@ -42,12 +42,12 @@ elseif(WIN32)
     
     if(CMAKE_CL_64)    #CMAKE的内建变量,如果是true,就说明编译器的64位的,自然可以编译64bit的程序
         set(QT_DIR_NAME msvc2017_64)
-        set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/bin/win64)
+        set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/bin/win64)
         # set(CMAKE_PREFIX_PATH ${QT_DIR_ROOT}/msvc2017_64)
         # list(APPEND CMAKE_PREFIX_PATH ${QT_DIR_ROOT}/msvc2017_64)
     else()
         set(QT_DIR_NAME msvc2017)
-        set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/bin/win32)
+        set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/bin/win32)
     endif()
 
     foreach(item ${QT_DIR_ROOT})

+ 1 - 1
module/VideoPlayer/src/VideoPlayer/VideoPlayer_VideoThread.cpp

@@ -537,7 +537,7 @@ void VideoPlayer::decodeVideoThread()
                 is_key_frame_getted = true;
             }
 
-            if (is_key_frame_getted) //只有获取到第一帧关键帧后才进行显示,rtsp流最开始的部分会花屏
+            if (!m_is_live_mode || is_key_frame_getted) //只有获取到第一帧关键帧后才进行显示,rtsp流最开始的部分会花屏
             {
                 doDisplayVideo(yuv420pBuffer, videoWidth, videoHeight);
             }