diff --git src/wp-admin/js/widgets/media-video-widget.js src/wp-admin/js/widgets/media-video-widget.js
index 9eb532caa6..eaddcbc348 100644
--- src/wp-admin/js/widgets/media-video-widget.js
+++ src/wp-admin/js/widgets/media-video-widget.js
@@ -134,7 +134,7 @@
 		},
 
 		/**
-		 * Whether a url is a supported external host.
+		 * Whether MediaElement.js can directly play the URL from an external providers.
 		 *
 		 * @param {String} url - Video url.
 		 * @returns {boolean} Whether url is a supported video host.
@@ -151,7 +151,7 @@
 		 * @returns {void}
 		 */
 		renderPreview: function renderPreview() {
-			var control = this, previewContainer, previewTemplate, attachmentId, attachmentUrl, poster, isHostedEmbed = false, mime, error;
+			var control = this, previewContainer, previewTemplate, attachmentId, attachmentUrl, poster, canHostedVideoPlayByMEJS = false, isOEmbed = false, mime, error, urlParser, matches;
 			attachmentId = control.model.get( 'attachment_id' );
 			attachmentUrl = control.model.get( 'url' );
 			error = control.model.get( 'error' );
@@ -161,12 +161,7 @@
 			}
 
 			if ( ! attachmentId && attachmentUrl ) {
-				isHostedEmbed = control.isHostedVideo( attachmentUrl );
-			}
-
-			if ( isHostedEmbed ) {
-				control.fetchEmbed();
-				poster = control.oembedResponses[ attachmentUrl ] ? control.oembedResponses[ attachmentUrl ].thumbnail_url : null;
+				canHostedVideoPlayByMEJS = control.isHostedVideo( attachmentUrl );
 			}
 
 			// Verify the selected attachment mime is supported.
@@ -175,6 +170,22 @@
 				if ( ! _.contains( _.values( wp.media.view.settings.embedMimes ), mime ) ) {
 					error = 'unsupported_file_type';
 				}
+			} else if ( ! attachmentId ) {
+				urlParser = document.createElement( 'a' );
+				urlParser.href = attachmentUrl;
+				matches = urlParser.pathname.toLowerCase().match( /\.(\w+)$/ );
+				if ( matches ) {
+					if ( ! _.contains( _.keys( wp.media.view.settings.embedMimes ), matches[1] ) ) {
+						error = 'unsupported_file_type';
+					}
+				} else {
+					isOEmbed = true; // @todo Parse the path from the attachmentUrl and grab the extension to see if it is a supported MIME.
+				}
+			}
+
+			if ( isOEmbed ) {
+				control.fetchEmbed();
+				poster = control.oembedResponses[ attachmentUrl ] ? control.oembedResponses[ attachmentUrl ].thumbnail_url : null;
 			}
 
 			previewContainer = control.$el.find( '.media-widget-preview' );
@@ -182,11 +193,12 @@
 
 			previewContainer.html( previewTemplate({
 				model: {
-					attachment_id: control.model.get( 'attachment_id' ),
+					attachment_id: attachmentId,
 					src: attachmentUrl,
 					poster: poster
 				},
-				is_hosted_embed: isHostedEmbed,
+				is_hosted_embed: canHostedVideoPlayByMEJS,
+				is_oembed: isOEmbed
 				error: error
 			}));
 			wp.mediaelement.initialize();
diff --git src/wp-admin/js/widgets/media-widgets.js src/wp-admin/js/widgets/media-widgets.js
index 5e7383c6fc..ad21e37a7e 100644
--- src/wp-admin/js/widgets/media-widgets.js
+++ src/wp-admin/js/widgets/media-widgets.js
@@ -184,12 +184,6 @@ wp.mediaWidgets = ( function( $ ) {
 							return;
 						}
 
-						// If video, test for Vimeo and YouTube, otherwise, renderFail(). This should be removed once #34115 is resolved.
-						if ( 'video' === this.controller.options.mimeType && ! /vimeo|youtu\.?be/.test( urlParser.host ) ) {
-							embedLinkView.renderFail();
-							return;
-						}
-
 						// Support YouTube embed links.
 						url = embedLinkView.model.get( 'url' );
 						re = /https?:\/\/www\.youtube\.com\/embed\/([^/]+)/;
diff --git src/wp-includes/widgets/class-wp-widget-media-video.php src/wp-includes/widgets/class-wp-widget-media-video.php
index 5ba0526961..f56c475def 100644
--- src/wp-includes/widgets/class-wp-widget-media-video.php
+++ src/wp-includes/widgets/class-wp-widget-media-video.php
@@ -121,17 +121,26 @@ class WP_Widget_Media_Video extends WP_Widget_Media {
 			return;
 		}
 
-		add_filter( 'wp_video_shortcode', array( $this, 'inject_video_max_width_style' ) );
+		$yt_pattern = '#^https?://(?:www\.)?(?:youtube\.com/watch|youtu\.be/)#';
+		$vimeo_pattern = '#^https?://(.+\.)?vimeo\.com/.*#';
+		if ( ! $attachment && ! preg_match( $yt_pattern, $src ) && ! preg_match( $vimeo_pattern, $src ) ) {
 
-		echo wp_video_shortcode(
-			array_merge(
-				$instance,
-				compact( 'src' )
-			),
-			$instance['content']
-		);
+			// @todo inject_video_max_width_style?
+			echo wp_oembed_get( $src );
+
+		} else {
+			add_filter( 'wp_video_shortcode', array( $this, 'inject_video_max_width_style' ) );
+
+			echo wp_video_shortcode(
+				array_merge(
+					$instance,
+					compact( 'src' )
+				),
+				$instance['content']
+			);
 
-		remove_filter( 'wp_video_shortcode', array( $this, 'inject_video_max_width_style' ) );
+			remove_filter( 'wp_video_shortcode', array( $this, 'inject_video_max_width_style' ) );
+		}
 	}
 
 	/**
@@ -227,14 +236,12 @@ class WP_Widget_Media_Video extends WP_Widget_Media {
 				<div class="notice notice-error notice-alt">
 					<p><?php _e( 'Unable to preview media due to an unknown error.' ); ?></p>
 				</div>
-			<# } else if ( data.is_hosted_embed && data.model.poster ) { #>
+			<# } else if ( data.model.poster ) { #>
 				<a href="{{ data.model.src }}" target="_blank" class="media-widget-video-link">
 					<img src="{{ data.model.poster }}" />
 				</a>
-			<# } else if ( data.is_hosted_embed ) { #>
-				<a href="{{ data.model.src }}" target="_blank" class="media-widget-video-link no-poster">
-					<span class="dashicons dashicons-format-video"></span>
-				</a>
+			<# } else if ( data.model.is_oembed ) { #>
+				TODO: Safely embed the oEmbed in an iframe? Warning that moving the widget around in the sidebar would cause the iframe to be destroyed.
 			<# } else if ( data.model.src ) { #>
 				<?php wp_underscore_video_template() ?>
 			<# } #>
