Grafika 3D i gry :: Lista programów "multimedialnych" :: Przeglądarki multimedialne i odtwarzacze :: Edytory graficzne :: Edytory wideo :: Edytory audio :: Edycja audio-wideo :: Cinelerra :: Efekty specjalne :: Efekty przejść :: Eksport :: pakiet Transcode i inne narzędzia tekstowe :: audio :: wideo :: audio i wideo :: Linki :: Uwagi konfiguracyjne dotyczące multimediów :: Tuner radiowo-telewizyjny i cyfrowa rejestracja wideo :: Serwer dźwięku KDE oraz ALSA

Multimedia

W tym artykule postaram się omówić najważniejsze kwestie związane z odtwarzaniem, przetwarzaniem oraz edycją różnego typu danych multimedialnych (grafika, dźwięk i wideo).

Grafika 3D i gry

W programowaniu współczesnych gier bardzo istotnym elementem jest obsługa grafiki (zazwyczaj 3D aczkolwiek nadal można spotkać i zapewne zawsze będzie liczna grupa gier 2D). Rzadko graficzna część gry tworzona jest od podstaw z bezpośrednim wykorzystaniem mechanizmów takich jak OpenGL. Najczęściej gry korzystają z silników gier zawierających silniki graficzne lub bezpośrednio z tych drugich.

Silnik gry różni się od silnika graficznego tym że dostarcza także mechanizmów służących do implementacji fizyki świata gry (w tym wykrywania kolizji), sztucznej inteligencji, obsługi wejścia (sterowania), dźwięku i sieci. Silnik graficzny dostarcza natomiast tylko wygodnych mechanizmów operowania obiektami graficznymi, maskując niżej poziomowe interfejsy takie jak SDL, czy jeszcze bardziej niskopoziomowy i ograniczony tylko do grafiki OpenGL. Wspomniany OpenGL jest API do obsługi grafiki 3D, najczęściej stosowany jest w zastosowaniach profesjonalnych, ale niekiedy także w grach - ze względu na otwartość specyfikacji oraz dostępność na wiele platform - zwłaszcza w grach z rodziny FLOSS). SDL jest z kolei biblioteką programistyczną zwalniającą programistę z konieczności operowania suchym OpenGL i jemu podobnymi mechanizmami, jednak jest dość niskopoziomowy i nie jest określany mianem silnika graficznego czy też silnika gry (dostarcza jednak mechanizmów obsługi wejścia itp).

Do najbardziej zaawansowanych projektów silników na wolnych licencjach należą: Irrlicht (licencja typu BSD), OGRE (LGPL), Crystal Space (LGPL). Dość bogatą bazę silników (w tym tych z rodziny FLOSS) można przeglądać na devmaster.

Zobacz też: przykładowe programy multimedialne w C/C++ (w tym związane z grafiką 3D), mój pomysł na silnik gry, portal o programowaniu gier, edytor shaderów dla KDE (łatka ułatwiająca kompilację w Debianie).

Lista programów "multimedialnych"

Przeglądarki multimedialne i odtwarzacze

Przeglądarki multimedialne i odtwarzacze audio/video są programami służącymi do wyświetlania / odtworzania plików w wielu formatach, odtwarzacze potrafią zapisywać tak zwane "playlisty" czyli listy plików które mają odtwarzać, przeglądarki oferują tworzenie podglądów katalogów, przeglądać w trybie pokazu slajdów oraz dokonywać prostych modyfikacji plików graficznych i zmian formatu zapisu.

Edytory graficzne

Programy do edycji graficzne dzielimy zasadniczo na trzy typy - programy do tworzenia grafiki rastrowej, grafiki wektorowej i animacji. Grafikę rastrową używa się do obrazków o nieregularnych kształtach, zdjęć, ..., umożliwia ona stosowanie licznych filtrów i efektów, w śród programów do jej edycji trzeba wymienić słynnego Gimpa. Z kolei podstawową zaletą grafiki wektorowej jest niezmienność jakości przy powiększaniu oraz zdolność do opisywania struktury (linia jest obiektem, a nie tylko zbiorem punktów), dlatego grafika ta jest używana głownie do tworzenia symboli i log oraz schematów. Z kolei animacje tworzone są jako sekwencyjnie wyświetlane pliki graficzne (z ewentualnymi efektami przejścia).

Edytory wideo

Programy te umożliwiają obróbkę i montaż cyfrowego wideo wraz z jego ścieżką audio, dodawanie efektów przejść, elementów animacji, a także kompresję i konwersję między formatami. posiadają również moduł umożliwiający przechwytywanie wideo (jego ucyfrawianie).

Edytory audio

Oprogramowanie to umożliwia montaż, doadawanie efektów, konwersję i kompresję oraz przechwytywanie audio.

