Phonon - łatwa obsługa multimediów
W poprzednich artykułach cyklu Droga do KDE 4 zaprezentowałem między innymi obsługę zadań działających w tle i obsługę grafiki SVG. Dzisiaj mam zamiar zaprezentować nową technikę obsługi multimediów - Phonon. Phonon ma na celu ułatwienie tworzenia aplikacji multimedialnych oraz zapewnienie działania tych aplikacji na różnorodnych platformach i architekturach podsystemu obsługi dźwięku. Niestety pisanie na temat obsługi dźwięku ma pewien minus - nie można zamieścić żadnych ciekawych zrzutów ekranu, więc zamiast tego skupimy się na większej liczbie szczegółów technicznych.
Spis treści |
[edytuj] Czym jest Phonon?
Phonon jest nową techniką KDE oferującą spójne API do obsługi dźwięku i wideo w aplikacjach multimedialnych. API to jest zaprojektowane tak, aby było zbliżone do stylu Qt i oferowało programistom podobną funkcjonalność (jeśli jesteś zainteresowany API Phonona zajrzyj do dokumentacji, ale pamiętaj, że nie zawsze jest ona aktualna).
Na początek wypadałoby powiedzieć czym Phonon nie jest: nie jest on kolejnym serwerem dźwięku i nie będzie konkurował z xine, GStreamerem, ESD, aRts, itd. Oferuje on raczej jednorodne API obsługujące te techniki. Dla przykładu, jeśli GStreamer zdecyduje zmienić swoje API to uaktualnienia wymagał będzie tylko Phonon, a nie wszystkie aplikacje indywidualnie.
[edytuj] Silniki wspierane przez Phonon
Phonon wykorzystuje tak zwane "silniki" (ang. engines) - do każdego z obsługiwanych podsystemów dźwięku. Aktualnie obsługiwane tworzone są 4 silniki - do obsługi xine, NMM, GStreamera i avKode (jest to następca aKode). Możesz być spokojny wiedząc, że aRts na pewno nie będzie przyszłym systemem obsługi dźwięku. Może on jednak nadal istnieć poza KDE. Dużą zaletą KDE 4.0 będzie to, że nie będzie jednego zalecanego systemu obsługi dźwięku, ale kilka opcjonalnych silników do wyboru.
Zasugerowano także wprowadzenie kilku innych silników - MPlayera, DirectShow (na platformie Windows) oraz QuickTime (na platformie Mac OS X). Prace nad tymi silnikami nie zostały jeszcze rozpoczęte, ponieważ programiści chcą się upewnić, że główna część Phonona jest już gotowa, tak aby nie było konieczności wprowadzania potem większych zmian. Jeśli rozpoczęto by prace nad zbyt dużą ilością silników, zanim API Phonona nie będzie gotowe, mogłoby to wprowadzić niepotrzebne zamieszanie (jeśli chciałbyś pomóc w pisaniu jakiegoś silnika, zapraszamy na kanał #phonon w sieci irc.freenode.org).
Kiedy użytkownik lub jakaś aplikacja dokonuje wyboru silnika Phonon sprawdza czy dany format pliku można odtworzyć za pomocą tego silnika. Tak jak w KDE 3, użytkownik będzie mógł wybrać dowolny silnik w każdej aplikacji (Kaffeine, Amarok, JuK, itp.) zamiast dokonywać ustawień globalnych.
Po wyborze silnika, Phonon będzie pozwalał danej aplikacji tylko na takie działania jakie umożliwia ten silnik. Oznacza to standardowe operacje wykonywane w odtwarzaczu multimedii takie jak Odtwarzanie, Pauza, Stop, Przewijanie, itp. Phonon posiadał będzie także wsparcie dla bardziej zaawansowanych funkcji jak przenikanie się utworów, przez co nie będzie konieczne implementowanie tej funkcji w poszczególnych programach. Oczywiście niektóre programy będą wolały mieć większą kontrolę nad przenikaniem i nie ma przeszkód aby same zaimplementowały jego obsługę.
Silnikiem, który uczynił największe postępy, jest xine, którego udało mi się uruchomić na moim komputerze. Nie mogłem za to uruchomić NMM (trudności ze skompilowaniem) i GStreamera, a avKode jest aktualnie zablokowany. Pokazałbym zrzut ekrany z Juka lub Noatun odtwarzającego muzykę za pomocą Phonona, ale aktualnie aplikacje te wyglądają dokładnie tak jak w KDE 3 (z wyjątkiem małych uszkodzeń w interfejsie!). Aplikacje te zaprezentuję w którymś z kolejnych artykułów, kiedy tylko będą one bardziej gotowe do wydania.
Matthias Kretz zaprezentował krótki filmik, który ukazuje przełączanie urządzeń. Phonon oferuje zmianę urządzeń w locie, podczas odtwarzania. Można usłyszeć kiedy dźwięk jest przełączany pomiędzy różnymi wyjściami (słuchawki, głośniki, itp).
Matthias przygotował także poniższy zrzut ekranu prezentujący opcję zmiany urządzenia wyjściowego za pomocą modułu konfiguracyjnego Phonona. Prace nad tym modułem ciągle trwają i na pewno jego wygląd jeszcze się zmieni.
[edytuj] Network transparency
Nie ma zbyt wielu rzeczy których zrzuty ekranu mógłbym pokazać (zrzuty ekranu z systemu obsługi dźwięku zazwyczaj są trudne do zrobienia!), ale mogę opisać jeden z efektów wykorzystania Phonona: network transparency. KDE wykorzystuje mechanizm KIOSlaves do uzyskania dostępu do plików poprzez sieć, dzięki czemu są one tak samo dostępne jakby znajdowały się na lokalnym komputerze. Aplikacje multimedialne takie jak JuK i Amarok powinny sobie radzić z dodawaniem plików znajdujących się gdzieś w sieć do kolekcji w sposób przezroczysty. Wsparcie to jest częściowo zaimplementowane w KDE 4 i najlepszym sposobem przekonania się o tym jest wykorzystanie "miniaturek audio", które mogą działać z wykorzystaniem dowolnego protokołu wspieranego przez KIO, jak na przykład sftp:// i fish://. Mi nie udało się zmusić tego do działania z powodu niestabilności KIOSlave fish://, ale programiści na kanale #phonon mówili, że funkcja ta będzie w pełni działała, kiedy tylko fish:// stanie się bardziej stabilny.
Phonon może stać się jednym z ważniejszych filarów technicznych środowiska KDE, czyniąc pracę programistów aplikacji multimedialnych prostszą i przyjemniejszą oraz na pewno pozwoli na wspieranie wielu platform, na których KDE ma działać. Zastosowanie Phonona oznacza, że programiści aplikacji będą mogli skupić się bardziej na funkcjonalności ich programu, a nie na zgodności z systemami obsługi dźwięku, dzięki czemu aplikacje KDE mogą stać jeszcze lepsze niż dotychczas.
[edytuj] Phonon w Amaroku
A teraz kilka krótkich informacji: Mark Kretschmann główny programista Amaroka w tym tygodniu ogłosił rozpoczęcie prac nad Amarok 2.0 i okazał zainteresowanie tym, jak Phonon może być wykorzystany w Amaroku 2.0. We wczesnym stadium rozwoju Phonona można jeszcze dostosować do wszystkich wymagań odtwarzacza Amarok.
[edytuj] Poszukiwany, poszukiwana...
Jeśli chciałbyś pomóc w rozwoju KDE i nie jesteś programistą Matthias Kretz, główny deweloper Phonona (Vir na IRCu) poszukuje osób chętnych do pracy nad uaktualnianiem strony projektu.
I ostatnie ogłoszenie: zauważyłem, że artykuły z serii Droga do KDE 4 są tłumaczone na różne języki i umieszczane w różnych serwisach. Czasami zdarzało się, że klika osób tłumaczyło równocześnie jeden artykuł na dany język. Jeśli jesteś tłumaczem, skontaktuj się ze mną a może zaoszczędzimy czasu kilku osobom, które także wykonywały to zadanie.

