Metody kompresji i transmisji
 audio/video w sieci Internet
Próbkowanie i kwantyzacja
Standardy kompresji

    Audio                   
                                Video
    −   Kompresja mowy          −   ITU
         
           LPC (FS 1015 )            
                                       H.261
         
           CELP (G.728)              
                                       H.263
         
           RPE (LPC)            −   MPEG
         
           PCM (G.711)               
                                       MPEG-1
    −   Kompresja dźwięku            
                                       MPEG-2
         
           ADPCM (G.722,             
                                       MPEG-4
           G.726, G.727)
         
           MPEG
         
           AC3
System transmisji dźwięku
Standard MPEG-1
Porównanie standardów
   kompresji audio
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.
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.
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.
Real Time Transport Protocol
                                                                    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:

    Version- (V) 2 bity: wersja protokółu
                                                                     synchronizacja źródła, identyfikator powinien mieć

    Padding- (P) 1 bit: ustawiony bit oznacza, że dodano
                                                                     wartość losową, tak by dwa źródła synchronizacji
    wypełnienie, a ostatni bajt wskazuje ile jest bajtów
                                                                     należące do tej samej sesji RTP nie posiadały tego
    wypełnienia
                                                                     samego identyfikatora. Numer określa nadawcę

    Extension- (X) 1 bit: jeśli bit jest ustawiony, oznacza że
                                                                     wiadomości zawierającej numer sekwencyjny oraz
    nagłówek jest poprzedzony nagłówkiem rozszerzenia,
                                                                     znacznik czasowy danych.
    używane w przypadku zmian formatu danych (ang.
                                                                    CSRC list- 0 do 15 elementów, każdy opisany przez 32
    payload type).
                                                                     bity: lista składowych źródeł dla danych zawartych w

    CSRC count- (CC) 4 bity: licznik zawiera liczbę
                                                                     pakiecie. Numer identyfikatorów jest podany przez pole
    identyfikatorów CSRC należących do obecnego
                                                                     CC. Identyfikowanych jest tylko 15 źródeł.
    nagłówka
                                                                     Identyfikatory CSRC są umieszczane przez mixery

    Marker- (M) 1 bit: interpretacja pola jest definiowana
                                                                     używając identyfikatorów SSRC składowego źródła.
    przez profil
Payload Type
Payload Type cd...
RTCP
Multiemisja
      Zakres od 224.0.0.0
       do 239.255.255.255
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.
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.
Stany pracy
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();
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"));
                         } else
                                   processor = Manager.createProcessor(new MediaLocator(
                                                      "dsound://"));
                         System.out.println();
               } catch (NoProcessorException e) {
                         return e.getMessage() + "n";
               } catch (IOException e) {
                         return e.getMessage() + "n";
               }
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);
           }
  }

More Related Content

PDF
PLNOG 8: Piotr Wojciechowski - Przypadki z życia multicastów
PDF
PLNOG15: BGP Route Reflector from practical point of view
PDF
PLNOG 6: Bartłomiej Anszperger - MPLS
PDF
Hierarchia pamięci w systemach komputerowych.
PDF
PLNOG 3: Piotr Jabłoński - Realizacja styku międzyoperatorskiego dla usług L...
PDF
PLNOG 8: Bartłomiej Anszperger - MPLS - Co to jest? Z czym to gryźć? Jak i po...
PDF
Domain Driven Development
PPT
Security models
PLNOG 8: Piotr Wojciechowski - Przypadki z życia multicastów
PLNOG15: BGP Route Reflector from practical point of view
PLNOG 6: Bartłomiej Anszperger - MPLS
Hierarchia pamięci w systemach komputerowych.
PLNOG 3: Piotr Jabłoński - Realizacja styku międzyoperatorskiego dla usług L...
PLNOG 8: Bartłomiej Anszperger - MPLS - Co to jest? Z czym to gryźć? Jak i po...
Domain Driven Development
Security models

Similar to Audio/Video compressions and transmissions (7)

PDF
Transmisja multimediów w sieciach IP. Obraz i dźwięk.
PDF
PLNOG 7: Łukasz Bromirski, Rafał Szarecki - Mechanizmy QoS - absolutnie zupeł...
PPTX
RS232 presentation in polish language. Serial interfaces - interfejsy szeregowe
PDF
Silesia JUG : Java Message Service
PPTX
Video + Konferecja Polska 2014.Jak mądrze dokonać wyboru systemu do zunifikow...
PDF
PLNOG 13: Marcin Kuczera: Difficult business client – VOIP and modem data tra...
PPT
Szerokopasmowe (stacjonarne) sieci dostępowe
Transmisja multimediów w sieciach IP. Obraz i dźwięk.
PLNOG 7: Łukasz Bromirski, Rafał Szarecki - Mechanizmy QoS - absolutnie zupeł...
RS232 presentation in polish language. Serial interfaces - interfejsy szeregowe
Silesia JUG : Java Message Service
Video + Konferecja Polska 2014.Jak mądrze dokonać wyboru systemu do zunifikow...
PLNOG 13: Marcin Kuczera: Difficult business client – VOIP and modem data tra...
Szerokopasmowe (stacjonarne) sieci dostępowe
Ad

Audio/Video compressions and transmissions

  • 1. Metody kompresji i transmisji audio/video w sieci Internet
  • 3. Standardy kompresji  Audio  Video − Kompresja mowy − ITU  LPC (FS 1015 )  H.261  CELP (G.728)  H.263  RPE (LPC) − MPEG  PCM (G.711)  MPEG-1 − Kompresja dźwięku  MPEG-2  ADPCM (G.722,  MPEG-4 G.726, G.727)  MPEG  AC3
  • 6. Porównanie standardów kompresji audio
  • 7. 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.
  • 8. 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.
  • 9. 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.
  • 10. Real Time Transport Protocol  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:  Version- (V) 2 bity: wersja protokółu synchronizacja źródła, identyfikator powinien mieć  Padding- (P) 1 bit: ustawiony bit oznacza, że dodano wartość losową, tak by dwa źródła synchronizacji wypełnienie, a ostatni bajt wskazuje ile jest bajtów należące do tej samej sesji RTP nie posiadały tego wypełnienia samego identyfikatora. Numer określa nadawcę  Extension- (X) 1 bit: jeśli bit jest ustawiony, oznacza że wiadomości zawierającej numer sekwencyjny oraz nagłówek jest poprzedzony nagłówkiem rozszerzenia, znacznik czasowy danych. używane w przypadku zmian formatu danych (ang.  CSRC list- 0 do 15 elementów, każdy opisany przez 32 payload type). bity: lista składowych źródeł dla danych zawartych w  CSRC count- (CC) 4 bity: licznik zawiera liczbę pakiecie. Numer identyfikatorów jest podany przez pole identyfikatorów CSRC należących do obecnego CC. Identyfikowanych jest tylko 15 źródeł. nagłówka Identyfikatory CSRC są umieszczane przez mixery  Marker- (M) 1 bit: interpretacja pola jest definiowana używając identyfikatorów SSRC składowego źródła. przez profil
  • 13. RTCP
  • 14. Multiemisja Zakres od 224.0.0.0 do 239.255.255.255
  • 15. 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.
  • 16. 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.
  • 18. 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();
  • 19. 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")); } else processor = Manager.createProcessor(new MediaLocator( "dsound://")); System.out.println(); } catch (NoProcessorException e) { return e.getMessage() + "n"; } catch (IOException e) { return e.getMessage() + "n"; }
  • 20. 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); } }