Monitor bandwidth consumed by Push/Target Stream in Wowza - wowza

I am using Wowza Steaming Engine 4.4.1. I am developing module for user to show bandwidth consumption. I am following this link https://www.wowza.com/forums/content.php?182-How-to-get-detailed-server-info-with-an-HTTP-Provider
Following this link able to get RTMP, RTP and HTTP bandwidth consumption. But also want to get bandwidth consumed by Push/Target stream. But bandwidth consumption about push stream not mention in above link. Any suggestion

You should be able to use the IOPerformanceCounter class and get the information from the getMessagesOutBytes method. You can also view this by using the JConsole IOPerformance object, in the messagesOutBytes attribute. This is a cumulative value though, and includes all outbound connections, not just stream target connections.

Related

Need a high latency, ultra low bandwidth data transfer technique the likes of Google Pub/Sub but inverse

I have an interesting IoT use case. For this example let's say I need to deploy a thousand IoT cellular displays. These have a single LED that will display information that will be useful to someone out in the world. For example a sign at the start of hiking trail that indicates whether the conditions are favorable. Each display needs to receive 3 bytes of data every 5-10 minutes.
I have successfully created a computer based demo of this system using a basic http GET request and cloud functions in the GCP. The "device" will ask for its 3 bytes every 10 minutes and receive the data back. The issue here is that the http overhead takes up 200+ bytes so the bandwidth usage will be high over cellular.
I then decided to try out Google cloud Pub/Sub protocol, but quickly realized that it is designed for devices transmitting to the cloud rather than receiving. My best guess is that each device would need its own topic, which would scale horribly?
Does anyone have any advice on a protocol that would work with the cloud (hopefully GCP) that could serve low bandwidth receive only devices? Does the pub/sub structure really not work for this case?

how handle high incoming data and sending throttled data to web sockets in django-channels

I am facing a problem in my django web server.
We are using python3, django2, django-rest-framework3.8 and channels2.x
Scenario is we are receiving DATA from a UDP connection at very fast rate (~100 messages per second). The data revived is in proto format (you can say we are receiving byte data). some data gets starved in this process as Rate of production >>> rate of consumption we are implementing throttling but still at 100 concurrent users data starves again. Can anyone help us in this scenario.
If anyone has any new architecture idea please share.
This is surely an interesting problem. This is about stock market feed
PS :- I cannot post any code as it is my companies. but i can help any time you need clarification on any point.
In many stock market data applications your same exact problem is solved by having Lightstreamer Server take care of throttling on the websocket (full disclosure: I am the CEO at Lightstreamer).
You will develop a Data Adapter using the Lightstreamer API to consume data from your UDP connection and inject them into the Lightstreamer Server. Then, you can specify a maximum update rate for each client and each subscription, as well as a max bandwidth. Lightstreamer will throttle the data on the fly, taking into consideration not only the client capacity, but also the network status.
When throttling, you can choose between conflating updates (typical for stock market data) and queuing them.

How to work on Wowza media Engine in Aws

We have ios mobile app application..We need to implement video streaming in wowza media Engine.How to work on Wowza media Engine in Aws
Since it sounds like you are trying to stream VOD files from a web server or S3 bucket, it's best to use the Wowza Streaming Engine MediaCache functionality. This is a more optimal way of streaming content that is not located locally. On initial player request, it grabs the specified number of blocks from the remote location and caches the segments locally, which it then serves to all subsequent player requests.
To use MediaCache, you need to first create the MediaCache store (where the cached content is stored) and the MediaCache sources (where your Wowza server will obtain the remote content). MediaCache sources can be a Cloud storage provider (currently AWS S3, Google Cloud or Microsoft Azure), a file server, or a web server. Each of these sources are identified with a prefix (for example, amazons3). You will then need to create a VOD Edge type of application which can access these MediaCache sources.
If your application name is vodedge, and you are streaming sample.mp4 from your amazons3 source, your example playback URL would then be:
http://localhost:1935/vodedge/_definst_/mp4:amazons3/sample.mp4/playlist.m3u8
Note that you need to include the application instance (default is _definst_).
The playback formats that you choose is really dependent on your target audience and players. Mobile devices don't support RTMP unless you use an app (like the VLC mobile app). But if you know that your target audience will only be using desktop, you control these machines (such as in an internal corporate network) where you can install the required plugins, and latency is a paramount requirement, then RTMP might be a better choice for you, as RTMP is a streaming protocol and is inherently less latent.
If you do need to stream to mobile devices and latency is important, you can opt to tweak the HTTP streaming packetization in your Wowza server so that your target chunk durations are shorter. You can do this by selecting your Wowza live application, and selecting the Properties tab (possible only if you have enabled Advanced Settings on your Manager UI account). Do note that Apple spec recommends a 10-second segment length (which is the Wowza default), and you may run into bandwidth issues as requests for the chunks would be more frequent.

How can I send bandwidth of client to server?

Is there away for server (web-server of web-page or file server) to know what bandwidth client had during last access or during page/file request? Can this information be sent via cookie or together with page/file request?
I guess this is more of theoretical question, since I want to know if server can provide lower resolution image for clients with bad bandwidth available to them.
Yes; use JavaScript Image onload event to time the download speed of a small image (like a logo), then do something usefull with the result like downloaded a large image if the client has the bandwidth.

Creating C++ client app for some abstract windows server - how to manage TCP connection to server speed?

So we have some server with some address port and ip. we are developing that server so we can implement on it what ever we need for help. What are standard/best practices for data transfer speed management between C++ windows client app and server (C++)?
My main point is in how to get how much data can be uploaded/downloaded from/to client via his low speed network to my relatively super fast server. (I need it for set up of his live stream Audio/Video bit rate)
My try on explaining number 3.
We do not care how fast is our server. It is always faster than needed. We care about client tyring to stream out to our server his media. he streams encoded (via ffmpeg) live video data to our server. But he has say ADSL with 500kb/s of outgoing traffic. Also he uses some ICQ or what so ever so he has less than 500 kb/s per second. And he wants to stream live video! So we need to set up our ffmpeg to encode video with respect to the bit rate user can provide. We develop server side and client side. We need a way of finding out how much user can upload per second currently (so value can change dynamically over time)
Check this CodeProject Article
it's dot-net but you can try figure out the technique from there.
I found what I wanted. "thrulay, network capacity tester" A C++ code library for Available bandwidth tracking in real time on clients. And there is "Spruce" and it is also oss. It is made using some of linux code but I use Boost library so it will be easy to rewrite.
Offtop: I want to report that there is some group of people on SO down voting on all questions on this topic - I do not know why they are so angry but they deffenetly exist.