GStreamer. Bogdan Kreczmer. Katedra Cybernetyki i Robotyki Wydziału Elektroniki Politechnika Wrocławska

Podobne dokumenty
GStreamer. Bogdan Kreczmer. Katedra Cybernetyki i Robotyki Wydziału Elektroniki Politechnika Wrocławska

ZAŁOŻENIA PROTOKOŁU RTP

Czujniki PSD i dalmierze triangulacyjne

Zasoby, pliki graficzne

Qt sygnały i sloty. Bogdan Kreczmer. Katedra Cybernetyki i Robotyki Wydział Elektroniki Politechnika Wrocławska

Schemat konstrukcja pliku Makefile

Serwery multimedialne RealNetworks

Papyrus. Papyrus. Katedra Cybernetyki i Robotyki Politechnika Wrocławska

Transmisja danych multimedialnych. mgr inż. Piotr Bratoszewski

Przesyłania danych przez protokół TCP/IP

Sieci Komputerowe Modele warstwowe sieci

Przestrzenie nazw. Bogdan Kreczmer. Katedra Cybernetyki i Robotyki Politechnika Wrocławska

Model OSI. mgr inż. Krzysztof Szałajko

Czujniki PSD i dalmierze triangulacyjne

Protokoły sieciowe - TCP/IP

Weryfikatory, zasoby graficzne

Sieci komputerowe - warstwa transportowa

Sieci komputerowe Warstwa transportowa

Dalmierze optyczne. Bogdan Kreczmer.

Praca z aplikacją designer

Wydział Informatyki, Elektroniki i Telekomunikacji Katedra Telekomunikacji

Klient-Serwer Komunikacja przy pomocy gniazd

OpenGL oświetlenie. Bogdan Kreczmer. Katedra Cybernetyki i Robotyki Wydziału Elektroniki Politechnika Wrocławska

System operacyjny UNIX Internet. mgr Michał Popławski, WFAiIS

Rozdział ten zawiera informacje na temat zarządzania Modułem Modbus TCP oraz jego konfiguracji.

Podstawy Transmisji Danych. Wykład IV. Protokół IPV4. Sieci WAN to połączenia pomiędzy sieciami LAN

Qt sygnały i designer

MODEL WARSTWOWY PROTOKOŁY TCP/IP

Sieci komputerowe. Wykład 5: Warstwa transportowa: TCP i UDP. Marcin Bieńkowski. Instytut Informatyki Uniwersytet Wrocławski

Zasady budowy i przekazywania komunikatów wykorzystywanych w Systemie IT KDPW_CCP

Testy współpracy. Asterisk z techniką WebRTC

Zasady budowy i przekazywania komunikatów XML dla rynku OTC w systemie KDPW_CCP

1 Moduł Diagnostyki Sieci

DR INŻ. ROBERT WÓJCIK DR INŻ. JERZY DOMŻAŁ

Politechnika Łódzka. Instytut Systemów Inżynierii Elektrycznej

Marek Parfieniuk, Tomasz Łukaszuk, Tomasz Grześ. Symulator zawodnej sieci IP do badania aplikacji multimedialnych i peer-to-peer

Wprowadzenie do szablonów klas

Zasady budowy i przekazywania komunikatów XML w systemie kdpw_otc

Zarządzanie ruchem i jakością usług w sieciach komputerowych

Referencyjny model OSI. 3 listopada 2014 Mirosław Juszczak 37

Szablony funkcji i szablony klas

Akademickie Centrum Informatyki PS. Wydział Informatyki PS

