diff --git src/bp-activity/bp-activity-embeds.php src/bp-activity/bp-activity-embeds.php
index 31a4e02..f55ab4c 100644
--- src/bp-activity/bp-activity-embeds.php
+++ src/bp-activity/bp-activity-embeds.php
@@ -19,7 +19,7 @@ defined( 'ABSPATH' ) || exit;
  * @since 2.5.0
  */
 function bp_activity_setup_oembed() {
-	if ( bp_get_major_wp_version() >= 4.4 && bp_is_active( 'activity', 'embeds' ) ) {
+	if ( function_exists( 'wp_oembed_register_route' ) && bp_is_active( 'activity', 'embeds' ) ) {
 		buddypress()->activity->oembed = new BP_Activity_oEmbed_Component;
 	}
 }
@@ -50,58 +50,30 @@ function bp_activity_embed_excerpt( $content = '' ) {
 		 * bp_activity_truncate_entry() includes the 'Read More' link, which is why
 		 * we're using this instead of bp_create_excerpt().
 		 */
-		$content = html_entity_decode( $content );
-		$content = bp_activity_truncate_entry( $content, array(
-			'html' => false,
+		$excerpt = bp_activity_truncate_entry( html_entity_decode( $content ), array(
+			'html'              => false,
 			'filter_shortcodes' => true,
 			'strip_tags'        => true,
-			'force_truncate'    => true
+			'force_truncate'    => true,
+			'remove_links'      => true,
 		) );
 
-		// Remove links from content.
-		$content = preg_replace( '#^\s*(https?://[^\s"]+)\s*$#im', '', $content );
+		// Temporarly remove this filter as we already truncated the entry.
+		remove_filter( 'bp_get_activity_content_body', 'bp_activity_truncate_entry' );
 
-		return $content;
-	}
-
-/**
- * Outputs the first embedded item in the activity oEmbed template.
- *
- * @since 2.5.0
- */
-function bp_activity_embed_response_display_media() {
-	// Bail if oEmbed request explicitly hides media.
-	if ( isset( $_REQUEST['hide_media'] ) && true == wp_validate_boolean( $_REQUEST['hide_media'] ) ) {
-		return;
-	}
-
-	// Find all embeds for the activity item.
-	$embeds = bp_core_extract_media_from_content( $GLOBALS['activities_template']->activity->content, 'embeds' );
-
-	/**
-	 * Should we display media in the oEmbed template?
-	 *
-	 * @since 2.5.0
-	 *
-	 * @param bool $retval Defaults to true.
-	 */
-	$allow_embeds = apply_filters( 'bp_activity_embed_display_media', true );
-
-	// Only embed the first embedded item.
-	if ( $embeds && $allow_embeds ) {
-		$content = apply_filters( 'bp_get_activity_content_body', $embeds['embeds'][0]['url'] );
-		echo $content;
+		// Apply all the other filters to the content.
+		$excerpt = apply_filters( 'bp_get_activity_content_body', $excerpt );
 
-		if ( false !== strpos( $content, '<iframe' ) ) {
-	?>
+		// Restore the filter.
+		add_filter( 'bp_get_activity_content_body', 'bp_activity_truncate_entry' );
 
-<script>
-/*! fluidvids.js v1.2.0 | (c) 2013 @toddmotto | https://github.com/toddmotto/fluidvids */
-window.fluidvids=function(a,b){"use strict";var c=function(a){this.elem=a};c.prototype={init:function(){var a=100*(this.elem.height/this.elem.width);this.elem.style.position="absolute",this.elem.style.top="0",this.elem.style.left="0",this.elem.width="100%",this.elem.height="100%";var c=b.createElement("div");c.className="fluidvids",c.style.width="100%",c.style.position="relative",c.style.paddingTop=a+"%";var d=this.elem.parentNode;d.insertBefore(c,this.elem),c.appendChild(this.elem)}};for(var d=b.getElementsByTagName("iframe"),e=0;e<d.length;e++){d[e].src&&new c(d[e]).init()}}(window,document);
-</script>
-
-	<?php
-		}
+		/**
+		 * Filter here to edit the embed excerpt.
+		 *
+		 * @since  2.5.0
+		 *
+		 * @param  string $excerpt The embed excerpt
+		 * @param  string $content The full content of the activity
+		 */
+		return apply_filters( 'bp_activity_get_embed_excerpt', $excerpt, $content );
 	}
-}
-add_action( 'bp_activity_embed_after_content', 'bp_activity_embed_response_display_media' );
diff --git src/bp-activity/bp-activity-loader.php src/bp-activity/bp-activity-loader.php
index f41630e..f8180e3 100644
--- src/bp-activity/bp-activity-loader.php
+++ src/bp-activity/bp-activity-loader.php
@@ -69,7 +69,7 @@ class BP_Activity_Component extends BP_Component {
 		}
 
 		// Embeds - only applicable for WP 4.4+
-		if ( bp_get_major_wp_version() >= 4.4 && bp_is_active( $this->id, 'embeds' ) ) {
+		if ( function_exists( 'wp_oembed_register_route' ) && bp_is_active( $this->id, 'embeds' ) ) {
 			$includes[] = 'classes/class-bp-activity-oembed-component';
 			$includes[] = 'embeds';
 		}
diff --git src/bp-activity/classes/class-bp-activity-oembed-component.php src/bp-activity/classes/class-bp-activity-oembed-component.php
index 8deaa8b..f61823d 100644
--- src/bp-activity/classes/class-bp-activity-oembed-component.php
+++ src/bp-activity/classes/class-bp-activity-oembed-component.php
@@ -9,7 +9,7 @@
 // Exit if accessed directly.
 defined( 'ABSPATH' ) || exit;
 
-require_once( buddypress()->plugin_dir . '/bp-core/classes/class-bp-oembed-component.php' );
+if ( class_exists( 'BP_oEmbed_Component' ) ) :
 
 /**
  * oEmbed handler to respond and render single activity items.
@@ -36,24 +36,6 @@ class BP_Activity_oEmbed_Component extends BP_oEmbed_Component {
 	}
 
 	/**
-	 * Add custom endpoint arguments.
-	 *
-	 * Currently, includes 'hide_media'.
-	 *
-	 * @since 2.5.0
-	 *
-	 * @return array
-	 */
-	protected function set_route_args() {
-		return array(
-			'hide_media' => array(
-				'default' => false,
-				'sanitize_callback' => 'wp_validate_boolean'
-			)
-		);
-	}
-
-	/**
 	 * Output our custom embed template part.
 	 *
 	 * @since 2.5.0
@@ -158,7 +140,7 @@ class BP_Activity_oEmbed_Component extends BP_oEmbed_Component {
 
 		// 'wp-embedded-content' CSS class is necessary due to how the embed JS works.
 		$blockquote = sprintf( '<blockquote class="wp-embedded-content bp-activity-item">%1$s%2$s %3$s</blockquote>',
-			'<p>' . bp_activity_get_embed_excerpt( $activity->content ) . '</p>',
+			bp_activity_get_embed_excerpt( $activity->content ),
 			'- ' . bp_core_get_user_displayname( $activity->user_id ) . $mentionname,
 			'<a href="' . esc_url( bp_activity_get_permalink( $item_id ) ) . '">' . $date . '</a>'
 		);
@@ -217,7 +199,8 @@ class BP_Activity_oEmbed_Component extends BP_oEmbed_Component {
 					_n(
 						'%s <span class="screen-reader-text">Comment</span>',
 						'%s <span class="screen-reader-text">Comments</span>',
-						$count
+						$count,
+						'buddypress'
 					),
 					number_format_i18n( $count )
 				);
@@ -228,3 +211,5 @@ class BP_Activity_oEmbed_Component extends BP_oEmbed_Component {
 	<?php
 	}
 }
+
+endif;
diff --git src/bp-core/bp-core-actions.php src/bp-core/bp-core-actions.php
index aea4467..09f7b6a 100644
--- src/bp-core/bp-core-actions.php
+++ src/bp-core/bp-core-actions.php
@@ -37,6 +37,7 @@ add_action( 'set_current_user',        'bp_setup_current_user',     10    );
 add_action( 'setup_theme',             'bp_setup_theme',            10    );
 add_action( 'after_setup_theme',       'bp_after_setup_theme',      100   ); // After WP themes.
 add_action( 'wp_enqueue_scripts',      'bp_enqueue_scripts',        10    );
+add_action( 'enqueue_embed_scripts',   'bp_enqueue_embed_scripts',  10    );
 add_action( 'admin_bar_menu',          'bp_setup_admin_bar',        20    ); // After WP core.
 add_action( 'template_redirect',       'bp_template_redirect',      10    );
 add_action( 'widgets_init',            'bp_widgets_init',           10    );
diff --git src/bp-core/bp-core-classes.php src/bp-core/bp-core-classes.php
index 0da6fbb..608eac6 100644
--- src/bp-core/bp-core-classes.php
+++ src/bp-core/bp-core-classes.php
@@ -24,3 +24,7 @@ require dirname( __FILE__ ) . '/classes/class-bp-media-extractor.php';
 require dirname( __FILE__ ) . '/classes/class-bp-attachment.php';
 require dirname( __FILE__ ) . '/classes/class-bp-attachment-avatar.php';
 require dirname( __FILE__ ) . '/classes/class-bp-attachment-cover-image.php';
+
+if ( function_exists( 'wp_oembed_register_route' ) ) {
+	require dirname( __FILE__ ) . '/classes/class-bp-oembed-component.php';
+}
diff --git src/bp-core/bp-core-dependency.php src/bp-core/bp-core-dependency.php
index 6982924..9ab8314 100644
--- src/bp-core/bp-core-dependency.php
+++ src/bp-core/bp-core-dependency.php
@@ -400,6 +400,28 @@ function bp_enqueue_scripts() {
 }
 
 /**
+ * Fire the 'bp_enqueue_embed_scripts' action, where BP enqueues its CSS and JS
+ * for BuddyPress embeds.
+ *
+ * @since 2.5.0
+ *
+ * @uses do_action() Calls 'bp_enqueue_embed_scripts'.
+ */
+function bp_enqueue_embed_scripts() {
+	if ( ! is_buddypress() ) {
+		return;
+	}
+
+	/**
+	 * Fires inside the 'bp_enqueue_embed_scripts' function, where BP enqueues its CSS and JS
+	 * for BuddyPress embeds.
+	 *
+	 * @since 2.5.0
+	 */
+	do_action ( 'bp_enqueue_embed_scripts' );
+}
+
+/**
  * Fire the 'bp_add_rewrite_tag' action, where BP adds its custom rewrite tags.
  *
  * @since 1.8.0
diff --git src/bp-core/bp-core-template-loader.php src/bp-core/bp-core-template-loader.php
index 8f4b03c..c76133f 100644
--- src/bp-core/bp-core-template-loader.php
+++ src/bp-core/bp-core-template-loader.php
@@ -147,6 +147,41 @@ function bp_locate_template( $template_names, $load = false, $require_once = tru
 }
 
 /**
+ * Locate the URL for a requested asset
+ *
+ * @since  2.5.0
+ *
+ * @param  string $filename The requested asset (eg: css/buddypress.css)
+ * @return string           The located uri for the asset.
+ */
+function bp_locate_template_asset_uri( $filename ) {
+	$asset = bp_locate_template( $filename );
+
+	if ( ! $asset ) {
+		return false;
+	}
+
+	// Should be the majority of cases.
+	if ( preg_match( '/' . addcslashes( WP_CONTENT_DIR, '/' ) . '/' , $asset ) ) {
+		$uri = str_replace( WP_CONTENT_DIR, content_url(), $asset );
+
+	// Otherwise there's a good chance it's a symlinked plugin.
+	} else {
+		$uri = plugins_url( wp_basename( $filename ), $asset );
+	}
+
+	/**
+	 * Filter here to edit the located url for the asset.
+	 *
+	 * @since  2.5.0
+	 *
+	 * @param  string $uri      The located uri for the asset.
+	 * @param  string $filename The requested asset
+	 */
+	return apply_filters( 'bp_locate_template_asset_uri', $uri, $filename );
+}
+
+/**
  * Register a new template stack location.
  *
  * This allows for templates to live in places beyond just the parent/child
diff --git src/bp-core/classes/class-bp-oembed-component.php src/bp-core/classes/class-bp-oembed-component.php
index 4e0b9f9..99f571a 100644
--- src/bp-core/classes/class-bp-oembed-component.php
+++ src/bp-core/classes/class-bp-oembed-component.php
@@ -176,8 +176,8 @@ abstract class BP_oEmbed_Component {
 	 * @since 2.5.0
 	 */
 	protected function setup_hooks() {
-		add_action( 'rest_api_init',  array( $this, 'register_route' ) );
-		add_action( 'embed_content',  array( $this, 'inject_content' ) );
+		add_action( 'rest_api_init',    array( $this, 'register_route' ) );
+		add_action( 'bp_embed_content', array( $this, 'inject_content' ) );
 
 		add_filter( 'embed_template', array( $this, 'filter_template' ) );
 		add_filter( 'post_embed_url', array( $this, 'filter_embed_url' ) );
@@ -439,4 +439,4 @@ abstract class BP_oEmbed_Component {
 
 		$this->content();
 	}
-}
\ No newline at end of file
+}
diff --git src/bp-templates/bp-legacy/buddypress-functions.php src/bp-templates/bp-legacy/buddypress-functions.php
index c5974e2..803b6da 100644
--- src/bp-templates/bp-legacy/buddypress-functions.php
+++ src/bp-templates/bp-legacy/buddypress-functions.php
@@ -83,10 +83,11 @@ class BP_Legacy extends BP_Theme_Compat {
 
 		/** Scripts ***********************************************************/
 
-		add_action( 'bp_enqueue_scripts', array( $this, 'enqueue_styles'   ) ); // Enqueue theme CSS
-		add_action( 'bp_enqueue_scripts', array( $this, 'enqueue_scripts'  ) ); // Enqueue theme JS
-		add_filter( 'bp_enqueue_scripts', array( $this, 'localize_scripts' ) ); // Enqueue theme script localization
-		add_action( 'bp_head',            array( $this, 'head_scripts'     ) ); // Output some extra JS in the <head>.
+		add_action( 'bp_enqueue_scripts',       array( $this, 'enqueue_styles'       ) ); // Enqueue theme CSS
+		add_action( 'bp_enqueue_embed_scripts', array( $this, 'embed_enqueue_styles' ) ); // Enqueue theme Embed CSS
+		add_action( 'bp_enqueue_scripts',       array( $this, 'enqueue_scripts'      ) ); // Enqueue theme JS
+		add_filter( 'bp_enqueue_scripts',       array( $this, 'localize_scripts'     ) ); // Enqueue theme script localization
+		add_action( 'bp_head',                  array( $this, 'head_scripts'         ) ); // Output some extra JS in the <head>.
 
 		/** Body no-js Class **************************************************/
 
@@ -270,6 +271,21 @@ class BP_Legacy extends BP_Theme_Compat {
 	}
 
 	/**
+	 * Load the theme Embed CSS
+	 *
+	 * @since 2.5.0
+	 */
+	public function embed_enqueue_styles() {
+		$min = defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ? '' : '.min';
+
+		wp_enqueue_style( 'bp-embeds-css', bp_locate_template_asset_uri( "assets/embeds/css/style{$min}.css" ), array(), $this->version, 'screen' );
+
+		if ( $min ) {
+			wp_style_add_data( 'bp-embeds-css', 'suffix', $min );
+		}
+	}
+
+	/**
 	 * Enqueue the required JavaScript files
 	 *
 	 * @since 1.7.0
diff --git src/bp-templates/bp-legacy/buddypress/assets/embeds/activity.php src/bp-templates/bp-legacy/buddypress/assets/embeds/activity.php
index 1fdae1a..8fa909f 100644
--- src/bp-templates/bp-legacy/buddypress/assets/embeds/activity.php
+++ src/bp-templates/bp-legacy/buddypress/assets/embeds/activity.php
@@ -2,7 +2,10 @@
 		<?php if ( bp_has_activities( 'display_comments=threaded&show_hidden=true&include=' . bp_current_action() ) ) : ?>
 
 			<?php while ( bp_activities() ) : bp_the_activity(); ?>
-				<div class="wp-embed-excerpt"><p><?php bp_activity_embed_excerpt(); ?></p></div>
+
+				<?php do_action( 'bp_activity_embed_before_content' ); ?>
+
+				<div class="wp-embed-excerpt"><?php bp_activity_embed_excerpt(); ?></div>
 
 				<p class="wp-embed-timestamp"><a href="<?php bp_activity_thread_permalink(); ?>"><?php echo date_i18n( get_option( 'time_format' ) . ' - ' . get_option( 'date_format' ), strtotime( bp_get_activity_date_recorded() ) ); ?></a></p>
 
diff --git src/bp-templates/bp-legacy/buddypress/assets/embeds/css.php src/bp-templates/bp-legacy/buddypress/assets/embeds/css.php
deleted file mode 100644
index beaa782..0000000
--- src/bp-templates/bp-legacy/buddypress/assets/embeds/css.php
+++ /dev/null
@@ -1,34 +0,0 @@
-<style type="text/css">
-#wp-embed-header:after {
-	clear: both;
-	content: "";
-	display: table;
-	margin-bottom: 1em;
-}
-
-.wp-embed-avatar {
-	float: left;
-	margin: 0 .75em 0 0;
-}
-
-p.wp-embed-heading {
-	font-size: 16px;
-	margin-bottom: 0;
-}
-
-.wp-embed-excerpt, p.wp-embed-timestamp {
-	margin-bottom: .5em;
-}
-
-.activity-read-more {
-	margin-left: .5em;
-}
-
-.activity-read-more a {
-	color: #b4b9be;
-}
-
-.wp-embed-footer {
-	margin-top: 20px;
-}
-</style>
\ No newline at end of file
diff --git src/bp-templates/bp-legacy/buddypress/assets/embeds/css/style.css src/bp-templates/bp-legacy/buddypress/assets/embeds/css/style.css
index e69de29..7737744 100644
--- src/bp-templates/bp-legacy/buddypress/assets/embeds/css/style.css
+++ src/bp-templates/bp-legacy/buddypress/assets/embeds/css/style.css
@@ -0,0 +1,32 @@
+#wp-embed-header:after {
+	clear: both;
+	content: "";
+	display: table;
+	margin-bottom: 1em;
+}
+
+.wp-embed-avatar {
+	float: left;
+	margin: 0 .75em 0 0;
+}
+
+p.wp-embed-heading {
+	font-size: 16px;
+	margin-bottom: 0;
+}
+
+.wp-embed-excerpt, p.wp-embed-timestamp {
+	margin-bottom: .5em;
+}
+
+.activity-read-more {
+	margin-left: .5em;
+}
+
+.activity-read-more a {
+	color: #b4b9be;
+}
+
+.wp-embed-footer {
+	margin-top: 20px;
+}
diff --git src/bp-templates/bp-legacy/buddypress/assets/embeds/template.php src/bp-templates/bp-legacy/buddypress/assets/embeds/template.php
index 599c283..eb488e7 100644
--- src/bp-templates/bp-legacy/buddypress/assets/embeds/template.php
+++ src/bp-templates/bp-legacy/buddypress/assets/embeds/template.php
@@ -25,21 +25,24 @@ if ( ! headers_sent() ) {
 	<title><?php echo wp_get_document_title(); ?></title>
 	<meta http-equiv="X-UA-Compatible" content="IE=edge">
 	<base target="_top" />
+
 	<?php
 	/** This action is documented in wp-includes/embed-template.php */
-	do_action( 'embed_head' );
+	do_action( 'embed_head' ); ?>
 
-	// This is used by r-a-y for testing purposes at the moment.
-	bp_get_asset_template_part( 'embeds/css' );
-	?>
 </head>
 <body <?php body_class(); ?>>
 <div <?php post_class( 'wp-embed' ); ?>>
+
 <?php
 bp_get_asset_template_part( 'embeds/header', bp_current_component() );
 
-/** This action is documented in wp-includes/embed-template.php */
-do_action( 'embed_content' );
+/**
+ * Print the content for the BuddyPress Embed object.
+ *
+ * @since 2.5.0
+ */
+do_action( 'bp_embed_content' );
 
 bp_get_asset_template_part( 'embeds/footer', bp_current_component() );
 ?>
@@ -51,4 +54,4 @@ bp_get_asset_template_part( 'embeds/footer', bp_current_component() );
 do_action( 'embed_footer' );
 ?>
 </body>
-</html>
\ No newline at end of file
+</html>
