Audio/Video compressions and transmissions

20
Metody kompresji i transmisji audio/video w sieci Internet

description

in polish

Transcript of Audio/Video compressions and transmissions

Page 1: Audio/Video compressions and transmissions

Metody kompresji i transmisji audio/video w sieci Internet

Page 2: Audio/Video compressions and transmissions

Próbkowanie i kwantyzacja

Page 3: Audio/Video compressions and transmissions

Standardy kompresji

Audio Kompresja mowy

LPC (FS 1015 ) CELP (G.728) RPE (LPC) PCM (G.711)

Kompresja dźwięku ADPCM (G.722,

G.726, G.727) MPEG AC3

Video ITU

H.261 H.263

MPEG MPEG-1 MPEG-2 MPEG-4

Page 4: Audio/Video compressions and transmissions

System transmisji dźwięku

Page 5: Audio/Video compressions and transmissions

Standard MPEG-1

Page 6: Audio/Video compressions and transmissions

Porównanie standardów kompresji audio

Page 7: Audio/Video compressions and transmissions

Porównanie cd...

20 ms mowy jest reprezentowana w 33 bajtach dla kodowania GSM. Stąd w jednej sekundzie mamy (50 ramek/s × 33 bajty/ramkę), a całkowita przepływność wynosi 1.650 B/s. Zamiana na bity 1.650 × 8 = 13,200 b/s. Te wielkości nie uwzględnia nagłówków RTP/UDP/IP które dodają 40 bajtów do pakietu. (50 × (33+40)) = 3.650 × 8 = 29.2 kb/s.

20 ms sygnału mowy zakodowanego w G.711 (ULAW/PCM) jest reprezentowana w 160 bajtach. Stąd

jedna sekunda wymaga (50 ramek/s × 160 bajtów/ramkę) = 8.000B/s, zamieniając tą wielkość na bity

uzyskamy 64 kb/s. Jednak ramka w sieci IP będzie miała rozmiar 80 kb/s. 20ms sygnału mowy nie może być reprezentowane w G.723. Koder jest zdefiniowany dla ramek 30ms.

30ms mowy jest reprezentowane przez 24 bajty zakodowanego sygnału G.723. Dla jednej sekundy

mamy (33 ramki/s × 24 bajtów/ramkę) = 792 B/s, jest to pasmo zakodowanego strumienia.

Zamieniając tę wartość na bity otrzymamy 6.336 kb/s. Z uwzględnieniem nagłówków RTP/UDP/IP

całkowita przepływność wyniesie 16.896 kb/s.

Page 8: Audio/Video compressions and transmissions

Kompresja video

Przykładowo dla wideokonferencji w sieci ISDN w której sekwencja obrazów kolorowych w formacie CIF (ang. Common Intermediate Format) standardu H.261 o częstotliwości 25

ramek/s przesyłana będzie siecią o przepustowości 384 kbit/s, wymagany stopień kompresji wynosi 79:1, zgodnie z wyliczeniem ((288 × 352 + 144 × 176 + 144 × 176) × 8 bitów × 25

ramek/s) / 384 kbit/s = 79.

Page 9: Audio/Video compressions and transmissions

MPEG-2

Strumień transportowy TS (ang. Transport Stream) – umożliwia przesyłanie strumienia danych audio i video kanałami z zakłóceniami (łącze satelitarne, koncentryczne kable sieci telewizyjnej), pozwala łączyć wiele strumieni AV o niezależnych zegarach. Strumień TS używa pakietów o stałej długości 188 bajtów. TS wspiera asynchroniczne łączenie strumieni AV (np. programów telewizyjnych), szybki dostęp do danego strumienia (np. zmiana odbieranego kanału telewizyjnego), synchronizacja elementarnych strumieni dla późniejszej ich prezentacji, zarządzanie buforami dekodera AV o stałej i zmiennej długości bitowej.

Page 10: Audio/Video compressions and transmissions

Real Time Transport Protocol

Version- (V) 2 bity: wersja protokółu Padding- (P) 1 bit: ustawiony bit oznacza, że dodano

wypełnienie, a ostatni bajt wskazuje ile jest bajtów

wypełnienia Extension- (X) 1 bit: jeśli bit jest ustawiony, oznacza że

nagłówek jest poprzedzony nagłówkiem rozszerzenia,

używane w przypadku zmian formatu danych (ang.

payload type). CSRC count- (CC) 4 bity: licznik zawiera liczbę

identyfikatorów CSRC należących do obecnego

nagłówka Marker- (M) 1 bit: interpretacja pola jest definiowana

przez profil

