All Projects → Consti10 → LiveVideo10ms

Consti10 / LiveVideo10ms

Licence: LGPL-3.0 license
Real time video decoding on android

Programming Languages

c
50402 projects - #5 most used programming language
assembly
5116 projects
C++
36643 projects - #6 most used programming language
HTML
75241 projects
java
68154 projects - #9 most used programming language
CMake
9771 projects

Projects that are alternatives of or similar to LiveVideo10ms

Comcast
Simulating shitty network connections so you can build better systems.
Stars: ✭ 7,703 (+18687.8%)
Mutual labels:  latency
GenuineChannels
Collection of custom .NET Remoting channels
Stars: ✭ 29 (-29.27%)
Mutual labels:  udp
sx
🖖 Fast, modern, easy-to-use network scanner
Stars: ✭ 1,267 (+2990.24%)
Mutual labels:  udp
DDos-Attack-OVH-
Powerful DDoS Attack
Stars: ✭ 155 (+278.05%)
Mutual labels:  udp
vscode-extension
Link your code and commits to a video recording and explain your code with video.
Stars: ✭ 67 (+63.41%)
Mutual labels:  live-streaming
SpooferBT
Relay torrent tracker communication via TCP to bypass a blocked UDP network.
Stars: ✭ 18 (-56.1%)
Mutual labels:  udp
goanalyzer
improved go tool trace goroutine analysis
Stars: ✭ 30 (-26.83%)
Mutual labels:  latency
Arduino-STM32-Ethernet-LAN8720
Ethernet on STM32 using external PHY
Stars: ✭ 19 (-53.66%)
Mutual labels:  udp
spicedb
Open Source, Google Zanzibar-inspired fine-grained permissions database
Stars: ✭ 3,358 (+8090.24%)
Mutual labels:  latency
jChat
jChat is an overlay that allows you to show your Twitch chat on screen with OBS, XSplit, and any other streaming software that supports browser sources.
Stars: ✭ 106 (+158.54%)
Mutual labels:  live-streaming
spp
A simple and powerful proxy
Stars: ✭ 575 (+1302.44%)
Mutual labels:  udp
ciphr
CLI crypto swiss-army knife for performing and composing encoding, decoding, encryption, decryption, hashing, and other various cryptographic operations on streams of data from the command line; mostly intended for ad hoc, infosec-related uses.
Stars: ✭ 100 (+143.9%)
Mutual labels:  decoding
AMP-Research
Research on UDP/TCP amplification vectors, payloads and mitigations against their use in DDoS Attacks
Stars: ✭ 246 (+500%)
Mutual labels:  udp
Kafka Monitor
Xinfra Monitor monitors the availability of Kafka clusters by producing synthetic workloads using end-to-end pipelines to obtain derived vital statistics - E2E latency, service produce/consume availability, offsets commit availability & latency, message loss rate and more.
Stars: ✭ 1,817 (+4331.71%)
Mutual labels:  latency
netstack
A batteries included networking crate for games.
Stars: ✭ 40 (-2.44%)
Mutual labels:  udp
Dgraph
Native GraphQL Database with graph backend
Stars: ✭ 17,127 (+41673.17%)
Mutual labels:  latency
TVGemist
An *Unofficial* Uitzending Gemist application for  TV
Stars: ✭ 23 (-43.9%)
Mutual labels:  live-streaming
js-multibase
JavaScript implementation of the multibase specification
Stars: ✭ 22 (-46.34%)
Mutual labels:  decoding
VideoCrop
Crop video with Android Media Codec API
Stars: ✭ 44 (+7.32%)
Mutual labels:  mediacodec
HelenaFramework
Modern framework on C++20 for backend/frontend development.
Stars: ✭ 53 (+29.27%)
Mutual labels:  udp

Live Video 10ms Android

Release android_build_windows_workflow Consti10

Description
Library for live video playback with ultra low latency (below 10ms) on android devices. Supports playback of .h264 encoded live video data transmitted via UDP encapsulated in RAW or RTP and simple file playback.
Latency data (see example for more information)

Device Encoder avgTotalDecodingTime
Galaxy s9+ rpi cam 8.0ms
Galaxy s9+ x264 11.5ms
Pixel 3 rpi cam 11.2ms
Pixel 3 x264 10.5ms
HTC U11 rpi cam 8.6ms
HTC U11 x264 10.1ms

Example App
ExampleMain

This library has been optimized for low latency and tested on a wide variety of devices, including those running FPV-VR for wifibroadcast. The example library also contains test cases that can be executed on the 'gooogle firebase test lab'. These tests include feeding the decoder with faulty NALUs, created by a lossy connection. (e.g. wifibroadcast).

The 2 most important factors for low latency are

  1. HW-accelerated decoding via the MediaCodec api
  2. Receiving,Parsing and decoding is done in cpp code (multi-threaded). This decouples it from the java runtime, which increases performance and makes latency more consistent ( garbage collection halts all java threads, for example).

However, all native code needed for creating, starting and stopping the decoding process are exposed via the JNI, so you can use the lib without writing c/c++ code. The VideoPlayer class purposely has no pause/resume functions,since this library is for live video playback. Playback works on a 'best effort' principle, e.g. as soon as a receiver is created nalus are forwarded to the LowLagDecoder, but no frames can be decoded until enough I-frame data was received. Make sure to use a low enough I-frame interval with your h264 encoder. When receiving corrupted data (e.g from a lossy connection) the decoder will still generate frames if possible.

Structure:

  • VideoCore: contains the native code and java bindings
  • Example: simple example app. Playback of different .h264 files stored in the 'assets folder' of the app. Includes test case(s) \

Setup Dependencies
There are 2 ways to use VideoCore in your Project
1 Declaring Dependency via Jitpack: jitpack.io
Easy
cannot browse native libraries
Gradle example:

    allprojects {
        repositories {
            jcenter()
            maven { url "https://jitpack.io" }
        }
   }
   dependencies {
        implementation 'com.github.Consti10:LiveVideo10ms:v1.1'
   }

2 Forking the repo and including sources manually:
browse native libraries
modify code

  • To your top level settings.gradle file, add
include ':VideoCore'
project(':VideoCore').projectDir=new File('..\\LiveVideo10ms\\VideoCore')

and modify the path according to your download file

  • To your app level gradle file add
implementation project(':VideoCore')

See FPV-VR as an example how to add dependencies.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].