Which Network Streaming Protocol Should I Pick?

Total Page:16

File Type:pdf, Size:1020Kb

Which Network Streaming Protocol Should I Pick? Which Network Streaming Protocol Should I Pick? Olivier Crête Multimedia Lead [email protected] 1 Who am I? ● GNOME developer since 1999 (20 years!) ● GStreamer developer at Collabora since 2007 ● Started with VVoIP: Telepathy & Farstream 2 Network protocols ? ● RTP ● MMS ● Icecast ● SmoothStreaming ● SRT ● RTSP ● AVB ● HTTP streaming ● RIST ● HLS ● RTSP/RDT ● MPEG-TS over UDP ● WebRTC ● SIP ● VNC (RFB) ● SMPTE ST2110 ● RTMP ● SDI ● MPEG-DASH 3 Trade-off Latency vs Reliability 4 Adaptivity ● None ● Server-side ● Client-side 5 Low latency 6 Local network only ● Uncompressed high bandwidth – SDI – SMPTE ST2110 ● Uncompressed video over RTP ● Layer 2 with reserved bandwidth – AVB 7 Local network only: IP based ● RTP – With dynamic config: RTSP/UDP ● Security cameras – Without: plain RTP ● Legacy: MPEG-TS over UDP ● Avoid NDI … just plain evil 8 Low latency < 1 second 9 Lowest latency ● SRT – MPEG-TS transport – Guarantees order, not delivery – Tries to retransmit – Popular in TV/Broadcast world ● RTP based 10 RTP/UDP Based ● MPEG-TS stream – RIST, much less popular than SRT ● Legacy VoIP – SIP (or XMPP) ● Modern video call – WebRTC 11 Medium latency < 10 seconds 12 Medium latency ● CDN scalable ● Pushed over TCP ● Specialized ● Legacy 13 CDN scalable ● Client adaptive ● Low latency MPEG-DASH ● Low latency HLS 14 Pushed over TCP ● Security camera – RTSP/TCP ● Upload to live cloud streaming – RTMP (but consider SRT is available) ● Internet Radio – HTTP Streaming / Icecast 15 Specialized ● Desktop sharing – VNC (RFB) 16 Legacy interop ● RealPlayer – RTSP / RDT ● Microsoft players – MMS 17 Highest latency 18 CDN scalable ● Client adaptive ● MPEG-DASH ● HLS 19 Which Network Streaming Protocol Should I Pick? Questions? 20.
Recommended publications
  • Libghc-Gtk-Prof Libghc-Gio-Prof 0. Libghc-Pango-Prof 0. Zorp
    linphone-common libhugs-base-bundled jlex libmono-security2.0-cil 0. libkonq5-templates libxfixes-dev php5-tidy ruby-magic python-peak.util 0. 0. libisc83 python-async 0. 0. linphone kvirc-modules libjaxe-java syncache 3.23886639676 gcj-4.6-jre-lib 0.0. 0. 0. liblua50-dev 0. 0. 0. libgdkcutter-pixbuf-dev 0. libavahi-common-data libbind9-80 kget gir1.2-cogl-1.0 0. 0. 0. hugs libblacs-mpi-dev 0. python-syfi 0. 0. 0. 0. libhttp-exception-perl 0. 0. libmono-posix2.0-cil libkonq-common 0. 0.877192982456 0. 0.78125 libxcursor-dev 0.31919744642 0. docvert-libreoffice pdf2svg 0. python-peak.rules 2.17391304348 0. 0. 0. librasqal3-dev 0. 0. libxsltc-java libgretl1 gretl gretl-common 0.877192982456 python-passlib python-keystone python-pam kvirc kvirc-data python-cl python-celery python-mailer python-radix zorp python-kzorp libjutils-java libjinput-java libjinput-jni 0. samizdat ecj-gcj libecj-java-gcj linphone-nogtk 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. geany-common 4.04858299595 0. 0. 0. 0. paw 0. python 0. 0. 0. 0. 0. 0. libisccc80 python-gitdb python-git 0. 0. 0. llvm-3.1 0. 0. 0. 0. cl-alexandria 0. liblua50 liblualib50 0. cutter-gtk-support gir1.2-clutter-1.0 0.0227272727273 libavahi-client3 0. 0. 0. libmumps-dev 1.06382978723 0. 0. 0. libtie-shadowhash-perl ruby-graffiti libkonq5abi1 libkvilib4 docvert ruby-whitewash python-turbojson x11proto-fixes-dev libhugs-haskell98-bundled ecj libmono-system2.0-cil 0.
    [Show full text]
  • Presents : Coreboot for Dummies
    Coreboot for Dummies By Youness Alaoui This adventure has been sponsored by : What are we gonna talk about? •Who am I ? •Getting started with coreboot! •Getting an existing port to build and work •Testing and finishing the Librem 13 v1 port •Starting a new port from scratch •Debug output, how hard can it be? •Summary of doing a port •It's question time! Who am I ? ● Youness Alaoui, a.k.a KaKaRoTo ● aMSN developper ● libnice, Farstream, GStreamer, Meego ● PS3 reverse-engineer ● Freelance consultant ● Most importantly: a coreboot newbie Getting started with coreboot! ● What is coreboot? How does it work ? ● Looking at the entry point… Bad ideas ● The Three Stooges ● Lack of documentation ● Excessive documentation ● Getting started tutorial How to brick a laptop quickly and painlessly! ● Just kidding, it will be painful to the laptop. ● At first glance, most wiki information is about desktop motherboards ● Backup the rom before doing anything else! ● Don’t solder to the motherboard! Dumping the flash on v2 hardware ● Used a Logic Analyzer ● Dump trace data into CSV ● Script to analyze SPI commands and reconstitute the image from reads ● Realize the image is corrupted ● Adjust for <2ns spikes to ignore cross talk ● Give up Dumping the flash on v2 hardware Dumping the flash on v1 hardware ● Don't trust AFULNX, AFUDOS, AFUWIN ● Flashrom to the rescue! ● Laptops and EC ● Use a SOIC clip, instead of a chip socket ● Understanding the Intel Flash Descriptor ● Powering the flash chip and hardware magical nonsense First coreboot build ● The first build tutorial is an excellent start ● Missing microcode ● Missing blobs and descriptors Binary blobs, gotta catch them all! ● How to dump the VGA Bios properly ● Where to get the MRC.bin file ? ● What about the refcode.bin ? ● IFD Descriptor and ME binaries The importance of debugging ● Getting USB debug to work was easy, thank you! ● With no debug output, you can’t properly do a port.
    [Show full text]
  • Red Hat Enterprise Linux 7 7.8 Release Notes
    Red Hat Enterprise Linux 7 7.8 Release Notes Release Notes for Red Hat Enterprise Linux 7.8 Last Updated: 2021-03-02 Red Hat Enterprise Linux 7 7.8 Release Notes Release Notes for Red Hat Enterprise Linux 7.8 Legal Notice Copyright © 2021 Red Hat, Inc. The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/ . In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version. Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law. Red Hat, Red Hat Enterprise Linux, the Shadowman logo, the Red Hat logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries. Linux ® is the registered trademark of Linus Torvalds in the United States and other countries. Java ® is a registered trademark of Oracle and/or its affiliates. XFS ® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries. MySQL ® is a registered trademark of MySQL AB in the United States, the European Union and other countries. Node.js ® is an official trademark of Joyent. Red Hat is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
    [Show full text]
  • Red Hat Enterprise Linux 7 7.9 Release Notes
    Red Hat Enterprise Linux 7 7.9 Release Notes Release Notes for Red Hat Enterprise Linux 7.9 Last Updated: 2021-08-17 Red Hat Enterprise Linux 7 7.9 Release Notes Release Notes for Red Hat Enterprise Linux 7.9 Legal Notice Copyright © 2021 Red Hat, Inc. The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/ . In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version. Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law. Red Hat, Red Hat Enterprise Linux, the Shadowman logo, the Red Hat logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries. Linux ® is the registered trademark of Linus Torvalds in the United States and other countries. Java ® is a registered trademark of Oracle and/or its affiliates. XFS ® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries. MySQL ® is a registered trademark of MySQL AB in the United States, the European Union and other countries. Node.js ® is an official trademark of Joyent. Red Hat is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
    [Show full text]
  • Collabora 2017 16X9
    GStreamer in the world of Android Camera 3 Olivier Crête Open First Who am I ? ● GStreamer at Collabora since 2007 ● Started with VVoIP: Telepathy & Farstream ● Helps our customers use GStreamer – Many hardware integration projects 2 What is Camera 3? ● New Camera API style ● Introduced by Android 5.0 in 2004 ● Exposes modern SoC cameras 3 Modern SoCs? ● Used in all phones ● Multiple hardware blocks ● Configurable hardware pipeline ● Signal level transfer 4 Features ● Multiple streams from same sensor – Different characteristics for each ● Request based – Pull instead of push 5 What is a Request? ● Request to capture one frame ● Per request parameters ● Enables – HDR – Burst captures – Traditional video: timed requests 6 Existing APIs ● Linux: Media Controller – Requires per-hardware userspace code ● Android has HAL for this – Generic Linux has nothing – Intel has icamerasrc ● Android Java/NDK Camera2 API 7 Our design ● New base class – Not GstBaseSrc ● We tried, it was a huge pain ● Multiple source pads – Request pads – Stream APIs on pads 8 Pad API ● Per stream properties using GObject Properties ● Two types based on Caps frame rate 9 Caps frame rate = 0 / 1 ● Manual request using action signal or Ginterface ● Start/Stop method to start bursts – Possibly infinite bursts 10 Caps Frame rate > 0 ● Automatic timed requests based on framerate ● Stop on not-linked – Restart on reconfigure 11 Limitations ● Media Controller not dynamic – Only allow caps change in the READY→ PAUSED transition – Maybe only if more than one stream (pad) ● Some “” stream properties apply globally ¯\_( )_/¯ ツ 12 Android HAL limitations ● Requires single threaded access ● Recommendation: – One thread to interact – Queues frames for each pad – Streaming threads pick up from there ● Specific to Android HAL 13 Implementation status ● Only horribly prototype ● Code has no value – Based on GstBaseSrc – Tested with a single Android HAL ● Will not publish ● Code by Nicolas, Vincent P and Wonchul 14 Thank you!.
    [Show full text]
  • Empower 3 Service Release 4
    *716006210* *Ver.01* Empower 3 Service Release 4 Release Notes 716006210 Copyright © Waters Corporation 2020 Version 01 (previously released as Rev.A) All rights reserved General information Copyright notice © 2020 WATERS CORPORATION. PRINTED IN THE UNITED STATES OF AMERICA AND IN IRELAND. ALL RIGHTS RESERVED. THIS DOCUMENT OR PARTS THEREOF MAY NOT BE REPRODUCED IN ANY FORM WITHOUT THE WRITTEN PERMISSION OF THE PUBLISHER. The information in this document is subject to change without notice and should not be construed as a commitment by Waters Corporation. Waters Corporation assumes no responsibility for any errors that may appear in this document. This document is believed to be complete and accurate at the time of publication. In no event shall Waters Corporation be liable for incidental or consequential damages in connection with, or arising from, its use. For the most recent revision of this document, consult the Waters website (www.waters.com). Trademarks CitrixTM is a registered trademark of Citrix Systems, Inc. and/or one or more of its subsidiaries, and may be registered in the United States Patent and Trademark Office and in other countries. EmpowerTM is a trademark of Waters Corporation. LAC/ETM is a trademark of Waters Corporation. Linux® is a registered trademark of Linus Torvalds. Oracle® is a registered trademark of Oracle Corporation and/or its affiliates. Red Hat® is a registered trademark of Red Hat, Inc. THE SCIENCE OF WHAT'S POSSIBLETM is a trademark of Waters Corporation. WatersTM is a trademark of Waters Corporation. Windows® is a registered trademark of Microsoft Corporation in the US and/or other countries.
    [Show full text]
  • Installed Packages Gconf2.X86 64 3.2.6-8.El7 @Anaconda Geoip
    Installed Packages GConf2.x86_64 3.2.6-8.el7 @anaconda GeoIP.x86_64 1.5.0-11.el7 @anaconda ModemManager.x86_64 1.6.0-2.el7 @anaconda ModemManager-glib.x86_64 1.6.0-2.el7 @anaconda NetworkManager.x86_64 1:1.4.0-12.el7 @anaconda NetworkManager-adsl.x86_64 1:1.4.0-12.el7 @anaconda NetworkManager-glib.x86_64 1:1.4.0-12.el7 @anaconda NetworkManager-libnm.x86_64 1:1.4.0-12.el7 @anaconda NetworkManager-libreswan.x86_64 1.2.4-1.el7 @anaconda NetworkManager-libreswan-gnome.x86_64 1.2.4-1.el7 @anaconda NetworkManager-team.x86_64 1:1.4.0-12.el7 @anaconda NetworkManager-tui.x86_64 1:1.4.0-12.el7 @anaconda NetworkManager-wifi.x86_64 1:1.4.0-12.el7 @anaconda OpenEXR-libs.x86_64 1.7.1-7.el7 @anaconda PackageKit.x86_64 1.0.7-6.el7.centos @anaconda PackageKit-command-not-found.x86_64 1.0.7-6.el7.centos @anaconda PackageKit-glib.x86_64 1.0.7-6.el7.centos @anaconda PackageKit-gstreamer-plugin.x86_64 1.0.7-6.el7.centos @anaconda PackageKit-gtk3-module.x86_64 1.0.7-6.el7.centos @anaconda PackageKit-yum.x86_64 1.0.7-6.el7.centos @anaconda PyQt4.x86_64 4.10.1-13.el7 @anaconda PyYAML.x86_64 3.10-11.el7 @anaconda abattis-cantarell-fonts.noarch 0.0.16-3.el7 @anaconda abrt.x86_64 2.1.11-45.el7.centos @anaconda abrt-addon-ccpp.x86_64 2.1.11-45.el7.centos @anaconda abrt-addon-kerneloops.x86_64 2.1.11-45.el7.centos @anaconda abrt-addon-pstoreoops.x86_64 2.1.11-45.el7.centos @anaconda abrt-addon-python.x86_64 2.1.11-45.el7.centos @anaconda abrt-addon-vmcore.x86_64 2.1.11-45.el7.centos @anaconda abrt-addon-xorg.x86_64 2.1.11-45.el7.centos @anaconda abrt-cli.x86_64 2.1.11-45.el7.centos
    [Show full text]
  • Technical Notes All Changes in Fedora 18
    Fedora 18 Technical Notes All changes in Fedora 18 Edited by The Fedora Docs Team Copyright © 2012 Red Hat, Inc. and others. The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. The original authors of this document, and Red Hat, designate the Fedora Project as the "Attribution Party" for purposes of CC-BY-SA. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version. Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law. Red Hat, Red Hat Enterprise Linux, the Shadowman logo, JBoss, MetaMatrix, Fedora, the Infinity Logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries. For guidelines on the permitted uses of the Fedora trademarks, refer to https:// fedoraproject.org/wiki/Legal:Trademark_guidelines. Linux® is the registered trademark of Linus Torvalds in the United States and other countries. Java® is a registered trademark of Oracle and/or its affiliates. XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries. MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries. All other trademarks are the property of their respective owners.
    [Show full text]
  • What's New in Gstreamer FOSDEM 2 February 2013 Brussels Tim-Philipp
    What's new in GStreamer FOSDEM 2 February 2013 Brussels Tim-Philipp Müller <[email protected]> Quick intro • who am I ? • what is GStreamer ? • 0.10, 0.11, 1.0 and all that What is GStreamer ? • set of libraries • pipeline-based: elements, components, pads, data flow • plugins, abstract API • often wrap other libraries (decoders, encoders, filters, etc.) What is GStreamer ? (cont'd) • low-level API and high-level API • playbin, decodebin, encodebin, gst-editing-services, gst-rtsp-server, gst-streaming-server • (and farstream, telepathy etc.) • integration with other frameworks and projects • e.g. webkit, clutter, Windows/OSX/Android/iOS • goal is to adapt to platform/framework (inputs, outputs, decoders, DSPs/GPUs etc.) So what's new ? So what's new ? • GStreamer 1.0 is finally out! So what's new ? • GStreamer 1.0 is finally out! • released in September 2012 • followed by 1.0.x bug-fix releases Versions and all that • stable API/ABI, backwards compatibility • old stable API: 0.10.x • old unstable/development API: 0.11.x • new stable API series: 1.x.y = 1.0 Versions and all that (cont'd) • new stable 1.0 API series: • New Versioning Scheme • 1.0.0, 1.0.1, 1.0.2, 1.0.3... bug fix point releases • 1.1.0, 1.1.1, 1.1.2, 1.1.3... pre-releases • 1.2.0, 1.2.1, 1.2.2, 1.2.3... bug fix point releases • More frequent bug-fix releases: • Cherry-pick fixes into a stable branch But before we continue, a public service announcement We need to talk about 0.10 0.10 is dead (sorry) 0.10 is dead end-of-life Aaargh! You should move to the new version.
    [Show full text]
  • Oss NMC Rel9.Xlsx
    Open Source Software Packages for NMC XMP Release 9 Application License Publisher abattis-cantarell-fonts OFL https://git.gnome.org/browse/cantarell-fonts/ abrt GPLv2+ https://abrt.readthedocs.org/ abrt-addon-ccpp GPLv2+ https://abrt.readthedocs.org/ abrt-addon-kerneloops GPLv2+ https://abrt.readthedocs.org/ abrt-addon-pstoreoops GPLv2+ https://abrt.readthedocs.org/ abrt-addon-python GPLv2+ https://abrt.readthedocs.org/ abrt-addon-vmcore GPLv2+ https://abrt.readthedocs.org/ abrt-addon-xorg GPLv2+ https://abrt.readthedocs.org/ abrt-cli GPLv2+ https://abrt.readthedocs.org/ abrt-console-notification GPLv2+ https://abrt.readthedocs.org/ abrt-dbus GPLv2+ https://abrt.readthedocs.org/ abrt-desktop GPLv2+ https://abrt.readthedocs.org/ abrt-gui GPLv2+ https://abrt.readthedocs.org/ abrt-gui-libs GPLv2+ https://abrt.readthedocs.org/ abrt-libs GPLv2+ https://abrt.readthedocs.org/ abrt-python GPLv2+ https://abrt.readthedocs.org/ abrt-retrace-client GPLv2+ https://abrt.readthedocs.org/ abrt-tui GPLv2+ https://abrt.readthedocs.org/ accountsservice GPLv3+ https://www.freedesktop.org/wiki/Software/AccountsService/ accountsservice-libs GPLv3+ https://www.freedesktop.org/wiki/Software/AccountsService/ acl GPLv2+ http://acl.bestbits.at/ adcli LGPLv2+ http://cgit.freedesktop.org/realmd/adcli adwaita-cursor-theme LGPLv3+ or CC-BY-SA http://www.gnome.org adwaita-gtk2-theme LGPLv2+ https://gitlab.gnome.org/GNOME/gnome-themes-extra adwaita-icon-theme LGPLv3+ or CC-BY-SA http://www.gnome.org adwaita-qt5 LGPLv2+ https://github.com/MartinBriza/adwaita-qt aic94xx-firmware
    [Show full text]
  • Red Hat Enterprise Linux 7 7.8 Release Notes
    Red Hat Enterprise Linux 7 7.8 Release Notes Release Notes for Red Hat Enterprise Linux 7.8 Last Updated: 2020-04-03 Red Hat Enterprise Linux 7 7.8 Release Notes Release Notes for Red Hat Enterprise Linux 7.8 Legal Notice Copyright © 2020 Red Hat, Inc. The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/ . In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version. Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law. Red Hat, Red Hat Enterprise Linux, the Shadowman logo, the Red Hat logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries. Linux ® is the registered trademark of Linus Torvalds in the United States and other countries. Java ® is a registered trademark of Oracle and/or its affiliates. XFS ® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries. MySQL ® is a registered trademark of MySQL AB in the United States, the European Union and other countries. Node.js ® is an official trademark of Joyent. Red Hat is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
    [Show full text]
  • Measurement of Video Conferencing Libraries Using a Test Framework Based on Profiling
    Computer Engineering 2013 Mekelweg 4, 2628 CD Delft The Netherlands http://ce.et.tudelft.nl/ MSc THESIS Measurement of Video Conferencing Libraries using a Test Framework based on Profiling Maulik Prabhudesai Abstract Video Conferencing systems have become highly popular with the explosion of bandwidth and computing power. This has made high quality video conference possible on embedded hand held devices. This has created an ecosystem of companies developing applications which are powered by video conferencing libraries and a parallel ecosystem of companies who make those video conferencing libraries. An application developer has to design his system in a way that the video conferencing library (which is the backbone of the applica- tion) is efficiently integrated and is performing optimally. In order to do that, the developer must be acutely aware of features such CE-MS-2013-18 as platform compatibility, resource usage, performance boundaries and bottlenecks of the library in order to make an informed deci- sion. Hence the developer needs a test-bench which can evaluate the above mentioned features. This thesis mainly discusses the need to arrive at one such test framework followed by the framework itself. The framework designed in this thesis consists of a network emulator which is combined with a popular network protocol analyser. It pro- files the library and monitors variables essential to Quality of Service (QoS) like bandwidth usage, frame rates, frame/packet sizes and au- dio/video delay under varying network conditions. By observing the change in these variables, the QoS offered by the library can be determined. This information can also be extrapolated to understand the challenges in guaranteeing a minimum quality of experience (QoE).
    [Show full text]