diff --git a/src/UI/DocumentViews/MpvContainer.cc b/src/UI/DocumentViews/MpvContainer.cc
index b689349e5cbb3c4f2aef696e9fc789155a1a7c75..864daf03b58f2c1eb2982e09f58c00580e54ae3b 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 70804554d68da8cb45e9a96b17e3c177103d3bea..677d945cf834a8dc2f80f1f4133d0c4566c9f3e6 100644
--- a/src/UI/DocumentViews/MpvContainer.hh
+++ b/src/UI/DocumentViews/MpvContainer.hh
@@ -32,6 +32,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 };
@@ -39,6 +40,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