Edycja audio-wideo

Cinelerra

Cinelerra jest programem do montażu wideo, umożliwia składanie filmu, dodawanie efektów itp. W przypadku problemów z uruchamianiem (biblioteki) polecam sprawdzenie wersji bibliotek faad i faac (najlepiej stosować z tego samego źródła co sama cinelerra).

Efekty specjalne

1) zaznaczamy interesujący nas fragment (w oknie głównym)
2) w menu prawego przycisku myszy wybieramy Attach effect
3) jego ustawienia znajdziemy w tym menu pod pozycją Show

Efekty przejść

Wstawiamy je przeciągając wybrany efekt z okna efektów do okna głównego i umieszczając na połączeniu dwóch fragmentów. W menu prawego przycisku myszy mamy czas trwania i ustawienia.

Eksport

Należy przewinąć film do początku (eksport zaczyna się od aktualnego czasu) następnie File -> Render ... . Polecam ustawić "File Format" na RawDV oraz "Insertion strategy" na "Insert nothing" (nie testowałem ustawień z eksportem audio).

pakiet Transcode i inne narzędzia tekstowe

audio

wydzielenie ścieżki audio z pliku wideo:
tcextract -a 0 -i "IN.avi" -x mp3 > OUT.mp3
docinanie plików audio (program wywala sie przy generowaniu ostatniego pliku ale to niewielka przeszkoda):
tcmp3cut -i 1.mp3 -o 1a.mp3 -t 330000,1725999 -d 0
nagrywanie audio:
rec -t ogg -d /dev/dsp OUT.ogg (oczywiscie najpier ustawic odpowiednio pierwsze wejscie w mixerze ...)
łączenie plików audio (mp3):
mp3wrap all.mp3 1.mp3 2.mp3 3.mp3 4.mp3
poprawianie pliku mp3: (metoda brutalna ale skuteczna ...)
lame --decode all_MP3WRAP.mp3 ; lame -b64 -h all_MP3WRAP.mp3.wav

wideo

docinanie plików wideo:
avisplit -i IN.avi -o OUT.avi -t 00:05:30-43175

odzyskanie informacji o długosci filmu:
aviindex -i broken.avi -n -o broken.idx; avimerge -x broken.idx -i broken.avi -o fixed.avi
w przypadku problemow z audio warto z orginalu wydzielic sciezke audio a nastepnie polaczyc poprawione video i wydzielone uprzednio audio

kodowanie xvid:
pierwszy przebieg:
transcode -i IN.avi -o TMP.avi -y xvid4 -R
pierwdrugi przebieg:
transcode -i TMP.avi -o OUT.avi -y xvid4 -R 2 -w 3500,25,100 -avi_limit 4000

audio i wideo

łączenie plików wideo i pliku audio ze sobą:
avimerge -i 1.avi 2.avi 3.avi 4.avi -p all_MP3WRAP.mp3.wav.mp3 -o calosc.avi -A 0
poprawianie pliku wideo dla dźwięku:
transcode -i calosc_video.avi -P 1 -x avi,null -y raw,null -o calosc.avi -c 0-140831 (uwaga: transcode ma problem z autodetekcją typu pliku gdy podany parametr -p)
przekodowanie tylko ścieżki audio: (bez ruszania wizji)
transcode -i IN.avi -P 1 -b 56 -s 4 -o OUT.avi -y raw

Linki

Zobacz w Sieci: Linux i edycja dźwięku, Nagrywanie i edycja dźwięku w Linuksie

Uwagi konfiguracyjne dotyczące multimediów

Tuner radiowo-telewizyjny i cyfrowa rejestracja wideo

Uruchomienie karty telewizyjnej wymaga zapoznania się z listą obsługiwanych kart i tunerów, odnalezienia na niej posiadanej pozycji bądź pozycji zbliżonej a następnie załadowaniu odpowiedniego modułu z odpowiednimi parametrami. W moim wypadku (karta PV-BT878P+ rev.2F z tunerem TPI8PSB02P) słuszne okazało się modprobe bttv card=138 tuner=28 pll=1 radio=1. Następnie możemy przystąpić do konfiguracji programu do odbioru telewizji / radia (np. xawtv, fbtv); przykładowy plik z konfiguracją dla AsterCity (nazwy niektórych kanałów mogą być nieaktualne) - .xawtv (jeżeli istnieje /etc/xawtv radzę zarchiwizować i skasować). Przy karcie graficznej nvidii spotkałem się z problemem polegającym na niewyświetlaniu obrazu przez xawtv - rozwiązaniem okazało się xawtv -noxv (aby ustalić ten parametr jako domyślny należy do pliku ~/.Xdefaults dodać "xawtv.xv: no").

