Audio / Video support in Core
Post Formats are a big feature in WordPress 3.6. What you may not know is: there is now native support for Audio and Video in core! There has been great support for embeds by way of WP_Embed and oEmbed providers for a while, but, if you wanted to play an MP3 from your Media Library, you had to install a plugin. Supporting audio and video in core gives bands, podcasters, vloggers, et al the ability to easily and beautifully expresses themselves through sounds and moving pictures without using an external service.
How does this work?
At the core of the experience is the fantastic library, MediaElement.js. MediaElement is the facade layer that gives us maximum file support and cross-browser compatibility. While some libraries require a Flash-only solution to make your media work cross-environment, MediaElement lets you use HTML5 audio / video tags in every browser, and, only when necessary, will use a Flash or Silverlight plugin in the background to make incompatible media work. Translation, things like this: <audio> tag works in old IE, Windows Media files work in Chrome.
MediaElement uses the same HTML markup, regardless of playback implementation, and you can use CSS to skin the players.
Shortcodes
MediaElement’s great, but we don’t want to be locked in to one external library forever. Instead of using MediaElement-specific markup everywhere, we expose audio and video markup through shortcodes: [audio] and [video].
For the following scenarios:
- I have an old post that has a video in the Media Library attached to it, and I want to use the new shortcode:
[video] - I have the URL for a video, from the Media Library or external, that I want to play:
[video src="video-source.mp4"] - I have a source URL and fallbacks for other HTML5-supported filetypes:
[video width="600" height="480" mp4="source.mp4" ogv="source.ogv" webm="source.webm"]
Same goes for audio:
- I have an old post that has an audio file in the Media Library attached to it, and I want to use the new shortcode:
[audio] - I have the URL for an MP3, from the Media Library or external, that I want to play:
[audio src="audio-source.mp3"] - I have a source URL and fallbacks for other HTML5-supported filetypes:
[audio mp3="source.mp3" ogg="source.ogg" wav="source.wav"]
Shortcodes focus on the “what” and abstract the “how.” If you want to use a library that is not MediaElement, you can! Just look at what to filter: here
Embeds
There are also new embed handlers for audio and video. Using them is easy as dropping a media link on a line by itself in the editor:
http://my.mp3s.com/cool/songs/coolest.mp3 I like this song because it is really cool!
Works for both audio and video with URLs matching the allowed (and filterable) list of extensions (see: here and here)
Admin
Using the new post formats UI, it is even easier to get directly at the audio and video in your Media Library. When selecting, the media modal opens to your library, filtered by media type.
Metadata
In previous versions of WP, you could upload audio and video, but we were not generating metadata like we do for images. In 3.6, using the getID3 library, we are able to extract data from audio and video like cover art, song length, artist, album, song title, genre, codec, etc. It’s pretty great. We will soon be exposing more of this data in the admin as well, along with inline previews on the Edit Media page:

Themers
Themers can get in on the action, too, using structured-post-formats in their theme (Twenty Thirteen is a great place to look). The admin gives users flexibility when associating media with a post. the_post_format_audio() and the_post_format_video() will automagically retrieve and output your media in the front end.







