Feb 242017
 

Firefox + HTML5 + XP logo1.) Introduction & Explanation

This is one thing that has brought to me by two users ([SK1] on [Voodooalert]German flag and [liquidLD] who talked to me about this on IRC), and because I got a bit pissed off by it myself, I decided to look into the matter. Basically, HTML5 video on Windows XP / XP x64. But not just with webm (VP8/VP9), but also with H.264/AVC. Let’s face it, a lot of videos on the web rely on H.264 and sometimes you simply can’t watch certain videos or you won’t get all the available resolutions. Of course you could just rely on Adobe Flash, but since Google basically took over with their Pepperflash plugin and their Chrome browser no longer supports XP, it’s not the best move either. Especially when you think about Adobes’ history with critical security loopholes in Flash. HTML5 is just much, much safer, and free as well, and Firefox still supports XP.

Note that this guide is thus based on Firefox exclusively. Anything starting with version 47 should work, official support came in 49, and I’ll be using the current version, 51.0.1 at the time of writing.

So, why doesn’t it “just work” in the first place? It did a few years back, right? Because H.264 playback relies on a DRM plugin, on Linux it would be the Google Widevine plugin, on Windows it’s the Adobe Primetime plugin. So yes, Firefox does support DRM out of the box. But even if content isn’t signed and encrypted, the browser still relies on those plugins to play H.264. And the problem is, that Adobe found some problems with that plugin on XP, so they disabled support on the platform. Their version 17 plugin is still being rolled out with the browser however, and it is binary-compatible with XP, so let’s show you how to re-enable it!

2.) Making it work

On Windows XP and XP x64, the plugin should reside in the folder:

%USERPROFILE%\Application Data\Mozilla\Firefox\Profiles\<your profile folder>\gmp-eme-adobe\17\

That folder should contain the files eme-adobe.dll, eme-adobe.info and eme-adobe.voucher. If it doesn’t (maybe because you have a DRM-free version of Firefox), just create the folder structure yourself, get the necessary files from [here] and place them in that folder.

Having the files present won’t enable Adobe Primetime for you however as you can see on about:plugins (Note: The Cisco stuff you can see there is just for WebRTC, so it’s unusable for HTML5 <video>), we still need to tweak a few things on the about:config page of Firefox. Look for the following properties and set them to the values shown below. If a property doesn’t exist yet – media.gmp-eme-adobe.forceSupported most likely won’t – just create them yourself, all of them are boolean properties and all of them need to be set to true:

media.gmp-eme-adobe.enabled		true
media.gmp-eme-adobe.forceSupported	true
media.gmp-eme-adobe.visible		true
media.gmp.decoder.enabled		true
media.eme.enabled			true
media.mediasource.mp4.enabled		true
media.mp4.enabled			true

After making those changes, you’ll need to restart Firefox. Now you might already be good to go, but on some configurations, about:plugins might show something like this:

HTML5+H.264 on Firefox not yet working

Adobe Primetime seems enabled, but there is no file information? So it’s not actually loading the eme-adobe.dll yet (click to enlarge)

If that happens, open your preferences menu on the top right, click on “Add-ons”, then “Plugins” or just go to about:addons. What you should be seeing is this:

 

However, if Adobe Primetime shows a notice saying that it’s going to be “installed shortly”, forget it. Just do it manually on the plugins’ options page you can see on the right image. To do so, click “Check for Updates”. The warning should be gone momentarily. After that, re-check about:plugins, and you should be getting this:

Adobe Primetime fully enabled

Adobe Primetime fully enabled (click to enlarge)

3.) Testing

Now you can do a quick check on the [Youtube HTML5 page], and it should confirm that everything’s working:

Youtube confirming full HTML5 video support

Youtube confirming full HTML5 video support including H.264 and Media Source Extensions (click to enlarge)

With MSE, even Javascript players (like the Flowworks player) bytestreaming H.264 to Firefox should work! Of course, that’s not very thorough. What you’d want is a real playback test, since you can never be sure what you’re getting on Youtube without a bit of extra work. Decent playback tests are currently available on [Quirksmode], and it should look like this:

Firefox playing HTML5 H.264/AVC video in Firefox on Windows XP x64

Firefox playing HTML5 H.264/AVC video on Windows XP x64 (click to enlarge)

With this, even stuff like Netflix works, because you’re getting not just H.264 playback, but also DRM support. Now, whether DRM support is a good thing or not… You’ll have to decide that for yourself. I’m not supportive of DRM content on the web, but if you want to view or listen to such content, you can!

Just one last word of warning though: Adobe has ended their support for XP with a reason, as the Primetime content decryption plugin has shown problems and instabilities on XP! I’ve been using this for about a week now, and I’ve had one case of a video getting stuck, which is a typical symptom of Primetime throwing up on you. Don’t worry though, Firefox won’t crash. Just move the video slider a bit or restart the video, and it’ll work again! You don’t even need to restart the browser, and such occurrences seem to be quite rare, so I’m fine with it.