Do nagrywania cyfrowego wideo polecam program "transcode" (niestety nie ma go w oficjalnym Debianie) z następującymi parametrami transcode -i /dev/video0 -p /dev/dsp0 -g 768x576 -b 64 -e 16000,16,1 -o "$1" -x v4l -y xvid4 -R 1 -avi_limit 2048 (rejestruje to obraz w najlepszej możliwej w PALu jakości). Wcześniej przy pomocy ulubionego programu nastawiamy żądaną stację, przy poprawnej pracy dysku i nie oglądaniu zwartości katalogu w którym są zapisywane pliki nie powinno gubić klatek.

Niekiedy na nagraniach w maksymalnej rozdzielczości PAL pojawia się problem przekłamanych linii (wynika to z emisji w PALu jednej klatki obrazu w postaci dwóch półklatek wyświetlanych jako jednej) warto wtedy w VLC z menu Stettings wybrać Prefernces - General settings - Obraz i ustawić Video filter module na "Deinterlacing video filter" (następnie zrestartować vlc).

Zamieszczam również skrypt ułatwiający nagrywanie wideo - magnetowid.sh. Zobacz tez w Sieci: Television with Linux

Wspomniany już VLC umożliwia także przechwytywanie i wysyłanie w sieć IP sygnału audio-wideo z naszej karty TV (oraz z pewnym wspomaganiem (program radio służący do nastrojenia odbiornika) także sygnału audio z tunera radiowego). Zamieszczam tutaj skrypt ułatwiający taką operację (składnia vlc służąca do tego nie jest łatwa i przyjemna, a wtaki sposób łatwiej wprowadzać parametry takie jak np. kanał.

Niekiedy można spotkać się z problemem polegającym na braku sprzętowego sprzężenia wejścia liniowego z wyjściem głośnikowym - problem ten może rozwiązać program kopiujący wejście na wyjście karty dźwiękowej (wersja alsa), (wersja oss) oraz skrypt dla KDE uruchamiający cały zestaw aplikacji do słuchania radia / oglądania telewizji.

Na koniec warto wspomnieć także o programie alevt, który umożliwia softwerowe dekodowanie teletextu (telegazety) z karty obsługiwanej przez bttv: alevt -vbi /dev/vbi0 -charset latin-2.

Serwer dźwięku KDE oraz ALSA

Z serwera dźwięku KDE potrafią korzystać też liczne programy nie stworzone specjalnie dla tego środowiska (jak VLC, XMMS, ...), aby było to możliwe konieczne jest zainstalowanie do nich wtyczki dla systemu dźwiękowego "arts" oraz wybranie tego systemu jako wyjścia dźwięku. Ma to tę zaletę że programy te nie blokują sobie wtedy wzajemnie oraz serwerowi dźwięku KDE dostępu do urządzenia dźwiękowego (co ma miejsce przy korzystaniu z /dev/dsp). Jeżeli korzystamy z sterowników alsa możemy pokusić się o wykorzystanie miksera wbudowanego w ten system dźwięku (dmix) do miksowania dźwięków z serwera arts oraz innych programów (jest to działanie domyślne tego sterownika). ALSA umożliwia także bardziej dziwne sztuczki z karta dźwiękową jak np. zamiana kanałów (np. prawego z lewym lub głośników tylnych z przednimi) - tutaj zamieszczam przykład stosownego pliku konfiguracyjnego. Jeżeli mamy więcej niż 1 kartę dźwiekową warto zainteresowac się parametrem modółów alsy index=, odpowiedzialnym za ustalanie kolejności kart w systemie.


Copyright (c) 1999-2008, Robert Paciorek (http://www.opcode.eu.org/), BSD-type license


Redystrybucja wersji źródłowych i wynikowych, po lub bez dokonywania modyfikacji JEST DOZWOLONA, pod warunkiem zachowania niniejszej informacji o prawach autorskich. Autor NIE ponosi JAKIEJKOLWIEK odpowiedzialności za skutki użytkowania tego dokumentu/programu oraz za wykorzystanie zawartych tu informacji.

This program is free software. Redistribution and use in source and binary forms, with or without modification, ARE PERMITTED provided save this copyright notice. This document/program is distributed WITHOUT any warranty, use at YOUR own risk.

Valid XHTML 1.1 Dokument ten (URL: http://www.opcode.eu.org/multimedia) należy do serwisu OpCode. Autorem tej strony jest Robert Paciorek, wszelkie uwagi proszę kierować na adres e-mail serwisu: webmaster@opcode.eu.org.
Data ostatniej modyfikacji artykulu: 2008-07-15 18:03:12 (UTC) (data ta może być zafałszowana niemerytorycznymi modyfikacjami artykułu).