The two stylesheets is only loaded when a video or sound was included in a post or page and that happens after wp_head.
But do not despair! There is a filter you can use! in the code it looks like this:
apply_filters( 'style_loader_tag', "<link rel="$rel" id='$handle-css' $title href="https://wordpress.stackexchange.com/questions/115412/$href" type="text/css" media="$media" />\n", $handle );
so i wrote a function:
//add the filter
add_filter( "style_loader_tag", "change_css_links", 10, 2 );
// Function for the filter
function change_css_links($css, $handle){
//load global styles to get src
global $wp_styles;
//check if it is the correct style
if($handle == "mediaelement" || $handle == "wp-mediaelement"){
//if it is: do awesome stuff
// get all info for the css in array
$css_info = $wp_styles->registered[$handle];
//the array looks like this:
/*
[mediaelement] => _WP_Dependency Object
(
[handle] => mediaelement
[src] => /wp-includes/js/mediaelement/mediaelementplayer.min.css
[deps] => Array
(
)
[ver] => 2.13.0
[args] =>
[extra] => Array
(
)
)
*/
// do the awesome
$css = "your new and awesome link element!";
}
//return the new or old awesome!
return $css;
}
Or you can deregister the styles and load them on every page.