Index: wp-includes/default-filters.php
===================================================================
--- wp-includes/default-filters.php	(revision 43972)
+++ wp-includes/default-filters.php	(working copy)
@@ -554,6 +554,7 @@
 add_filter( 'the_excerpt_embed', 'shortcode_unautop' );
 add_filter( 'the_excerpt_embed', 'wp_embed_excerpt_attachment' );
 
+add_filter( 'oembed_dataparse', 'wp_filter_oembed_title', 9, 3 );
 add_filter( 'oembed_dataparse', 'wp_filter_oembed_result', 10, 3 );
 add_filter( 'oembed_response_data', 'get_oembed_response_data_rich', 10, 4 );
 add_filter( 'pre_oembed_result', 'wp_filter_pre_oembed_result', 10, 3 );
Index: wp-includes/embed.php
===================================================================
--- wp-includes/embed.php	(revision 43972)
+++ wp-includes/embed.php	(working copy)
@@ -709,6 +709,45 @@
 }
 
 /**
+ * Filters the given oEmbed HTML to make sure it has a title.
+ *
+ * @since x.x.x
+ *
+ * @param string $result The oEmbed HTML result.
+ * @param object $data   A data object result from an oEmbed provider.
+ * @param string $url    The URL of the content to be embedded.
+ * @return string The filtered oEmbed result.
+ */
+function wp_filter_oembed_title( $result, $data, $url ) {
+
+	// Get title from oEmbed data to start.
+	$title = ! empty( $data->title ) ? $data->title : '';
+
+	// If no oEmbed title, search the return markup for a title attribute.
+	$preg_match     = '/title\=[\"|\\\']{1}([^\"\\\']*)[\"|\\\']{1}/i';
+	$has_title_attr = preg_match( $preg_match, $result, $matches );
+	if ( $has_title_attr && ! empty( $matches[1] ) ) {
+		$title = $matches[1];
+	}
+
+	$title = apply_filters( 'oembed_title', $title, $result, $data, $url );
+
+	/*
+	 * If the title attribute already
+	 * exists, replace with new value.
+	 *
+	 * Otherwise, add the title attribute.
+	 */
+	if ( $has_title_attr ) {
+		$result = preg_replace( $preg_match, 'title="' . esc_attr( $title ) . '"', $result );
+	} else {
+		$result = preg_replace( '/^\<iframe/i', '<iframe title="' . esc_attr( $title ) . '"', $result );
+	}
+
+	return $result;
+}
+
+/**
  * Filters the given oEmbed HTML.
  *
  * If the `$url` isn't on the trusted providers list,