Dr Michał Tanaś(

SEGMENT TCP CZ. II. Suma kontrolna (ang. Checksum) liczona dla danych jak i nagłówka, weryfikowana po stronie odbiorczej

Przesył mowy przez internet

DR INŻ. ROBERT WÓJCIK DR INŻ. JERZY DOMŻAŁ

Zasady budowy i przekazywania komunikatów XML w systemie kdpw_otc

Sieci komputerowe - Protokoły warstwy transportowej

Szczegółowy opis przedmiotu zamówienia

Procedura Walidacyjna Interfejs

TCP/IP formaty ramek, datagramów, pakietów...

Sieci Komputerowe. Wykład 1: TCP/IP i adresowanie w sieci Internet

Adresy w sieciach komputerowych

Opis protokołu RPC. Grzegorz Maj nr indeksu:

POŁĄCZENIE STEROWNIKÓW ASTRAADA ONE MIĘDZY SOBĄ Z WYKORZYSTANIEM PROTOKOŁU UDP. Sterowniki Astraada One wymieniają między sobą dane po UDP

DR INŻ. ROBERT WÓJCIK DR INŻ. JERZY DOMŻAŁ

Wykaz zmian w programie SysLoger

5. Model komunikujących się procesów, komunikaty

Laboratorium 6.7.2: Śledzenie pakietów ICMP

Wideokonferencje MGR INŻ. PAWEŁ SPALENIAK

MODEL OSI A INTERNET

Programowanie Sieciowe 1

Opracowanie protokołu komunikacyjnego na potrzeby wymiany informacji w organizacji

ZiMSK. VLAN, trunk, intervlan-routing 1

ArtPlayer oprogramowanie do odtwarzania plików video sterowane Artnet/DMX V1.0.1

Wykład 4: Protokoły TCP/UDP i usługi sieciowe. A. Kisiel,Protokoły TCP/UDP i usługi sieciowe

Wymagania i zalecenia dla usługi głosowej w Sieci FreePhone. MASH.PL Wymagania i zalecenia dla usługi głosowej w Sieci FreePhone Strona 1

Wykład Nr Sieci bezprzewodowe 2. Monitorowanie sieci - polecenia

Uproszczony opis obsługi ruchu w węźle IP. Trasa routingu. Warunek:

TELEFONIA INTERNETOWA

ZiMSK NAT, PAT, ACL 1

Podstawowe protokoły transportowe stosowane w sieciach IP cz.1

Warstwa sieciowa. Model OSI Model TCP/IP. Aplikacji. Aplikacji. Prezentacji. Sesji. Transportowa. Transportowa

Spis treści. 1 Moduł Modbus TCP 4

DOKUMENTACJA TECHNICZNA SMS API MT

System Rozproszone Komunikator Dokumentacja. Maciej Muszkowski Jakub Narloch

Programowanie współbieżne i rozproszone

Bezpieczeństwo w M875

TCP/IP. Warstwa łącza danych. mgr inż. Krzysztof Szałajko

Praca dyplomowa. Program do monitorowania i diagnostyki działania sieci CAN. Temat pracy: Temat Gdańsk Autor: Łukasz Olejarz

Sieci komputerowe i bazy danych

Unicast jeden nadawca i jeden odbiorca Broadcast jeden nadawca przesyła do wszystkich Multicast jeden nadawca i wielu (podzbiór wszystkich) odbiorców

Podstawy Informatyki. Inżynieria Ciepła, I rok. Wykład 13 Topologie sieci i urządzenia

Strumieniowanie danych

SSL (Secure Socket Layer)

Rok akademicki: 2012/2013 Kod: IIN SK-n Punkty ECTS: 4. Kierunek: Informatyka Specjalność: Systemy komputerowe

Laboratorium Sieci Komputerowych - 2

PBS. Wykład Zabezpieczenie przełączników i dostępu do sieci LAN

asix4 Podręcznik użytkownika CAN_AC_PCI - drajwer protokołu CANBUS dla karty CAN_ACx_PCI Podręcznik użytkownika

SIP Studia Podyplomowe Ćwiczenie laboratoryjne Instrukcja

Protokoły wspomagające. Mikołaj Leszczuk

ArtPlayer. Odtwarzacz plików video sterowany poprzez Artnet/DMX V Instrukcja obsługi.

Warstwy i funkcje modelu ISO/OSI

DANE W SIECIACH TELEKOMUNIKACYJNYCH

Sieci komputerowe Mechanizmy sterowania przebiegiem sesji TCP w Internecie

Szczegółowe informacje dotyczące przekazywania do Bankowego Funduszu Gwarancyjnego informacji kanałem teletransmisji

Protokół wymiany sentencji, wersja 1

Sygnalizacja Kontrola bramy Media

Sieci komputerowe w sterowaniu informacje ogólne, model TCP/IP, protokoły warstwy internetowej i sieciowej

Industrial Ethernet Dokumentacja techniczna połączenia Sterowniki S7-400(300) firmy Siemens - System PRO-2000 firmy MikroB

Transkrypt:

GStreamer Bogdan Kreczmer bogdan.kreczmer@pwr.edu.pl Katedra Cybernetyki i Robotyki Wydziału Elektroniki Politechnika Wrocławska Kurs: Copyright c 2016 Bogdan Kreczmer Niniejszy dokument zawiera materiały do wykładu dotyczącego programowania obiektowego. Jest on udostępniony pod warunkiem wykorzystania wyłącznie do własnych prywatnych potrzeb i może on być kopiowany wyłącznie w całości, razem z niniejszą stroną tytułową.

Niniejsza prezentacja została wykonana przy użyciu systemu składu PDFL A TEX oraz stylu beamer, którego autorem jest Till Tantau. Strona domowa projektu Beamer: http://latex-beamer.sourceforge.net

1 GStreamer 2 RTP Real-time Transport Protocol Real-time Transport Control Protocol 3 Bins for sessions

ogólnie GStreamer

Potoki GStreamer

Komunikacja GStreamer

Elementy GStreamer

Pojemniki GStreamer

Czym jest protokół RTP Real-time Transport Protocol Real-time Transport Control Protocol RTP (Real-time Transport Protocol) jest to protokół transmisji w czasie rzeczywistym. Pakiet protokołu RTP zawiera informacje takie jak: typie przesyłanych danych, numer seryjny, znacznik czasu. RTP nie gwarantuje jakości usługi (QoS). Używa on zazwyczaj jako protokołu warstwy transportowej protokołu UDP. Podstawowym obszarem zastosowań tego typu protokołu jest telefonia internetowa, systemy telekonferencyjne, serwisy telewizji internetowej itd. Protokół ten jest obecnie uznawany jako dominujący standard dla transmisji audio/video w sieciach internetowych.

Podstawowe cechy GStreamer Real-time Transport Protocol Real-time Transport Control Protocol Cechy Kompensacja pulsacji (ang. jitter), Kontrola poprawnej sekwencji przysyłanych pakietów danych, Pozwala na rozsyłanie danych do wielu punktów docelowych (multicast). Motywacja Aplikacje multimedialne tolerują częściową utratę danych. Np. utrata jednej 0,1s nagrania przy dobrych algorytmach maskujących dla odbiorcy końcowego, ta utrata może być w ogóle niezauważalna. W tego typu aplikacjach prefereuje się szybkość dostarczenia danych niż pewność ich otrzymania. Z tego powodu preferowany jest protokół UDP niż TCP.

Struktura pakietu GStreamer Real-time Transport Protocol Real-time Transport Control Protocol Struktura pakietu VoIP RTP Nagłówek Nagłówek Nagłówek Zawartość IP UDP RTP RTP Protokół RTP może być uważany jako podwarstwa warstwy transportowej. a Z punktu widzenia programisty, RTP może być postrzegany jako część warstwy aplikacji. a http://www.grc.upv.es/docencia/tra/referencias/mmprotocols/rtp.htm

Czym jest protokół RTP Real-time Transport Protocol Real-time Transport Control Protocol RTCP (Real-time Transport Control Protocol) jest to siostrzany protokół w stosunku do protokołu RTP. Wspiera on go dzięki mechanizmom sterującym. Dostarcza również informacji statystycznej. Protokół RTCP opiera się na okresowej transmisji pakietów kontrolnych do wszystkich uczestników sesji. Kodowanie i autoryzacja RTCP nie dostarcza żadnych mechanizmów kodowania i autoryzacji połączenia. Tego typu mechanizmy realizowane są przez inne protokoły takie jak SRTP (Secure Real-time Transport Protocol).

Funkcje protokołu RTCP Real-time Transport Protocol Real-time Transport Control Protocol Podstawowe zadania: Dostarcza zwrotnej informacji odnośnie poprawności odebranych danych. Pozwala to na monitorowanie jakości usług i ewentualną adaptację metody kodowania. Przenosi stały identyfikator transportowy źródła protokołu RTP tzw nazwą kanoniczną (CNAME) do wszystkich danej sesji. Oczekuje się, że identyfikator źródła będzie unikalny. Jednak powiązanie źródła z punktem docelowym może się zmieniać w trakcie trwania sesji. CNAME dostarcza unikalnego identyfikatora dla danej instancji aplikacji. Umożliwia dopasowanie częstotliwość wysyłanych pakietów kontrolnych do liczby użytkowników sesji, Opcjonalnie przenosi zminimalizowaną informację kontrolną sesji, np. wyświetlanie identyfikatora użytkownika (nadawcy) na ekranie monitora odbiorcy pakietów.

Typy komunikatów GStreamer Real-time Transport Protocol Real-time Transport Control Protocol Rodzaje komunikatów SR (Sender Report) jest przesyłany periodycznie przez nadawcę/nadawców, aby przekazać i odebrać statystykę przesyłanych pakietów. Przesyłany raport zawiera znacznik czasu, co umożliwia zsynchronizowanie np. pakietów video i audio. RR (Receiver Report) przyjmowanie statystyki od uczestników sesji nie będących aktywnymi nadawcami. SDES (Source Description) przekazuje opis źródła wraz z danymi, które umożliwiają jego identyfikację. Jest wykorzystywany do przesłania identyfikatora CNAME. BYE zakończenie udziału w sesji. APP specyficzne komunikatay dla danej aplikacji. Pozwala to na tworzenie rozszerzeń protokołu RTCP.

Komunikacja GStreamer Real-time Transport Protocol Real-time Transport Control Protocol Wykorzystanie portów W typowej konfiguracji wykorzystującej protokoły RTP i RTCP zakłada się, że transmisja z wykorzystaniem protokołu RTP jest realizowana przez port UDP o parzystym numerze, zaś transmisja RTCP przez port o numerze o jeden większy od portu z transmisją z protokołem RTP.

GstRtpSession Ogólny opis Bins for sessions GObject +----GstObject +----GstElement +----GstRtpSession GstRtpSession jest menadżer sesji RTP, który modeluje pojedynczego użytkownika z unikalnym SSRC (Synchronization Source Identifier) w danej sesji RTP. Sesja ta może być użyta do odbioru pakietów RTP i RTCP. W zależności od tego jakiego typu łączówki (ang. pad) są żądane w trakcie tworzenia połączenia do elementów, powoduje to aktywowanie odpowiednich funkcjonalności. Zadania realizowane przez menadżera GstRtpSession Weryfikacja pakietów RTP na podstawie ich kolejnych numerów, Utrzymywanie bazy identyfikatorów SSRC uczestników sesji, Zbieranie statystyk dla każdego uczestnika sesji na podstawie pakietów RTCP. Utrzymywanie harmonogramu (ang. scheduling) pakietów RR/RS RTCP.

GstRtpSession Funkcjonalności Bins for sessions GObject +----GstObject +----GstElement +----GstRtpSession Użycie GstRtpSession do odbioru pakietów RTP należy zażądać łączówki recv rtp sink, automatycznie zostanie wygenerowana łączówka recv rtp src. Użycie GstRtpSession do odbioru pakietów RTCP należy zażądać łączówki recv rtcp sink, automatycznie zostanie wygenerowana łączówka sync src. Odbierane pakiety będą użyte do aktualizacji statystyk i bazy uczestników sesji. Użycie GstRtpSession do nadawania pakietów RTCP należy zażądać łączówki send rtcp sink, automatycznie zostanie wygenerowana łączówka send rtcp src. Użycie GstRtpSession do nadawania pakietów RTP należy zażądać łączówki send rtp sink, automatycznie zostanie wygenerowana łączówka send rtp src.

GstRtpSsrcDemux Ogólny opis Bins for sessions GObject +----GstObject +----GstElement +----GstRtpSsrcDemux GstRtpSsrcDemux jest demultiplekserem dla pakietów protokołu RTP. Do demultipleksowania pakietów wykorzystywany jest identyfikator SSRC (Synchronization Source Identifier). Podstawowym celem GstRtpSsrcDemux jest ułatwienie odbioru pakietów RTP w strumieniu z różnymi SSRC. Funkcjonalności: Jeżeli w strumieniu zostanie wykryty nowy SSRC, to tworzona jest łączówka (pad) new-src-pad i emitowany jest sygnał.

GstRtpPtDemux Ogólny opis Bins for sessions GObject +----GstObject +----GstElement +----GstRtpPtDemux GstRtpPtDemux jest demultiplekserem dla pakietów protokołu RTP. Do demultipleksowanie pakietów realizowane jest na podstawie typu jego zawartości. Funkcjonalności: Jeżeli w strumieniu zostanie wykryty nowy typ pakietu, to tworzona jest łączówka (pad) new-payload-type i emitowany jest sygnał.

GstRtpJitterBuffer Ogólny opis Bins for sessions GObject +----GstObject +----GstElement +----GstRtpJitterBuffer GstRtpJitterBuffer składuje i usuwa duplikujące się odebrane pakiety RTP. Czeka też przez ustalony limit czasu na brakujące pakiety. Pakiety, które przyjdą zbyt późno uważane są za utracone. Aktywność tego elementu wprowadza pewne opóźnienie w potoku przetwarzającym pakiety. Aby oszacować swoje opóźnienie potrzebuje on częstotliwość zegara zawartości pakietów RTP.

GstRtpBin Ogólny opis Bins for sessions GObject +----GstObject +----GstElement +----GstBin +----GstRtpBin GstRtpBin Łączy w sobie funkcje elementów GstRtpSession, GstRtpSsrcDemux, GstRtpJitterBuffer i GstRtpPtDemux. Pozwala na tworzenie wielu sesji RTP, które są synchronizowane razem pakietami RTCP SR. GstRtpBin jest konfigurowany poprzez żądanie udostępnienia łączówek, które definiują i aktywują odpowiednie funkcjonalności, analogicznie jak to jest w przypadku elementu GstRtpSession.

Bins for sessions GstRtpBin Opis działania: odbiorca pakietów RTP GObject +----GstObject +----GstElement +----GstBin +----GstRtpBin Załóżmy, że chcemy użyć GstRtpBin jako odbiorcę pakietów RTP. Należy wówczas zażądać łączówki recv rtp sink %d. Numer sesji musi być wyspecyfikowany w nazwie łączówki. (recv rtp sink %d GstRtpSession): dane łączówki są dostarczne do menadżera GstRtpSession. (GstRtpSession): przetwarza i dokonuje weryfikacji, po czym przekazuje dalej. (GstRtpSsrcDemux): każdy strumień jest demultipleksowany w oparciu o identyfikatory SSRC, a następnie przesyłany dalej. (GstRtpJitterBuffer): wygładza strumień/strumienie i przesyła dalej. (GstRtpPtDemux): demultipleksuje strumienie w oparciu o typ ich zawartości pakietów RTP. Dla każdego indywidualnego rozdzielonego strumienia tworzone są łączówki recv rtp src %d %d %d.

Bins for sessions GstRtpBin Opis działania: odbiorca pakietów RTCP GObject +----GstObject +----GstElement +----GstBin +----GstRtpBin Odbiorca RTCP Załóżmy, że chcemy użyć GstRtpBin jako odbiorcę pakietów RTCP. Należy wówczas zażądać łączówki recv rtcp sink %d. Numer sesji musi być wyspecyfikowany w nazwie łączówki. Nadawca RTCP Jeżeli chcemy aby menadżer sesji generował i wysyłał pakiety RTCP, to należy zażądać łączówki recv rtcp src %d z odpowiednim numerem sesji. Pakiety wysyłane przez tę łączówkę będą zawierały raporty SR/RR RTCP. Powinny one być przesłane do wszystkich uczesników danej sesji.

Bins for sessions GstRtpBin Opis działania: nadawca pakietów RTP GObject +----GstObject +----GstElement +----GstBin +----GstRtpBin Załóżmy, że chcemy użyć GstRtpBin jako nadawcę pakietów RTP. Należy wówczas zażądać łączówki send rtp sink %d. Numer sesji musi być wyspecyfikowany w nazwie łączówki. Powyższe żądanie spowoduje automatyczne utworzenie łączówki send rtp src %d. Jeżeli numer sesji nie jest jawnie wyspecyfikowany, to zostanie udostępniona łączówka sesji o najniższym numerze. Przekazywane do menadżera sesji pakiety będą modyfikowane poprzez wstawienie przez niego własnego identyfikatora SSRC i w takiej postaci będą dalej przekazywane na wyjściową łączówkę send rtp src %d.

Bins for sessions GstX264Enc Plugin: x264enc (Ugly) GObject +----GstObject +----GstElement +----GstX264Enc GstX264Enc koduje surowy strumień video w skompresowany format H264, znany również jako MPEG-4 AVC (Advanced Video Codec). Ma możliwość ustawienia około 28 parametrów. Wybrane parametry: pass kontroluje typ kodowania. Domyślnie: Constant Bitrate Encoding. bitrate szybkość bitowa w kbit/s. threads ilość wątków użytych przez kodek.

GstX264Enc Przykłady użycia GObject +----GstObject +----GstElement +----GstX264Enc Bins for sessions gst-launch -v videotestsrc num-buffers=1000! x264enc qp-min=18!\ avimux! filesink location=videotestsrc.avi gst-launch -v v4l2src device="/dev/video1"!\ video/x-raw-yuv,width=320,height=240,framerate=10/1!\ x264enc qp-min=18! avimux! filesink location=videotestsrc.avi

Bins for sessions GstRtpH264Pay Plugin: x264enc (Good) GObject +----GstObject +----GstElement +----GstBaseRTPPayload +----GstRtpH264Pay GstRtpH264Pay zakodowany strumień w formacie H264 konwertuje do pakietów RTP.

Bins for sessions GstRtph264Depay Plugin: rtph264depay (Good) GObject +----GstObject +----GstElement +----GstBaseRTPDepayload +----GstRtpH264Depay GstRtpH264Depay wydobywa z pakietów RTP zakodowany strumień w formacie H264.

Koniec prezentacji Dziękuję za uwagę