Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
Enable H.264 codec support for Opera browser
#!/bin/bash
# Author: Marco Carletti
# Date: May 2022
# Version: 0.2.0
# Thanks to everyone for comments, suggestions, fixes and testings!
# Tested on
# ---------
#
# Ubuntu 18.04
#
# v0.1.0
# 62.0.3331.116
# 63.0.3368.66
#
# Ubuntu 20.04
#
# v0.1.0
# 70.0.3728.95
# 73.0.3856.284
# 74.0.3911.107
# 74.0.3911.232
#
# v0.2.0
# 87.0.4390.25
# Release notes
# -------------
#
# v0.2.0 Smarter use of curl options to fix failing permalink. Special thanks to `dotarr` for the fix!
# Last update: May 18, 2022
#
# v0.1.0 It is basically a cleaned version of what you can find in this post from Opera forum:
# https://forums.opera.com/topic/34659/opera-linux-browser-h-264-support-through-x264-open-source-codec
# Last update: Aug 18, 2020
# Retrieve latest FFMPEG release version.
# We get the complete url pointing to the latest zip package via the curl command.
#
# -L If the server reports that the requested page has moved to a different location
# this option will make curl redo the request on the new place.
#
# -o <file> Write output to <file> instead of stdout.
#
# -s Silent or quiet mode. Don't show progress meter or error messages.
#
# -w <format> Make curl display information on stdout after a completed transfer. The format is
# a string that may contain plain text mixed with any number of variables.
URL=`curl -L -o /dev/null -s -w %{url_effective} https://github.com/iteufel/nwjs-ffmpeg-prebuilt/releases/latest`
FFMPEGVER=${URL%\"*}
FFMPEGVER=${FFMPEGVER##*/}
FFMPEGZIP=${FFMPEGVER}-linux-x64.zip
# Download library from complete url and save it locally.
# Archive is extracted in the working directory and immediately deleted.
#
# -L (see above)
# -O Write output to a local file named like the remote file we get.
# Only the file part of the remote file is used, the path is cut off.
curl -L -O https://github.com/iteufel/nwjs-ffmpeg-prebuilt/releases/download/${FFMPEGVER}/${FFMPEGZIP}
unzip ${FFMPEGZIP}
rm ${FFMPEGZIP}
# Overwrite Opera libffmpeg (requires root privileges).
# Install (ie. copy) the latest version of the library in the system library folder.
# Before overwriting the Opera library file, make a copy... So we can manually rollback if we messed up things :)
sudo mv libffmpeg.so /usr/lib/x86_64-linux-gnu/libffmpeg_h264.so
sudo mv /usr/lib/x86_64-linux-gnu/opera/libffmpeg.so /usr/lib/x86_64-linux-gnu/opera/libffmpeg.so.orig
sudo ln -s /usr/lib/x86_64-linux-gnu/libffmpeg_h264.so /usr/lib/x86_64-linux-gnu/opera/libffmpeg.so
@mcarletti
Copy link
Author

mcarletti commented Sep 11, 2019

Need to run the script after updating Opera to ver. 63.0.3368.66

@SebastianGiro
Copy link

SebastianGiro commented Aug 5, 2020

Still working fine with ubuntu 20.04 and opera 70.0.3728.95

@DrReD
Copy link

DrReD commented Aug 31, 2020

Hi! There's an even simpler way that survives updates:

curl -L -O https://github.com/iteufel/nwjs-ffmpeg-prebuilt/releases/download/${FFMPEGVER}/${FFMPEGZIP}
unzip ${FFMPEGZIP}
rm ${FFMPEGZIP}
sudo mkdir /usr/lib/x86_64-linux-gnu/opera/lib_extra
sudo mv libffmpeg.so /usr/lib/x86_64-linux-gnu/opera/lib_extra

Opera will automatically use the version in lib_extra and the mod will survive updates. So you'll only need to do it once.

@tiborepcek
Copy link

tiborepcek commented Jan 4, 2021

Thanks a lot! This script works also on Ubuntu 20.04.1 LTS (Focal Fossa) 64-bit + Opera 73.0.3856.284.

@lpaoliespin
Copy link

lpaoliespin commented Feb 16, 2021

Thanks!! It worked perfectly for me on Ubuntu 20.04.2 LTS (Focal Fossa) 64-bit + Opera 74.0.3911.107.

@ondrejkopicka
Copy link

ondrejkopicka commented Dec 26, 2021

Thanks :) Still works on Ubuntu 20.04.3 LTS, Opera 74.0.3911.232

@dotarr
Copy link

dotarr commented May 17, 2022

I found that the extraction of variables from URL into FFMPEGVER and FFMPEGZIP had started failing pointing to the redirection between /latest and the permalink to the numbered version no longer being output by curl, adding some switches appeared to fix:

URL=$(curl -Ls -o /dev/null -w %{url_effective} https://github.com/nwjs-ffmpeg-prebuilt/nwjs-ffmpeg-prebuilt/releases/latest)
FFMPEGVER=${URL%\"*}
FFMPEGVER=${FFMPEGVER##*/}
FFMPEGZIP=${FFMPEGVER}-linux-x64.zip
curl -L -O https://github.com/iteufel/nwjs-ffmpeg-prebuilt/releases/download/${FFMPEGVER}/${FFMPEGZIP}
unzip ${FFMPEGZIP}

sudo mv libffmpeg.so /usr/lib/x86_64-linux-gnu/opera/lib_extra

@mcarletti
Copy link
Author

mcarletti commented May 18, 2022

Thanks everyone! I've updated the script with your notes and fixes. I've also tested the script with the latest Opera version (currently, it is 87.0.4390.25).

@gidici
Copy link

gidici commented Sep 11, 2022

Works with Opera 90.0.4480.80 on Debian 11.4. Thanks. I only changed sudo with su -c "...."

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment