Bravia nie odtwarza zdjęć z USB lub sieci DLNA

multimedia linux imagemagick 2013-05-06, 00:05,

Z tylko sobie znanych powodów dział oprogramowania Sony postanowił tak przygotować oprogramowanie telewizorów z serii HX z 2012 roku, żeby przypadkiem nie ułatwić użytkownikowi życia. W jaki sposób? Ano w taki, że telewizor odtwarza pliki JPG tylko te, które zgodne są ze specyfikacją DCF 2.0. I to mimo, że dwa-trzy lata starsze odtwarzacze Blu-Ray tego samego producenta nie mają problemu z „lepszej” jakości plikami (Np. BDP-S470).

Mówi ci to coś? Mnie do końca też nie mówiło, poza tym, że z założenia przyjąłem, że mój telewizor nie odtwarza zdjęć i zakup był na tym polu bardzo świadomy. A dlaczego nie odtwarza? Ano dlatego, że wszystkie moje zdjęcia powstają w formacie cARW / RAW, następnie lądują w Adobe Camera RAW i dopiero stamtąd, bezpośrednio lub poprzez Photoshopa, lądują na dysku i w sieci DLNA.

Wniosek. Telewizory Sony Bravia nie odtwarzają zdjęć z Photoshopa. Koniec kropka. Dlaczego? Tu z pomocą przychodzi specyfikacja DCF 2.0 oraz post Jespera Hauge'a, którego znalezienie zajęło mi dobre kilka tygodni. Z grubsza wiedziałem o co chodzi, tj. o to, że dobre programy graficzne wykorzystują wysokiej jakości zapis w formacie YCbCr 4:4:4, a telewizory Bravia tylko format YCbCr 4:2:2 lub 4:2:0. Miałem też pod ręką pakiet ImageMagick (to chyba najlepszy pakiet graficzny jaki znam), ale brakowało mi cierpliwości, żeby przejrzeć jego obszerną dokumentację. Jesper to zrobił i browar mu za to. Dostosowałem jego dzieło do realiów mojej sieci lokalnej i sprawa załatwiona. Bravia może jednak odtwarzać obrazy z Photoshopa, potrzebuje tylko delikatnego wsparcia.

A zatem do dzieła!

Użytkownicy Windows pobierają pakiet ImageMagick i instalują. Linuxowcy pewnie go już dawno w systemie mają, a makowcy? Sorry, też pracuję na Maku, ale w tym odcinku o zabawie z OSX nic nie będzie. Natomiast robota jest niemal taka sama jak pod Linuxem, więc jak potrafisz odpalić terminal to z resztą też sobie dasz radę.

Cała sztuka polega na tym, żeby zmodyfikować zdjęcia znajdujące się w wybranym folderze i dostosować je do formatu zgodnego z telewizorem. Nie muszę przypominać, że pracujemy na kopii zdjęć, a nie na oryginałach?

Dla pojedynczego zdjęcia polecenie konwersji będzie następujące:

mogrify.exe -sampling-factor 2x1 nazwa_pliku.jpg

Polecenie mogrify.exe otworzy plik, dostosuje przestrzeń barw i kompresji do zadanego formatu i nadpisze istniejący plik. Ten sam efekt można uzyskać poleceniem convert.exe oraz convert pod Linuxem.

Dla systemu Linux:

convert "nazwa_pliku.jpg" -sampling-factor 2x1 -quality 80 "nazwa_pliku.jpg"

Parametr -quality jest opcjonalny. Przy okazji zapisu ustawiam jakość zdjęć na 80. W  większości przypadków jakość będzie bardzo dobra, a zmniejszy się rozmiar pliku. Oszczędzamy więc przy okazji miejsce. Dla dużych repozytoriów zdjęć może mieć to znaczenie. A i mniej danych po sieci wędruje, odpowiedź telewizora będzie zatem szybsza.

Skrypt pod Windows PowerShell do zrobienia tego seryjnie znajduje się we wspomnianym wcześniej poście. Kopiujemy jego zawartość, zapisujemy w pliku konwertuj.ps1 i uruchamiamy wpisując:

konwertuj .\katalogDoKonwersji

W systemie Linux przygotowałem sobie skrypt, który załatwia za mnie całą brudną robotę. Najpierw utworzyłem plik braviajpg.sh i nadałem mu prawo +x (uruchom). Zapisałem go w katalogu domowym ~/skrypty/braviajpg.sh.

#!/bin/bash
echo "Converting file... ${1}"
convert "${1}" -sampling-factor 2x1 -quality 80 "${1}"

${1} oznacza, że pierwszy parametr wejściowy będzie plikiem do konwersji. Oczywiście wypadałoby tutaj zrobić trochę zabezpieczeń, by pliki wejściowe były JPGami (a nie np. katalogami), ale to już pozostawiam innym. Albo i sobie, jak znajdę na to trochę czasu.

Następnie, po umieszczeniu docelowych zdjęć w odpowiednim katalogu (odpaliłem raz, na kilka godzin na całej strukturze) wydaję polecenie:

find /mnt/Dok500/dlna/photo/ -name *.jpg -exec ~/skrypty/braviajpg.sh "{}" \;

Gdzie /mnt/Dok500/dlna/photo/ to mój katalog ze zdjęciami, „-name *.jpg” oznacza, że polecenie find zwróci mi tylko nazwy plików jpg (jeśli używasz plików z dużymi literami, to musisz to uwzględnić, Linux rozróżnia duże i małe litery, OS X nie). Następnie ścieżka do utworzonego wcześniej skryptu. Bardzo ważne jest zakończenie linijki backslashem (\) oraz średnikiem (;). Oznaczają one koniec polecenia, które find ma uruchomić dla każdego pliku.

W zależności od procesora i liczby zdjęć, po jakimś czasie skrypt skończy pracę, a wszystkie zdjęcia z katalogu będą poprawnie odtwarzane na telewizorze.

Po uruchomieniu skryptu te same pliki „nagle” ożywają i telewizor nie ma problemu z ich odtwarzaniem.

Wg informacji producenta problem dotyczy modeli: KDL-22EX420, KDL-22EX423, KDL-26EX420, KDL-26EX423, KDL-32CX520, KDL-32CX523, KDL-32EX420, KDL-32EX520, KDL-32EX523, KDL-32EX720, KDL-32EX723, KDL-40CX520, KDL-40CX523, KDL-40EX520, KDL-40EX523, KDL-40EX720, KDL-40EX723, KDL-40HX820, KDL-40NX720, KDL-40NX723, KDL-46CX520, KDL-46CX523, KDL-46EX520, KDL-46EX523, KDL-46EX720, KDL-46EX723, KDL-46HX820, KDL-46HX920, KDL-46HX923, KDL-46HX925, KDL-46NX720, KDL-46NX723, KDL-55EX720, KDL-55EX723, KDL-55HX820, KDL-55HX920, KDL-55HX923, KDL-55HX925, KDL-55NX720, KDL-60EX720, KDL-60NX720, KDL-65HX920, KDL-65HX923, KDL-65HX925.

Komentarze