There you go!

4.) Thanks

Big thanks fly out to [the guys at MSFN] who came up with all of this. I basically got 100% of my information from them, so thank you! You rock! :)

Update: If you update your version of Firefox to the latest and final 52.0 ESR (extended support release), the last version which will be officially supported until 09-2017 for XP, you might notice that Adobe Primetime just disappeared after the update. That’s because the installer may delete the property media.gmp-eme-adobe.visible from your prefs.js. To reenable it, you’ll have to manually recreate the boolean property and set it to true:

media.gmp-eme-adobe.visible		true

Restart Firefox after the change, and the plugin should reappear on about:plugins and about:addons!

CC BY-NC-SA 4.0 How to make HTML5 H.264/AVC video work on Windows XP/XP x64 (using Firefox) by The GAT at XIN.at is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.

  14 Responses to “How to make HTML5 H.264/AVC video work on Windows XP/XP x64 (using Firefox)”

  1. Wasn’t adobe primetime removed for some reason? I do remember reading about it being already old hat, or something.

    • It’s been replaced with Google Widevine recently for Firefox as well, yes. My version 53.0.2 on Windows 7’s already using it. Problem is, Widevine just won’t work on Firefox 52 ESR on XP x64, and I have no idea why. I even checked the headers of the widevinecdm.dll, but it says it’s compiled for NT5.1, so XP 32-bit. No idea.

      FireFox 52 ESR still comes with Adobe PrimeTime on Windows anyway, and it’s the only solution I know of that’s working at all. Just needs a bit of persuasion to load. Maybe somebody can shed some light on why Widevine refuses to run? My FF configuration on about:config is identical on both Win7 and XP x64 and it’s the same Widevine version as well… Maybe Widevine just refuses to load in FF 52 ESR?!

      • I really don’t think my 52 ESR came with adobe primetime. I’d have to check a fresh-installed pc-for-home, because my settings at work turn off all that drm.

        There was no XP x64 N version, otherwise I would look there. XP N was great, but W7 N has stupid issues. You can’t install the windows mobile sync software because of missing media shite. Great. Netflix doesn’t work in firefox because of missing media features.

        Have you tried this program? http://www.dependencywalker.com/
        I uhhh, I don’t have any XP x64 in the house any more. I replaced my computer at work just two weeks ago. Some things are better, some things just suck with W7. And W7 is even hard to install with a recent motherboard. Only xhci (usb3), nvme drive, etc.

        • I’ve used Dependency Walker before, but not for this problem, no. I probably should, huh?

          Also, it might be that FF52 ESR didn’t come with Adobe Primetime, but it can be downloaded independently and made to work with the browser just fine. Huh, guess I should’ve provided a download link for that, eh? Well, it’s almost 1am now, so… no! ;)

        • Hey again,

          Alright, I ran the 32-bit widevinecdm.dll through both the 32-bit as well as the 64-bit Dependency Walker in version 2.2.6000 on Windows 7 x64 (where Widevine works) as well as XP x64 (where it does not). I am using a 32-bit version of Firefox on both systems and as said, the FF configurations related to Widevine are identical. The XP x64 version of FF also has Adobe Primetime up and running, which shouldn’t hurt.

          I’ve exported the outputs as .dwi images as well as .csv files for you to read, and I’ve also attached the Widevine library I’m using for this, it’s version 1.4.8.903. Here are the files:

          In essence, what I got was this:

          Windows 7 x64 SP1:

          Missing files:

          • API-MS-WIN-CORE-WINRT-ERROR-L1-1-0.DLL
          • API-MS-WIN-CORE-WINRT-L1-1-0.DLL
          • API-MS-WIN-CORE-WINRT-ROBUFFER-L1-1-0.DLL
          • API-MS-WIN-CORE-WINRT-STRING-L1-0.DLL
          • DCOMP.DLL
          • GPSVC.DLL (Only with 32-bit DW)
          • IESHIMS.DLL

          Errors & warnings:

          Error: Modules with different CPU types were found. (Only with 64-bit DW)
          Warning: At least one delay-load dependency module was not found.
          Warning: At least one module has an unresolved import due to a missing export function in a delay-load dependent module.

          Windows XP Professional x64 Edition SP2:

          Missing files:

          • DEVMGR.DLL (Only with 32-bit DW)
          • IESHIMS.DLL
          • WER.DLL

          Errors & warnings:

          Error: Modules with different CPU types were found. (Only with 64-bit DW)
          Warning: At least one delay-load dependency module was not found.
          Warning: At least one module has an unresolved import due to a missing export function in a delay-load dependent module.

          Maybe you can make something of all this?

          • I thought you were the expert :-p

            Almost every file I tried is missing the ieshims.dll, so that’s probably nothing. I don’t think there’s anything missing on this level. It could be loads of things. Loose guesses: DirectX 9, .net lamework 3.5 (only needed for the evr.dll, that enhanced video renderer). Uhm, not a great help, eh? ;-)

            • Pfh, no idea. It seems Win7 is missing even more stuff than XP x64?! ;)

              Well, DEVMGR.DLL is a library for accessing the Windows device manager, not sure why Widevine would want that?! Maybe to look for a GPU / hardware video decoder? The weird thing: My VM doesn’t have that file, but my native XP x64 workstation does. I just copied it over, and DW now doesn’t report it as missing any longer, but its a bitness mismatch. I only seem to have a 64-bit version of this library, nothing in %WINDIR%\SysWOW64\.

              Ok, so I copied it from a 32-bit XP / POSReady2009 machine, and put it right next to widevinecdm.dll, which stops the complaining. Links properly it seems.

              Still, that didn’t do the trick at all. The other two libraries are for Internet Explorer shims and Windows error reporting for Vista+, and one of them depends on ncrypt.dll which itself depends on bcrypt.dll, both of which require API functions simply not present on XP / XP x64 (I just tried it with the 32-bit Vista DLLs). And WER.DLL is the same. The whole modern error reporting system just isn’t there after all.

              And here’s where I’m gonna stop, I think that’s a really good point to stop trying! ;) :roll:

            • Hmm, instead of the Widevine Content Decryption Module I tried the Widevine Media Optimizer instead, from the [Widevine website], accessing the site with FF on Windows. Since the codesigning signature of the plugin is somehow not right, you can’t install it (Firefox says it’s “corrupted”) right away, but that can easily be circumvented. By changing the following flags on about:config, as shown:

              xpinstall.signatures.required  [boolean]  false
              xpinstall.whitelist.required   [boolean]  false

              With those set to false, the Widevine Media Optimizer can be installed from there, and its npwidevinemediaoptimizer.dll does load, showing version 6.0.0.12757. But it doesn’t seem to play any H.264/AVC at all, nor will it decrypt any HLS or MPEG-DASH stuff (which PrimeTime partially can do on XP). I’m not even sure what it is that it’s doing. It’s supposed to support video playback as well, but I dunno… No luck with that either.

  2. Is there also a way to activate Google Widevine CDM in firefox on Windows XP?

    • I haven’t found any yet. The XPI extension from [Widevine] itself just fails to install because it’s too old, and Google never allowed the installation of Widevine on XP in the first place, at least not to my knowledge. I do not know if the plugin really contains code that won’t work on XP, but yeah… What I tried was this:

      • Download a later Widevine version from Mozilla: [Source]. (version 1.4.8.903)
      • Unpack the files into %APPDATA%\Mozilla\Firefox\Profiles\\gmp-widevinecdm\1.4.8.903\, creating the folders that do not yet exist along the way.
      • Set up the following properties on the about:config page:
        • media.gmp-widevinecdm.abi [string]      x86-msvc-x64
        • media.gmp-widevinecdm.enabled [bool]    true
        • media.gmp-widevinecdm.lastUpdate [int]  1485441970
        • media.gmp-widevinecdm.version [string]  1.4.8.903
        • media.gmp-widevinecdm.visible [bool]    true

      All to no avail unfortunately. I never got that widevinecdm.dll to load and show in Firefox… :( Maybe I’m just doing something wrong, not sure…

  3. Thanks a lot! Works great with FF 47 (32 bit) on XP64.

    • Hello nnm,

      Ah yes, from what I heard, FF 47 was the first to have unofficial support for Adobe Primetime. Good to see I wasn’t mistaken regarding that. But: I didn’t come up with that solution, so no need to thank me. Thank the guys at [MSFN]! :)

      By the way, out of curiosity, how did you find my post? This shouldn’t be ranked highly in any search engine or anything…

      • Found by googeling on firefox and XP64, then I’ve seen the title in “Recent Posts”. I tryed and to my surprise it just worked. I was looking for a solution for this problem for long time. Until now I was using Greasemonkey scripts to convert video tags to embed, but was error prone, and plugin support will be gone soon.
        Anyway, great site, bookmarked since I have no intention to upgrade to Windows 10.

        • Ah, I see.. I guess Google does give different kinds of results to different people. Well, I’m always happy to help! :)

          I’ll continue using XP x64 myself for a while (My workstation will never see a Windows 10 installation), besides the Linux and UNIX OSes. So everytime I discover something useful, I’ll share it here. Even if it’s actually somebody elses’ discovery. :P

 Leave a Reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre lang="" line="" escaped="" cssfile="">

(required)

(required)