Payload type- (PT) 7 bitów: pole identyfikuje format danych RTP, wymagana jest interpretacja zawartości przez aplikację. Profil definiuje standardowe mapowanie zawartości danych kodowych do PT.

Sequence number- 16 bitów: zwiększany o jeden po

każdorazowym wysłanym komunikacie

Timestamp- 32 bity: znacznik czasowy, znakowanie

jest w momencie wysłania pierwszego bajtu danych,

inkrementowany jest sekwencyjnie.

Synchronization source- (SSRC) 32 bity:

synchronizacja źródła, identyfikator powinien mieć

wartość losową, tak by dwa źródła synchronizacji

należące do tej samej sesji RTP nie posiadały tego

samego identyfikatora. Numer określa nadawcę

wiadomości zawierającej numer sekwencyjny oraz

znacznik czasowy danych.

CSRC list- 0 do 15 elementów, każdy opisany przez 32

bity: lista składowych źródeł dla danych zawartych w

pakiecie. Numer identyfikatorów jest podany przez pole

CC. Identyfikowanych jest tylko 15 źródeł.

Identyfikatory CSRC są umieszczane przez mixery

używając identyfikatorów SSRC składowego źródła.

Page 11: Audio/Video compressions and transmissions

Payload Type

Page 12: Audio/Video compressions and transmissions

Payload Type cd...

Page 13: Audio/Video compressions and transmissions

RTCP

Page 14: Audio/Video compressions and transmissions

Multiemisja

Zakres od 224.0.0.0 do 239.255.255.255

Page 15: Audio/Video compressions and transmissions

IGMP

Procedura polega na tym, że host wspierający IGMP przyłącza się do grupy wszystkich hostów (adres

224.0.0.1). To jest jedyny adres, którego członkiem musi być każdy host sieciowy. IGMP pracuje na

styku hostów i ich ruterów multicastowych, a także host – host, ruter - ruter. IGMP informuje lokalny

ruter o członkostwie hosta w multicastowej grupie. Pracuje na bazie usług IP, nie stosuje przy tym

warstwy transportowej TCP/UDP.

Page 16: Audio/Video compressions and transmissions

Java Media Framework

JMF posiada wsparcie dla wielu formatów multimedialnych i standardów kompresji wliczając

kodowanie i dekodowanie, są to między innymi: JPEG, MPEG-1, MPEG-2, QuickTime, AVI, WAV, MP3, ALAW, ULAW, GSM, G723, G728, G729, H261, H263, MIDI. Wspiera protokoły dostępowe:

HTTP, HTTPS, FTP, RTP, RTSP.

Page 17: Audio/Video compressions and transmissions

Stany pracy

Page 18: Audio/Video compressions and transmissions

Worker ReceiverThread

public class ReceiverThread extends Thread implements ReceiveStreamListener,SessionListener, ControllerListener {

/** * ReceiveStreamListener */public void update(ReceiveStreamEvent event) {

RTPManager rtpManager = (RTPManager) event.getSource();ReceiveStream receiveStream = event.getReceiveStream();Participant participant = receiveStream.getParticipant();if (event instanceof NewReceiveStreamEvent) {

receiveStream = ((NewReceiveStreamEvent)event).getReceiveStream();dataSource = receiveStream.getDataSource();

Page 19: Audio/Video compressions and transmissions

Worker TransmitterThread

public class TransmitterThread extends Thread implements ControllerListener,ReceiveStreamListener, RemoteListener {

/** * inicjuje urzedzenia i tworzy srodowisko transferu danych * * @return String */private String createProcessor() {

try {if (chosenFormat.equals(Codecs.JPEG_RTP)

|| chosenFormat.equals(Codecs.H263_RTP)|| chosenFormat.equals(Codecs.H261_RTP)) {

processor = Manager.createProcessor(new MediaLocator("vfw://0"));

} elseprocessor = Manager.createProcessor(new MediaLocator(

"dsound://"));System.out.println();

} catch (NoProcessorException e) {return e.getMessage() + "\n";

} catch (IOException e) {return e.getMessage() + "\n";

}

Page 20: Audio/Video compressions and transmissions

Worker TransmitterThread cd... /**

* metoda interfejsu ControllerListener, kontrola zdarzen dla klasy * Processor * * @param event */public void controllerUpdate(ControllerEvent event) {

if (event instanceof ConfigureCompleteEvent|| event instanceof RealizeCompleteEvent|| event instanceof PrefetchCompleteEvent) {

synchronized (obSync) {transferOK = true;obSync.notifyAll();

}} else if (event instanceof ControllerErrorEvent) {

synchronized (obSync) {transferOK = false;obSync.notifyAll();

}} else if (event instanceof EndOfMediaEvent) {

kill();System.exit(0);

}}