niedziela, 2 września 2018

Opera pod Linuksem a filmy na portalach.

Przesiadłem się jakiś czas temu na Linuksa jako główny OS w domu (dla ciekawych, jest to Mint Cinnamon - bo nie muszę przyzwyczajać się do jakichś "dziwnych" rozwiązań menedżerów okien, a windowsowy jestem od lat i przyzwyczajenia jednak robią swoje ;-)).

Na tymże systemie posadziłem przeglądarkę Opera, jako dzierżącą u mnie palmę pierwszeństwa (również od lat - z pewną przerwą, o której kiedyś wspominałem).

Okazuje się, że na tytułowej przeglądarce pod tytułowym systemem operacyjnym nie działają filmy na tytułowym portalu społecznościowym.
Niestety Google przez trzy dni poszukiwań nie zwrócił na ten temat jakichś sensownych wyników - zapewne zadawałem niewłaściwe pytania, bo w końcu znalazłem ;-).
Paradoksalnie, problem nie jest jakoś szczególnie szeroko opisywany w internetach, stąd też ten post.

Filmy na Facebooku nie działają, bo... są kodowane kodekiem h264.
Kodek h264 nie jest kodekiem darmowym. Aby go dystrybuować, należy zapłacić za licencję. Stąd też Opera (przynajmniej w wersji na Linuksa) nie posiada go w swoich zbiorach. To tyle, jeśli chodzi o przyczynę.

A jeśli chodzi o rozwiązanie, to przeglądarka Chromium, będąca linuksowym i open-source'owym odpowiednikiem Chrome, takie wsparcie ma (bo Google płaci). Można by się więc przesiąść na Chromium ale okazuje się, że można inaczej.

Trzeba sobie zainstalować Chromium. Z katalogu Chromium skopiować plik libffmpeg.so i zastąpić nim plik o takiej samej nazwie znajdujący się w katalogu Opery. U mnie jest to:
/usr/lib/x86_64-linux-gnu/opera/libffmpeg.so
Niestety po każdej aktualizacji Opery procedurę trzeba powtórzyć. Skopiowałem więc sobie tą bibliotekę "na bok" i zrobiłem skrypt (żeby za każdym razem nie klepać ręcznie), który będę mógł sobie uruchomić, kiedy filmy na Facebook'u znowu przestaną działać:
sudo cp --force /usr/lib/x86_64-linux-gnu/opera/libffmpeg.so_chromium /usr/lib/x86_64-linux-gnu/opera/libffmpeg.so

I to tyle :-)


Update.
Okazuje się, że rzecz można rozwiązać jeszcze nieco inaczej - a właściwie rozwiązać kwestię aktualizacji Opery do nowej wersji.
Jest mianowicie w menedżerze pakietów taka funkcja, jak "divert". Ponieważ używam dystrybucji na bazie Debiana, mamy tu menedżer pakietów dpkg. I jest polecenie dpkg-divert, które powoduje, że dla instalowanej paczki można sobie zażyczyć, żeby pewne pliki nie zastępowały ich wersji już istniejących. Wówczas taki plik jest domyślnie kopiowany z rozszerzeniem .distrib
I tak wydanie polecenia typu:
dpkg-divert --add /usr/lib/x86_64-linux-gnu/opera/libffmpeg.so --local
spowoduje, że nasza "lepsza" biblioteka libffmpeg.so nie będzie już zastępowana przy aktualizacji Opery.
Warto jedynie co jakiś czas zadbać, żeby sama biblioteka była we w miarę aktualnej wersji.



Kolejny update bo potrzebowałem skorzystać, a lubię jednak bezmyślnie kopiować i wklejać :-P

sudo dpkg-divert --add /usr/lib/x86_64-linux-gnu/opera/libffmpeg.so
sudo rm /usr/lib/x86_64-linux-gnu/opera/libffmpeg.so
sudo ln -s /usr/lib/chromium/libffmpeg.so /usr/lib/x86_64-linux-gnu/opera/libffmpeg.so