How to enable h264 codec on Fedora 28

If you are running Fedora 28 you might have some issues with playing some type of videos in Firefox, Chromium and Vivaldi browsers.

You might be presented with a following type of error when trying to open video stream:
H.264 (High Profile) decoder is required to play the file, but is not installed

Also when visiting https://www.youtube.com/html5 you will see that browser does not support H.264 and MSE & H.264.

Here is how to enable H.264 for specific browsers.

Firefox

First you need to install and enable rpmfusion-free and rpmfusion-nonfree repositories.
Following command will install both RPM Fusion repositories.

sudo dnf install https://download1.rpmfusion.org/{free/fedora/rpmfusion-free,nonfree/fedora/rpmfusion-nonfree}-release-$(rpm -E %fedora).noarch.rpm

After that install compat-ffmpeg28 and ffmpeg-libs packages

sudo dnf install compat-ffmpeg28 ffmpeg-libs
Chromium

Chromium supports Vorbis, Theora, WebM and HTML5 audio and video standards, but does not include the non-free AAC, H.264, MP3 or Adobe Flash code that is found in Chrome.

To add H.264 you need to install chromium-libs-media-freeworld package from RPM Fusion.

Install RPM Fusion repositories.

sudo dnf install https://download1.rpmfusion.org/{free/fedora/rpmfusion-free,nonfree/fedora/rpmfusion-nonfree}-release-$(rpm -E %fedora).noarch.rpm

Install chromium-libs-media-freeworld package.

sudo dnf install chromium-libs-media-freeworld
Vivaldi

For Vivaldi you need to follow same steps as for Chromium, and add an extra step of copying a file to Vivaldi directory.

Install RPM Fusion repositories.

sudo dnf install https://download1.rpmfusion.org/{free/fedora/rpmfusion-free,nonfree/fedora/rpmfusion-nonfree}-release-$(rpm -E %fedora).noarch.rpm

Install chromium-libs-media-freeworld package.

sudo dnf install chromium-libs-media-freeworld

Copy /usr/lib64/chromium-browser/libffmpeg.so to /opt/vivaldi/lib/.

sudo cp -av /usr/lib64/chromium-browser/libffmpeg.so /opt/vivaldi/lib/
cp: overwrite '/opt/vivaldi/lib/libffmpeg.so'? y
removed '/opt/vivaldi/lib/libffmpeg.so'
'/usr/lib64/chromium-browser/libffmpeg.so' -> '/opt/vivaldi/lib/libffmpeg.so'

Last step will need to be repeated after every Vivaldi update.

Disable Chrome stripping subdomains from URL

In version 69 of Chromium and Google Chrome default browser behavior is to enable “Omnibox UI Hide Steady-State URL Scheme and Trivial Subdomain” feature.

This will cause browser not displaying not just the protocol part of address but also what it considers trivial subdomains.
Subdomains like www or m subdomain will not be shown in address bar with this feature enabled.
This will cause www.example.com to be shown as example.com and www.m.example.www.example.com would be shown as example.example.com, like described in this issue report:

https://bugs.chromium.org/p/chromium/issues/detail?id=881410

To disable this feature open chrome://flags/#omnibox-ui-hide-steady-state-url-scheme-and-subdomains in your browser and set the flag to “Disabled”.

Version 69 has also introduced new UI design.

If you wish to revert to old design you can do so with “UI Layout for the browser’s top chrome” setting.
Input chrome://flags/#top-chrome-md in Chrome and set it to Normal to have the old UI design again.