diff --git wp-includes/media.php wp-includes/media.php
index 682ffbb..11e4c61 100644
--- wp-includes/media.php
+++ wp-includes/media.php
@@ -803,6 +803,124 @@ function gallery_shortcode($attr) {
 }
 
 /**
+ * Retrieve all attachment posts with mime-type
+ *
+ */
+function wp_get_attached_audio() {
+
+}
+
+/**
+ * The Audio shortcode.
+ *
+ * This implements the functionality of the Audio Shortcode for displaying
+ * WordPress mp3s in a post.
+ *
+ * @since 3.6.0
+ *
+ * @param array $attr Attributes of the shortcode.
+ * @return string HTML content to display audio.
+ */
+function wp_audio_shortcode( $attr ) {
+	global $content_width;
+	$post = get_post();
+
+	static $instances = 0;
+	$instances++;
+
+	$audio = null;
+
+	extract( shortcode_atts( array( 'src' => '' ), $attr ) );
+
+	if ( empty( $src ) ) {
+		$children = get_children( array(
+			'post_parent' => $post->ID,
+			'post_type' => 'attachment',
+			'post_mime_type' => 'audio',
+			'posts_per_page' => 1
+		) );
+
+		if ( empty( $children ) )
+			return;
+
+		$audio = reset( $children );
+		$src = wp_get_attachment_url( $audio->ID );
+		if ( empty( $src ) )
+			return;
+	}
+
+	wp_enqueue_style( 'wp-mediaelement' );
+	wp_enqueue_script( 'wp-mediaelement' );
+
+	$html = sprintf( '<audio class="%s" id="%s" src="%s" type="audio/mp3" controls="controls"></audio>',
+		apply_filters( 'audio_shortcode_class', 'wp-audio-shortcode' ),
+		sprintf( 'audio-%d-%d', $post->ID, $instances ),
+		esc_url( $src )
+	);
+
+	return apply_filters( 'audio_shortcode', $html, $src, $audio, $post );
+}
+add_shortcode( 'audio', 'wp_audio_shortcode' );
+
+/**
+ * The Video shortcode.
+ *
+ * This implements the functionality of the Video Shortcode for displaying
+ * WordPress mp4s in a post.
+ *
+ * @since 3.6.0
+ *
+ * @param array $attr Attributes of the shortcode.
+ * @return string HTML content to display video.
+ */
+function wp_video_shortcode( $attr ) {
+	global $content_width;
+	$post = get_post();
+
+	static $instances = 0;
+	$instances++;
+
+	$video = null;
+
+	extract( shortcode_atts( array(
+		'src' => '',
+		'width' => empty( $content_width ) ? 640 : $content_width,
+		'height' => 360
+	), $attr ) );
+
+	if ( empty( $src ) ) {
+		$children = get_children( array(
+			'post_parent' => $post->ID,
+			'post_type' => 'attachment',
+			'post_mime_type' => 'video',
+			'posts_per_page' => 1
+		) );
+
+		if ( empty( $children ) )
+			return;
+
+		$video = reset( $children );
+		$src = wp_get_attachment_url( $video->ID );
+		if ( empty( $src ) )
+			return;
+	}
+
+	wp_enqueue_style( 'wp-mediaelement' );
+	wp_enqueue_script( 'wp-mediaelement' );
+
+	$html = sprintf( '<video class="%s" id="%s" width="%d" height="%d" src="%s" type="video/mp4" controls="controls" preload="none"></video>',
+		apply_filters( 'video_shortcode_class', 'wp-video-shortcode' ),
+		sprintf( 'video-%d-%d', $post->ID, $instances ),
+		$width,
+		$height,
+		esc_url( $src )
+	);
+
+	return apply_filters( 'video_shortcode', $html, $src, $video, $post );
+}
+add_shortcode( 'video', 'wp_video_shortcode' );
+
+/**
  * Display previous image link that has the same post parent.
  *
  * @since 2.5.0
diff --git wp-includes/script-loader.php wp-includes/script-loader.php
index c8aa410..05bbb62 100644
--- wp-includes/script-loader.php
+++ wp-includes/script-loader.php
@@ -269,6 +269,9 @@ function wp_default_scripts( &$scripts ) {
 
 	$scripts->add( 'imgareaselect', "/wp-includes/js/imgareaselect/jquery.imgareaselect$suffix.js", array('jquery'), '0.9.8', 1 );
 
+	$scripts->add( 'mediaelement', "/wp-includes/js/mediaelement/mediaelement-and-player$suffix.js", array('jquery'), '2.10.1', 1 );
+	$scripts->add( 'wp-mediaelement', "/wp-includes/js/mediaelement/wp-mediaelement.js", array('mediaelement'), false, 1 );
+
 	$scripts->add( 'password-strength-meter', "/wp-admin/js/password-strength-meter$suffix.js", array('jquery'), false, 1 );
 	did_action( 'init' ) && $scripts->localize( 'password-strength-meter', 'pwsL10n', array(
 		'empty' => __('Strength indicator'),
@@ -533,6 +536,9 @@ function wp_default_styles( &$styles ) {
 	$styles->add( 'media-views', "/wp-includes/css/media-views$suffix.css", array( 'buttons' ) );
 	$styles->add( 'buttons', "/wp-includes/css/buttons$suffix.css" );
 
+	$styles->add( 'mediaelement', "/wp-includes/js/mediaelement/mediaelementplayer$suffix.css" );
+	$styles->add( 'wp-mediaelement', "/wp-includes/js/mediaelement/wp-mediaelement.css", array( 'mediaelement' ) );
+
 	foreach ( $rtl_styles as $rtl_style ) {
 		$styles->add_data( $rtl_style, 'rtl', true );
 		if ( $suffix && ! in_array( $rtl_style, $no_suffix ) )
