Index: wp-includes/media.php
===================================================================
--- wp-includes/media.php	(revision 24416)
+++ wp-includes/media.php	(working copy)
@@ -850,13 +850,19 @@ function wp_audio_shortcode( $attr ) {
 	$audio = null;
 
 	$default_types = wp_get_audio_extensions();
-	$defaults_atts = array( 'src' => '' );
+	$defaults_atts = array(
+		'src' => '',
+		'id' => ''
+	);
 	foreach ( $default_types as $type  )
 		$defaults_atts[$type] = '';
 
 	$atts = shortcode_atts( $defaults_atts, $attr, 'audio' );
 	extract( $atts );
 
+	if ( $id ) // if 'id' is set, use that, and ignore 'src'
+		$src = wp_get_attachment_url( $id );
+
 	$primary = false;
 	if ( ! empty( $src ) ) {
 		$type = wp_check_filetype( $src );
@@ -952,6 +958,7 @@ function wp_video_shortcode( $attr ) {
 	$default_types = wp_get_video_extensions();
 	$defaults_atts = array(
 		'src' => '',
+		'id' => '',
 		'poster' => '',
 		'height' => 360,
 		'width' => empty( $content_width ) ? 640 : $content_width,
@@ -963,6 +970,9 @@ function wp_video_shortcode( $attr ) {
 	$atts = shortcode_atts( $defaults_atts, $attr, 'video' );
 	extract( $atts );
 
+	if ( $id ) // if 'id' is set, use that, and ignore 'src'
+		$src = wp_get_attachment_url( $id );
+
 	$w = $width;
 	$h = $height;
 	if ( is_admin() && $width > 600 )
