Stylesheet being loaded outside of

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.