Do more on the web, with a fast and secure browser!

Download Opera browser with:

  • built-in ad blocker
  • battery saver
  • free VPN
Download Opera

FFMPEG installation instructions

  • Currently, Opera on Linux (for example, Ubuntu or OpenSUSE distributions) cannot play h264 videos by default.

    For example, consider this YouTube video, which happens to be served with the h264 codec:

    https://www.youtube.com/watch?v=g754dlVxdQU

    0_1548010968022_screenshot-20-02-41.png

    0_1548010903142_screenshot-20-00-19.png

    This is really a big downside - for many users, YouTube is a heavily used service, and everybody plays videos on websites every once in a while. There should be a relatively smooth method of making this work.

    I understand that not including the proper ffmpeg libraries in the distribution is a result of licensing issues, but could you please include clear, up-to-date instructions (for each release) on the Opera website about:

    • Where to download ffmpeg libraries.
    • How to install them so that they work with Opera.
    • Anything else that is needed to make this work.

    A multitude of different how-tos exists on the web, but most of it is outdated, or does not work.

  • Note that you need the correct version; most distros will list several versions which you must choose from based on the version of Chromium that Opera uses. That is the hard part.

  • You put the libffmpeg.so you download at "/usr/lib/x86_64-linux-gnu/opera/lib_extra/libffmpeg.so". If you haven't created the "lib_extra" folder yet, you'll need to create it first. You're not supposed to replace the libffmpeg.so that's included with Opera. Leave that one alone and let Opera update it when it needs to.

    For what one you download, you have to goto the URL opera://about and take note of the Chromium major version. Then, you can search for and find a libffmpeg.so that's built for that major version of Chromium. Don't install any packages or anything, which might interfere with other programs. Find the file in a tar.gz file for example, extract it and put it in the lib_extra folder.

    Then, you'll be good to go until Opera jumps to a new major version of Chromium. When that happens, you repeat the steps and replace the libfmpeg.so in the lib_extra folder with the new one.

    As for where to find the right ffmpeg, try https://repo.herecura.eu/herecura/x86_64/ There are Vivaldi and Opera ones for Chromium 71 and Opera ones for Chromium 72. I think these get updated. You might also try http://security.ubuntu.com/ubuntu/pool/universe/c/chromium-browser/.

    As for widevine installation, I'm not sure.

  • Thank you for the instructions!

    From what I can tell, I seem to have Chromium version 70:

    Browser identification
    Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36 OPR/57.0.3098.116

    I tried extracting both the libffmpeg.so file from version 69 and from the version 71 (extracted from the Ubuntu repos with deb files):

    chromium-codecs-ffmpeg_69.0.3497.100-0ubuntu1_amd64.deb
    chromium-codecs-ffmpeg_71.0.3578.98-0ubuntu0.18.04.1_amd64.deb

    I copied both the the said path:

    $ sudo ls -la /usr/lib/x86_64-linux-gnu/opera/lib_extra/
    Mo 21 Jan 2019 19:48:47 CET
    total 1980
    drwxr-xr-x 2 root root 4096 Jan 21 19:48 .
    drwxr-xr-x 6 root root 4096 Jan 20 17:32 ..
    -rw-r--r-- 1 root root 2015256 Jan 21 19:48 libffmpeg.so

    Neither of those 2 versions of seems to work (Opera was restarted, and I checked the process list after turning Opera off and on).

    Edit: I also tried https://repo.herecura.eu/herecura/x86_64/opera-beta-ffmpeg-codecs-71.0.3578.98-1-x86_64.pkg.tar.xz

    Edit: I also tried https://launchpad.net/ubuntu/cosmic/amd64/chromium-codecs-ffmpeg-extra/70.0.3538.110-0ubuntu0.18.10.1

  • Apparently, these help:

    https://github.com/iteufel/nwjs-ffmpeg-prebuilt/releases/tag/0.31.5

    Thank you for your instructions again.

    I still find it strange that I'd have to download a random so file from some guy's GitHub repo, and sudo-copy that into my usr folders.
    Which version of libffmpeg.so do the Opera developers use when they build and test their software?
    Do they download it from somewhere, or build it from source?
    Why couldn't we (the Opera users) do the same after installing Opera?

  • @alexprokopec said in FFMPEG installation instructions:

    From what I can tell, I seem to have Chromium version 70

    Then you'd need one for 70. Surprised the one you downloaded for 70 didn't work.

    Apparently, these help:
    https://github.com/iteufel/nwjs-ffmpeg-prebuilt/releases/tag/0.31.5

    Awesome.

    @alexprokopec said in FFMPEG installation instructions:

    Which version of libffmpeg.so do the Opera developers use when they build and test their software?
    Do they download it from somewhere, or build it from source?

    They build ffmpeg included in the Chromium source with proprietary codecs disabled for legal reasons. You just have to download a libffmpeg that supports everything to make the extra, proprietary codecs work.

    I suppose the best way (but probably a pain) would be to fetch the latest Chromium source of the major version you need, build it with proprietary codecs enabled and then grab the produced libffmpeg.so from it. Not sure how much of Chromium you can avoid building just to produce libffmpeg, but that's something to investigate. But, finding the libffmpeg.so from an official chromum ffmpeg extra package might be easier.

  • Thanks for your answers!

    It sounds like it might be useful to have some instructions on the Opera website about (or an automated script that does this, assuming that this does not breach the legal restrictions), since it's a frequent issue (and it's pushing away some Opera users). It looks like the Python script in this repo seems to be doing exactly that: https://github.com/iteufel/nwjs-ffmpeg-prebuilt

    As far as I'm personally concerned, the solution of running the script from iteufel's repo seems to work for me.

  • I see that the script makes use of https://nwjs.io/versions.json to figure out what version of the Chromium source to work with.

Log in to reply