diff --git a/.github/workflows/pr_push.yml b/.github/workflows/pr_push.yml
index cad2023f..d828521d 100644
--- a/.github/workflows/pr_push.yml
+++ b/.github/workflows/pr_push.yml
@@ -18,8 +18,8 @@ jobs:
     runs-on: [windows-latest]
     if: contains(github.event.head_commit.message, '[skip ci]') != true
     env:
-      QT_VERSION: '5.10.1'
-      WINDOWS_DEPS_VERSION: '2017'
+      QT_VERSION: '5.15.2'
+      WINDOWS_DEPS_VERSION: '2019'
       CMAKE_GENERATOR: "Visual Studio 16 2019"
       CMAKE_SYSTEM_VERSION: "10.0"
     steps:
diff --git a/.github/workflows/tag_release.yml b/.github/workflows/tag_release.yml
index f499e0bb..51d6813a 100644
--- a/.github/workflows/tag_release.yml
+++ b/.github/workflows/tag_release.yml
@@ -12,8 +12,8 @@ jobs:
     name: 'Windows 32+64bit'
     runs-on: [windows-latest]
     env:
-      QT_VERSION: '5.10.1'
-      WINDOWS_DEPS_VERSION: '2017'
+      QT_VERSION: '5.15.2'
+      WINDOWS_DEPS_VERSION: '2019'
       CMAKE_GENERATOR: "Visual Studio 16 2019"
       CMAKE_SYSTEM_VERSION: "10.0"
     steps:
diff --git a/CI/download-obs-deps.cmd b/CI/download-obs-deps.cmd
index ff4ffd57..2063e297 100644
--- a/CI/download-obs-deps.cmd
+++ b/CI/download-obs-deps.cmd
@@ -1,6 +1,7 @@
-if not exist %DepsBasePath% (
-    curl -o %DepsBasePath%.zip -kLO https://obsproject.com/downloads/dependencies2017.zip -f --retry 5 -C -
-    7z x %DepsBasePath%.zip -o%DepsBasePath%
+if exist %DepsBasePath% (
+    echo "OBS dependencies found. Download skipped."
 ) else (
-    echo "OBS dependencies are already there. Download skipped."
+    echo "OBS dependencies not found. Downloading..."
+    curl -o %DepsBasePath%.zip -kLO https://cdn-fastly.obsproject.com/downloads/dependencies2019.zip -f --retry 5 -C -
+    7z x %DepsBasePath%.zip -o%DepsBasePath%
 )
diff --git a/CI/install-qt-win.cmd b/CI/install-qt-win.cmd
index e0537fe8..4a131280 100644
--- a/CI/install-qt-win.cmd
+++ b/CI/install-qt-win.cmd
@@ -1,8 +1,8 @@
-if not exist %QtBaseDir% (
-	curl -kLO https://cdn-fastly.obsproject.com/downloads/Qt_5.10.1.7z -f --retry 5 -z Qt_5.10.1.7z
-    7z x Qt_5.10.1.7z -o%QtBaseDir%
+if exist %QtBaseDir% (
+    echo "Qt directory found. Download skipped."
 ) else (
-	echo "Qt is already installed. Download skipped."
+    echo "Qt directory not found. Downloading..."
+    curl -kLO http://home.tt2468.net:86/dl/Qt_5.15.2.7z -f --retry 5 -C -
+    7z x Qt_5.15.2.7z -o%QtBaseDir%
 )
-
 dir %QtBaseDir%
diff --git a/azure-pipelines.yml b/azure-pipelines.yml
index a42fc561..449bd137 100644
--- a/azure-pipelines.yml
+++ b/azure-pipelines.yml
@@ -33,17 +33,27 @@ jobs:
     vmImage: 'windows-2019'
   variables:
     build_config: RelWithDebInfo
+    DepsCacheVersion: '1' # Change whenever updating OBS dependencies URL, in order to force a cache reset
     DepsBasePath: 'D:\obsdependencies'
     DepsPath32: '$(DepsBasePath)\win32'
     DepsPath64: '$(DepsBasePath)\win64'
+    QtCacheVersion: '1' # Change whenever updating Qt dependency URL, in order to force a cache reset
     QtBaseDir: 'D:\QtDep'
-    QTDIR32: '$(QtBaseDir)\5.10.1\msvc2017'
-    QTDIR64: '$(QtBaseDir)\5.10.1\msvc2017_64'
+    QTDIR32: '$(QtBaseDir)\5.15.2\msvc2019'
+    QTDIR64: '$(QtBaseDir)\5.15.2\msvc2019_64'
     OBSPath: 'D:\obs-studio'
   steps:
     - checkout: self
       submodules: true
 
+    - task: Cache@2
+      displayName: Restore cached Qt archive file
+      inputs:
+        key: 'qtdep-"$(QtCacheVersion)" | "$(Agent.OS)"'
+        restoreKeys: |
+          qtdep-"$(QtCacheVersion)" | "$(Agent.OS)"
+        path: $(QtBaseDir)
+
     - script: ./CI/install-qt-win.cmd
       displayName: 'Install Qt'
       env:
@@ -52,9 +62,9 @@ jobs:
     - task: Cache@2
       displayName: Restore cached OBS Studio dependencies
       inputs:
-        key: 'obsdeps | "$(Agent.OS)"'
+        key: 'obsdeps-"$(DepsCacheVersion)" | "$(Agent.OS)"'
         restoreKeys: |
-          obsdeps | "$(Agent.OS)"
+          obsdeps-"$(DepsCacheVersion)" | "$(Agent.OS)"
         path: $(DepsBasePath)
 
     - script: ./CI/download-obs-deps.cmd