diff --git a/src/multimedia/qmediapluginloader.cpp b/src/multimedia/qmediapluginloader.cpp
index e23e32a3fd63580f5c6188c6ac77bfa1f82701f9..1b4a13f8384073227fd088b89ed613fea5340680 100644
--- a/src/multimedia/qmediapluginloader.cpp
+++ b/src/multimedia/qmediapluginloader.cpp
@@ -127,7 +127,12 @@ void QMediaPluginLoader::loadMetadata()
             qDebug() << "QMediaPluginLoader: Inserted index " << i << " into metadata: " << jsonobj;
 #endif
 
-        QJsonArray arr = jsonobj.value(QStringLiteral("Keys")).toArray();
+        QJsonArray arr = jsonobj.value(QStringLiteral("Services")).toArray();
+        // Preserve compatibility with older plugins (made before 5.1) in which
+        // services were declared in the 'Keys' property
+        if (arr.isEmpty())
+            arr = jsonobj.value(QStringLiteral("Keys")).toArray();
+
         foreach (QJsonValue value, arr) {
             QString key = value.toString();
 
diff --git a/src/plugins/android/mediaplayer/mediaplayer.json b/src/plugins/android/mediaplayer/mediaplayer.json
index c4a27ea0138aea65b3a7ae00e85bbc9df6442dca..f371ebfd705774debd54b898923e4367cceb5e37 100644
--- a/src/plugins/android/mediaplayer/mediaplayer.json
+++ b/src/plugins/android/mediaplayer/mediaplayer.json
@@ -1,3 +1,4 @@
 {
-    "Keys": ["org.qt-project.qt.mediaplayer"]
+    "Keys": ["androidmultimedia"],
+    "Services": ["org.qt-project.qt.mediaplayer"]
 }
diff --git a/src/plugins/audiocapture/audiocapture.json b/src/plugins/audiocapture/audiocapture.json
index d963a2e3ee5333aa8f3549d32e5d492e87b2ed53..4c7673da234c3aae1cda5f76746b2662573cab1b 100644
--- a/src/plugins/audiocapture/audiocapture.json
+++ b/src/plugins/audiocapture/audiocapture.json
@@ -1,3 +1,4 @@
 {
-    "Keys": ["org.qt-project.qt.audiosource"]
+    "Keys": ["audiocapture"],
+    "Services": ["org.qt-project.qt.audiosource"]
 }
diff --git a/src/plugins/avfoundation/camera/avfcamera.json b/src/plugins/avfoundation/camera/avfcamera.json
index d3a58c75886c7968e0210c0dfb0f44c24759879d..e4310b62c8bd8c6fd0ba342a0b061eaa58461b01 100644
--- a/src/plugins/avfoundation/camera/avfcamera.json
+++ b/src/plugins/avfoundation/camera/avfcamera.json
@@ -1,3 +1,4 @@
 {
-    "Keys": ["org.qt-project.qt.camera"]
+    "Keys": ["avfoundationcamera"],
+    "Services": ["org.qt-project.qt.camera"]
 }
diff --git a/src/plugins/avfoundation/mediaplayer/avfmediaplayer.json b/src/plugins/avfoundation/mediaplayer/avfmediaplayer.json
index c4a27ea0138aea65b3a7ae00e85bbc9df6442dca..5626edec02a1c4b941687b1a6e078964391824a3 100644
--- a/src/plugins/avfoundation/mediaplayer/avfmediaplayer.json
+++ b/src/plugins/avfoundation/mediaplayer/avfmediaplayer.json
@@ -1,3 +1,4 @@
 {
-    "Keys": ["org.qt-project.qt.mediaplayer"]
+    "Keys": ["avfoundationmediaplayer"],
+    "Services": ["org.qt-project.qt.mediaplayer"]
 }
diff --git a/src/plugins/blackberry/blackberry_mediaservice.json b/src/plugins/blackberry/blackberry_mediaservice.json
index 54c1c9f043aeb7c907603e93b67161d477399802..2a59cc7701b64947fd74829896372c289231303e 100644
--- a/src/plugins/blackberry/blackberry_mediaservice.json
+++ b/src/plugins/blackberry/blackberry_mediaservice.json
@@ -1,3 +1,4 @@
 {
-    "Keys": ["org.qt-project.qt.camera", "org.qt-project.qt.mediaplayer"]
+    "Keys": ["blackberrymultimedia"],
+    "Services": ["org.qt-project.qt.camera", "org.qt-project.qt.mediaplayer"]
 }
diff --git a/src/plugins/directshow/directshow.json b/src/plugins/directshow/directshow.json
index 54c1c9f043aeb7c907603e93b67161d477399802..b1783b5ed8306b45569b1de95dc7e2e8ada18daa 100644
--- a/src/plugins/directshow/directshow.json
+++ b/src/plugins/directshow/directshow.json
@@ -1,3 +1,4 @@
 {
-    "Keys": ["org.qt-project.qt.camera", "org.qt-project.qt.mediaplayer"]
+    "Keys": ["directshow"],
+    "Services": ["org.qt-project.qt.camera", "org.qt-project.qt.mediaplayer"]
 }
diff --git a/src/plugins/directshow/directshow_camera.json b/src/plugins/directshow/directshow_camera.json
index d3a58c75886c7968e0210c0dfb0f44c24759879d..c37ce2c9ad5f5ffa4d8c6c48579a9df35f42a32f 100644
--- a/src/plugins/directshow/directshow_camera.json
+++ b/src/plugins/directshow/directshow_camera.json
@@ -1,3 +1,4 @@
 {
-    "Keys": ["org.qt-project.qt.camera"]
+    "Keys": ["directshow"],
+    "Services": ["org.qt-project.qt.camera"]
 }
diff --git a/src/plugins/gstreamer/audiodecoder/audiodecoder.json b/src/plugins/gstreamer/audiodecoder/audiodecoder.json
index 3cc81dc72a31caaa50d871196363c733bffb6e05..4314f2efad4160d3a89e686db3e8282115f9d073 100644
--- a/src/plugins/gstreamer/audiodecoder/audiodecoder.json
+++ b/src/plugins/gstreamer/audiodecoder/audiodecoder.json
@@ -1,3 +1,4 @@
 {
-    "Keys": ["org.qt-project.qt.audiodecode"]
+    "Keys": ["gstreameraudiodecode"],
+    "Services": ["org.qt-project.qt.audiodecode"]
 }
diff --git a/src/plugins/gstreamer/camerabin/camerabin.json b/src/plugins/gstreamer/camerabin/camerabin.json
index d3a58c75886c7968e0210c0dfb0f44c24759879d..3246b468318930c79ce3378ffe0eca6fd7d5ba44 100644
--- a/src/plugins/gstreamer/camerabin/camerabin.json
+++ b/src/plugins/gstreamer/camerabin/camerabin.json
@@ -1,3 +1,4 @@
 {
-    "Keys": ["org.qt-project.qt.camera"]
+    "Keys": ["gstreamercamerabin"],
+    "Services": ["org.qt-project.qt.camera"]
 }
diff --git a/src/plugins/gstreamer/gstreamer.json b/src/plugins/gstreamer/gstreamer.json
index 3f6ccdafdb52e1acf2792b3e4f4ea7986b8a5c25..0656cce4fcdc61bcb1d529ed94201cab10560b6c 100644
--- a/src/plugins/gstreamer/gstreamer.json
+++ b/src/plugins/gstreamer/gstreamer.json
@@ -1,3 +1,4 @@
 {
-    "Keys": ["org.qt-project.qt.mediaplayer", "org.qt-project.qt.audiosource", "org.qt-project.qt.camera", "org.qt-project.qt.audiodecode"]
+    "Keys": ["gstreamer"],
+    "Services": ["org.qt-project.qt.mediaplayer", "org.qt-project.qt.audiosource", "org.qt-project.qt.camera", "org.qt-project.qt.audiodecode"]
 }
diff --git a/src/plugins/gstreamer/mediacapture/mediacapture.json b/src/plugins/gstreamer/mediacapture/mediacapture.json
index d963a2e3ee5333aa8f3549d32e5d492e87b2ed53..68ca3f55b1b36b16f601db16532c7414008bf0eb 100644
--- a/src/plugins/gstreamer/mediacapture/mediacapture.json
+++ b/src/plugins/gstreamer/mediacapture/mediacapture.json
@@ -1,3 +1,4 @@
 {
-    "Keys": ["org.qt-project.qt.audiosource"]
+    "Keys": ["gstreamermediacapture"],
+    "Services": ["org.qt-project.qt.audiosource"]
 }
diff --git a/src/plugins/gstreamer/mediacapture/mediacapturecamera.json b/src/plugins/gstreamer/mediacapture/mediacapturecamera.json
index b312383630bf040066fc1406f863d0b202536bea..af9f3575fd23850087867e42e5da8a69b0f7a648 100644
--- a/src/plugins/gstreamer/mediacapture/mediacapturecamera.json
+++ b/src/plugins/gstreamer/mediacapture/mediacapturecamera.json
@@ -1,3 +1,4 @@
 {
-    "Keys": ["org.qt-project.qt.audiosource", "org.qt-project.qt.camera"]
+    "Keys": ["gstreamermediacapture"]
+    "Services": ["org.qt-project.qt.audiosource", "org.qt-project.qt.camera"]
 }
diff --git a/src/plugins/gstreamer/mediaplayer/mediaplayer.json b/src/plugins/gstreamer/mediaplayer/mediaplayer.json
index c4a27ea0138aea65b3a7ae00e85bbc9df6442dca..bd1a7e64d12791ee9b582df64d70212c0308346f 100644
--- a/src/plugins/gstreamer/mediaplayer/mediaplayer.json
+++ b/src/plugins/gstreamer/mediaplayer/mediaplayer.json
@@ -1,3 +1,4 @@
 {
-    "Keys": ["org.qt-project.qt.mediaplayer"]
+    "Keys": ["gstreamermediaplayer"],
+    "Services": ["org.qt-project.qt.mediaplayer"]
 }
diff --git a/src/plugins/qt7/qt7.json b/src/plugins/qt7/qt7.json
index c4a27ea0138aea65b3a7ae00e85bbc9df6442dca..b4cebad991b28500e1989c03eeff468e395dd92e 100644
--- a/src/plugins/qt7/qt7.json
+++ b/src/plugins/qt7/qt7.json
@@ -1,3 +1,4 @@
 {
-    "Keys": ["org.qt-project.qt.mediaplayer"]
+    "Keys": ["qt7"],
+    "Services": ["org.qt-project.qt.mediaplayer"]
 }
diff --git a/src/plugins/v4l/v4l.json b/src/plugins/v4l/v4l.json
index f87f329c196e4b35db7ddffe2846aa8ddfcd3e32..467fd526f3c49630aaabb4b264bcf6dc4e3fba25 100644
--- a/src/plugins/v4l/v4l.json
+++ b/src/plugins/v4l/v4l.json
@@ -1,3 +1,4 @@
 {
-    "Keys": ["org.qt-project.qt.radio"]
+    "Keys": ["v4l"],
+    "Services": ["org.qt-project.qt.radio"]
 }
diff --git a/src/plugins/wmf/wmf.json b/src/plugins/wmf/wmf.json
index b350cef41e539f3347703f5c38a982010d08e169..e70736480bb7976735cea2a9724038bcb03fd262 100644
--- a/src/plugins/wmf/wmf.json
+++ b/src/plugins/wmf/wmf.json
@@ -1,3 +1,4 @@
 {
-    "Keys": ["org.qt-project.qt.mediaplayer", "org.qt-project.qt.audiodecode"]
+    "Keys": ["windowsmediafoundation"],
+    "Services": ["org.qt-project.qt.mediaplayer", "org.qt-project.qt.audiodecode"]
 }
diff --git a/tests/auto/unit/qmediaserviceprovider/mockserviceplugin1/mockserviceplugin1.json b/tests/auto/unit/qmediaserviceprovider/mockserviceplugin1/mockserviceplugin1.json
index c4a27ea0138aea65b3a7ae00e85bbc9df6442dca..69ff56452db400c2622648c1654f412d8a88ea27 100644
--- a/tests/auto/unit/qmediaserviceprovider/mockserviceplugin1/mockserviceplugin1.json
+++ b/tests/auto/unit/qmediaserviceprovider/mockserviceplugin1/mockserviceplugin1.json
@@ -1,3 +1,4 @@
 {
-    "Keys": ["org.qt-project.qt.mediaplayer"]
+    "Keys": ["mockserviceplugin1"],
+    "Services": ["org.qt-project.qt.mediaplayer"]
 }
diff --git a/tests/auto/unit/qmediaserviceprovider/mockserviceplugin2/mockserviceplugin2.json b/tests/auto/unit/qmediaserviceprovider/mockserviceplugin2/mockserviceplugin2.json
index ec05f3e521d45fbcb1879fe3b73f082adc26162c..15d8ed505ddd3c46828f4cea9a026eb391cd66f7 100644
--- a/tests/auto/unit/qmediaserviceprovider/mockserviceplugin2/mockserviceplugin2.json
+++ b/tests/auto/unit/qmediaserviceprovider/mockserviceplugin2/mockserviceplugin2.json
@@ -1,3 +1,4 @@
 {
-    "Keys": ["org.qt-project.qt.mediaplayer", "org.qt-project.qt.radio"]
+    "Keys": ["mockserviceplugin2"],
+    "Services": ["org.qt-project.qt.mediaplayer", "org.qt-project.qt.radio"]
 }
diff --git a/tests/auto/unit/qmediaserviceprovider/mockserviceplugin3/mockserviceplugin3.json b/tests/auto/unit/qmediaserviceprovider/mockserviceplugin3/mockserviceplugin3.json
index 58bbc4d7465032b0d4cd2b477fe349eff630ed94..591a02e51b486a3dc13d94a9b525e551fa4227e0 100644
--- a/tests/auto/unit/qmediaserviceprovider/mockserviceplugin3/mockserviceplugin3.json
+++ b/tests/auto/unit/qmediaserviceprovider/mockserviceplugin3/mockserviceplugin3.json
@@ -1,3 +1,4 @@
 {
-    "Keys": ["org.qt-project.qt.mediaplayer", "org.qt-project.qt.audiosource"]
+    "Keys": ["mockserviceplugin3"],
+    "Services": ["org.qt-project.qt.mediaplayer", "org.qt-project.qt.audiosource"]
 }
diff --git a/tests/auto/unit/qmediaserviceprovider/mockserviceplugin4/mockserviceplugin4.json b/tests/auto/unit/qmediaserviceprovider/mockserviceplugin4/mockserviceplugin4.json
index c4a27ea0138aea65b3a7ae00e85bbc9df6442dca..d8b8bd7e9576afffa3b28060f91bfbda338c6ca3 100644
--- a/tests/auto/unit/qmediaserviceprovider/mockserviceplugin4/mockserviceplugin4.json
+++ b/tests/auto/unit/qmediaserviceprovider/mockserviceplugin4/mockserviceplugin4.json
@@ -1,3 +1,4 @@
 {
-    "Keys": ["org.qt-project.qt.mediaplayer"]
+    "Keys": ["mockserviceplugin4"],
+    "Services": ["org.qt-project.qt.mediaplayer"]
 }