Index: src/wp-includes/formatting.php
===================================================================
--- src/wp-includes/formatting.php	(revision 26977)
+++ src/wp-includes/formatting.php	(working copy)
@@ -242,6 +242,9 @@
 		$pee = preg_replace('|\s*<param([^>]*)>\s*|', "<param$1>", $pee); // no pee inside object/embed
 		$pee = preg_replace('|\s*</embed>\s*|', '</embed>', $pee);
 	}
+	if ( preg_match( '|[\[<]video|', $pee ) ) {
+		$pee = preg_replace( '#\s*<(track|source)([^>]*)>\s*#', '<$1$2>', $pee ); // no pee inside video tag/shortcode
+	}
 	$pee = preg_replace("/\n\n+/", "\n\n", $pee); // take care of duplicates
 	// make paragraphs, including one at the end
 	$pees = preg_split('/\n\s*\n/', $pee, -1, PREG_SPLIT_NO_EMPTY);
@@ -258,6 +261,7 @@
 	$pee = preg_replace('!(</?' . $allblocks . '[^>]*>)\s*</p>!', "$1", $pee);
 	if ( $br ) {
 		$pee = preg_replace_callback('/<(script|style).*?<\/\\1>/s', '_autop_newline_preservation_helper', $pee);
+		$pee = preg_replace_callback('/[\[<]video.*?[\[<]\/video[\]>]/s', '_autop_newline_preservation_helper', $pee);
 		$pee = preg_replace('|(?<!<br />)\s*\n|', "<br />\n", $pee); // optionally make line breaks
 		$pee = str_replace('<WPPreserveNewline />', "\n", $pee);
 	}
Index: tests/phpunit/tests/media.php
===================================================================
--- tests/phpunit/tests/media.php	(revision 26977)
+++ tests/phpunit/tests/media.php	(working copy)
@@ -346,4 +346,41 @@
 		$matches = get_media_embedded_in_content( $content, $types );
 		$this->assertEquals( $contents, $matches );
 	}
+
+	function test_video_shortcode_body() {
+		$width = 640;
+		$height = 360;
+
+		$video =<<<VIDEO
+[video width="640" height="360" mp4="http://wordpress-core-develop/wp-content/uploads/2013/12/XVMwB.mp4"]
+<!-- WebM/VP8 for Firefox4, Opera, and Chrome -->
+<source type="video/webm" src="myvideo.webm" />
+<!-- Ogg/Vorbis for older Firefox and Opera versions -->
+<source type="video/ogg" src="myvideo.ogv" />
+<!-- Optional: Add subtitles for each language -->
+<track kind="subtitles" src="subtitles.srt" srclang="en" />
+<!-- Optional: Add chapters -->
+<track kind="chapters" src="chapters.srt" srclang="en" />
+[/video]
+VIDEO;
+
+		$w = $GLOBALS['content_width'];
+		$h = ceil( ( $height * $w ) / $width );
+
+		$content = apply_filters( 'the_content', $video );
+
+		$expected = '<div style="width: ' . $w . 'px; max-width: 100%;" class="wp-video">' .
+				'<!--[if lt IE 9]><script>document.createElement(\'video\');</script><![endif]-->
+<video class="wp-video-shortcode" id="video-0-1" width="' . $w . '" height="' . $h . '" preload="metadata" controls="controls">' .
+'<source type="video/mp4" src="http://wordpress-core-develop/wp-content/uploads/2013/12/XVMwB.mp4" />' .
+'<!-- WebM/VP8 for Firefox4, Opera, and Chrome --><source type="video/webm" src="myvideo.webm" />' .
+'<!-- Ogg/Vorbis for older Firefox and Opera versions --><source type="video/ogg" src="myvideo.ogv" />' .
+'<!-- Optional: Add subtitles for each language --><track kind="subtitles" src="subtitles.srt" srclang="en" />' .
+'<!-- Optional: Add chapters --><track kind="chapters" src="chapters.srt" srclang="en" />' .
+'<a href="http://wordpress-core-develop/wp-content/uploads/2013/12/XVMwB.mp4">' .
+'http://wordpress-core-develop/wp-content/uploads/2013/12/XVMwB.mp4</a></video></div>
+';
+
+		$this->assertEquals( $expected, $content );
+	}
 }