sourceforge 10:09 pm on April 8, 2013 Permalink | Log in to Reply
thank you, is this the html5 vid player? looks good, newer java based audio player is also needed, flash is always prone to attacks
Manny Fleurmond 10:11 pm on April 8, 2013 Permalink | Log in to Reply
How does this handle m4a files?
Samuel Wood (Otto) 11:24 pm on April 8, 2013 Permalink | Log in to Reply
Just fine. You’ll find that m4a is one of the supported audio extensions, and is supported by MediaElement.
Konstantin Obenland 10:59 pm on April 8, 2013 Permalink | Log in to Reply
The attentive reader might have noticed how the buffer- and play-time-bars in the first and second screenshot have different colors.
Themes can style these elements of the players. The first example is a screenshot from Twenty Thirteen, with a white buffer bar, an orange play time bar and no border-radius.
John Saddington 11:11 pm on April 8, 2013 Permalink | Log in to Reply
this is fantastic. john dyer’s MEJS is amazing.
AK Ted 11:32 pm on April 8, 2013 Permalink | Log in to Reply
This is great news! Can’t wait for stable to play with, no time atm for beta.
Small grammar correction: “ability to easily and beautifully expresses themselves” (in first paragraph), should be “express”.
Michael Beckwith 11:51 pm on April 8, 2013 Permalink | Log in to Reply
That’s pretty hot
Ipstenu (Mika Epstein) 1:07 am on April 9, 2013 Permalink | Log in to Reply
What’s the fallback? Like if I use
and they don’t allow for HTML5 (yes, I have people who don’t), what shows? Right now I made an html5video shortcode that has, at the bottom ‘Can’t see a video? Click here…’ and it defaults to the MP4.Scott Taylor 2:47 am on April 9, 2013 Permalink | Log in to Reply
I am pretty sure MP4 will win and play via Flash. If no flash and no HTML5, there will be a link that goes straight to the file.
Jon Brown 1:09 am on April 9, 2013 Permalink | Log in to Reply
Not sure how I missed this on trac, but “YAY!!! & Oh No!!!!”.
I just spent a month (not continuously) trying to figure out why MediaElements.js conflicted with Soliloquy (Flex based Slider) when both appeared on the same page on mobile. Only on mobile, everything worked fine everywhere else. I finally gave up, ditched ME.js for Video.js.
I’m now about to test that site on 3.6 just out of curiosity as to what happens.
I too really dislike this using shortcodes and my bigger concern is what this does to other plugins that use the shortcode already.
Always seemed to me WP ought to follow best naming practices and use [wp_gallery], [wp_video], etc…
Jon Brown 1:26 am on April 9, 2013 Permalink | Log in to Reply
That was easy to test… still conflicting somehow. I’ve let Thomas know with urls to dev/staging/live servers showing it all. It’s really bizzare that it only happens on mobile browsers (iOS chrome and safari) anbd throws no errors. Either works fine on it’s own, and we’ve recreated it on vanila WP running 2010.
Beau Lebens 1:42 am on April 9, 2013 Permalink | Log in to Reply
<3
Tomas 4:01 am on April 9, 2013 Permalink | Log in to Reply
WoW! This is good news!
Robert Chapin (miqrogroove) 1:48 pm on April 9, 2013 Permalink | Log in to Reply
That’s hot!
redwallhp 10:35 pm on April 9, 2013 Permalink | Log in to Reply
Awesome! The assimilation of the Crowd Favorite post format UI and MediaElement.js support in one version.
Frank 10:46 am on April 10, 2013 Permalink | Log in to Reply
Yeah, this is cool. And I miss some important points to have this as a useable feature for real blogger’s life: mejs is out of the box not resonsible and this allone makes the joy half at the first glance. Yes, there is a dev’s tip for videos out there, that, if you set the width to “100%” it will work. And it does, indeed! Maybe this width issue of mejs videos should go into core?
Responsive mejs audio seems to be more complicated. A simple width attribute setting does not work. At this time the width of the audio bar overlaps the standard width of 480 even in modern smartphones.
Regarding video: the poster attribute of the shortcode is rather important, since it leeds to a screenshot like above, showing this nice preview picture for the video – but it’s not as easy to implement as it looks like. If you take an image from the media library with its predefinded sizes, it is to small or you’ll have an overlapping picture. For me setting the CSS class “mejs-container” to “overflow: hidden;” seems to resolve the issue as a quick hack.
I think, the feature of having core supported video and audio is great, and it should be delivered in a way, that avoids frustration of users. The poster feature for videos is essential I think, the contra responsive issues should disappear as well.
Keep up the good work!
Eric Andrew Lewis 11:18 am on April 10, 2013 Permalink | Log in to Reply
Totally wow.
hearvox 12:22 am on April 11, 2013 Permalink | Log in to Reply
any hooks yet for skinning the default MEjs player?
Mark Jaquith 2:52 am on April 11, 2013 Permalink | Log in to Reply
See how Twenty Thirteen does it.
hearvox 4:53 am on April 11, 2013 Permalink | Log in to Reply
nice: looks like all elements of the player are CSS targetable via a slew of mejs-… classes.
rilwis 2:22 pm on April 11, 2013 Permalink | Log in to Reply
This feature is really great and useful for all people. I’ve been using MEjs and it’s really great. Nice UI, great support.
johndyer 10:48 pm on April 11, 2013 Permalink | Log in to Reply
So glad to hear it! Glad to have “contributed”
Maor Chasen 6:15 pm on April 12, 2013 Permalink | Log in to Reply
Love!
Anderton 9:06 am on April 15, 2013 Permalink | Log in to Reply
Have been playing around with it while developing a couple of themes for 3.6. It’s lovely, and easy to style. Have been using MediaElements,js before, and when i found out that it would be included in the Core, i was thrilled. Good move!
Bjarni Wark 10:25 pm on April 16, 2013 Permalink | Log in to Reply
Really good news, thanks for the efforts of making this happen.
Maeve Lander 4:58 am on April 17, 2013 Permalink | Log in to Reply
Just wondering how will this affect existing audio/video plugins? Any potential problems, conflicts, things plugin developers could do better to integrate with this etc?
esmi 7:49 pm on April 17, 2013 Permalink | Log in to Reply
I have to say, I’m really disappointed that there’s no mechanism for people to add captions for videos or provide text transcripts with audio files. come on, people! We need to be encouraging people to do this kind of stuff but unless WordPress provides the methods, it just won’t happen.
Scott Taylor 7:57 pm on April 17, 2013 Permalink | Log in to Reply
#patcheswelcome
Ipstenu (Mika Epstein) 8:18 pm on April 17, 2013 Permalink | Log in to Reply
Speaking as someone totally ignorant of this, how DO you add captions to videos? Can I include a transcript.txt file like I do for different video versions?
Joe Dolson 11:26 pm on April 17, 2013 Permalink | Log in to Reply
There are various formats for captions, but yes, essentially it amounts to referencing a text file with captions. Mediaelement.js supports .srt and .vtt caption formats, and they’re referenced as
In this context, you should treat the terms ‘subtitles’ and ‘captions’ synonymously, although technically they are different.
All the WP system needs to do for captions is provide a mechanism to upload them and auto-generate the relevant track elements, basically.
Joe Dolson 11:27 pm on April 17, 2013 Permalink | Log in to Reply
Damn. Lost the code. Go to http://mediaelementjs.com and you can see it there…
esmi 8:11 pm on April 17, 2013 Permalink | Log in to Reply
We’ve only just picked this up in the make.wordpress.accessible group but, yes, we will be trying to come up with some patches if we can
FranciscoAMK 8:19 pm on April 21, 2013 Permalink | Log in to Reply
Is the featured image set as the “poster” for the video post format?