diff --git a/src/UI/DocumentViews/MpvContainer.cc b/src/UI/DocumentViews/MpvContainer.cc
index 425346ed36a1ef646bb5644b76034ccd307f773b..9b7b9ed7ab9f01025d67272e636b3a24f0666a33 100644
--- a/src/UI/DocumentViews/MpvContainer.cc
+++ b/src/UI/DocumentViews/MpvContainer.cc
@@ -19,6 +19,14 @@ MpvContainer::MpvContainer(QWidget *parent)
 
     setAttribute(Qt::WA_DontCreateNativeAncestors);
     setAttribute(Qt::WA_NativeWindow);
+}
+
+void
+MpvContainer::intializeMpv()
+{
+    if (isMpvAlreadyInitialized)
+        throw std::logic_error("MPV is already initialized!");
+    isMpvAlreadyInitialized = true;
 
     quint64 wid = winId();
     mpv_set_option(mpv, "wid", MPV_FORMAT_INT64, &wid);
diff --git a/src/UI/DocumentViews/MpvContainer.hh b/src/UI/DocumentViews/MpvContainer.hh
index 760d5e4a32c75fc5ef6ab4d04abe4033bd4cb184..f44d2359b595720ba8c542f71d592c861146ef7c 100644
--- a/src/UI/DocumentViews/MpvContainer.hh
+++ b/src/UI/DocumentViews/MpvContainer.hh
@@ -29,6 +29,7 @@ class MpvContainer final : public QWidget {
 
 private:
     bool isPlaybackPaused{ true };
+    bool isMpvAlreadyInitialized{ false };
     mpv_handle *volatile mpv{ nullptr };
     qint64 sid{ -1 };
     std::function<void(double)> mpvTimeCallback{ nullptr };
@@ -36,6 +37,7 @@ private:
 
 public:
     explicit MpvContainer(QWidget *parent);
+    void intializeMpv();
     ~MpvContainer() noexcept override;
 
     void loadFile(const QString &) noexcept;
diff --git a/src/UI/DocumentViews/VideoView.cc b/src/UI/DocumentViews/VideoView.cc
index 30eee0e0863deaac58c2187232336f20395939a0..2e45fcfdb9c6d354cef88da731a80c19d971122c 100644
--- a/src/UI/DocumentViews/VideoView.cc
+++ b/src/UI/DocumentViews/VideoView.cc
@@ -14,6 +14,8 @@ VideoView::VideoView(QWidget *parent) noexcept
     centralLayout->addWidget(new MpvControls(mpv, this));
 
     setLayout(centralLayout);
+
+    mpv->intializeMpv();
 }
 
 void