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.
Related
I have a desktop application which is managed in AWS AppStream 2.0 and I want to conduct a performance test for the same.
I tried multiple ways to record that Application using JMeter/Load Runner (using different protocol) but the tool is not able to capture any server/network calls for the application.
Is there any way we can record these kind of applications using LR or JMeter?
As per Amazon AppStream 2.0 FAQs:
Streaming
Q: What streaming protocol does Amazon AppStream 2.0 use?
Amazon AppStream 2.0 uses NICE DCV to stream your applications to your users. NICE DCV is a proprietary protocol used to stream high-quality, application video over varying network conditions. It streams video and audio encoded using standard H.264 over HTTPS. The protocol also captures user input and sends it over HTTPS back to the applications being streamed from the cloud. Network conditions are constantly measured during this process and information is sent back to the encoder on the server. The server dynamically responds by altering the video and audio encoding in real time to produce a high-quality stream for a wide variety of applications and network conditions.
So I doubt that this is something you can really record and replay, with JMeter you can record only HTTP and HTTPS (see How to Run Performance Tests of Desktop Applications Using JMeter for details)
With regards to LoadRunner - I don't see any mention of NICE DCV protocol in the LoadRunner Professional and LoadRunner Enterprise 2021 License Bundles
The only option I can think of is downloading the client from https://www.nice-dcv.com/, the bundle contains a number of .dll files and you can invoke the exported functions from the .dlls via JNA
Starting at the top of the stack: (For LoadRunner)
Citrix
Terminal Server
GUI Virtual user
Template, Visual Studio using NICE API application source (if available in C, C++, C#, or VB
Template Java, using client NICE Application source in Java (if available)
Bigger questions, as you are using an Amazon service, what is your SLA for response time, bit rate, Mean QOS for video, under load. If you have no contractual SLA how/who will you have to fix the issue at Amazon.
I am working on a live-streaming prototype, I have been reading a lot about how live-streaming works and many different approaches but I still can't find a live-streaming stack that suits my needs...
These are the requirements for my prototype:
1)The video/audio recording must come from a web browser using the webcam, the idea is that the client preferably shouldn't need to install plugins or do anything complicated(maybe installing Flash player plugin is acceptable, only for recording the video, the viewers should be able to view the stream without plugins).
2)It can't be peer to peer since I also need to store the entire video in my server (or in Amazon s3 servers for example) for viewing later.
3)The viewers should also be able to watch the stream without the need of installing anything, from their web browsers, say Chrome and Firefox for example. We want to use the HTML5 video tag if possible.
4)The prototype should be constructed without expending money preferably. I have seen that AWS-Cloudfront and Wowza offer free trials so we are thinking about using these 2 services.
5)The prototype should be able to maintain 1 live stream at a time and 2 viewers, just that, so there are no restrictions regarding this.
Any suggestions?
I am specially stuck/confused with the uploading/encoding video part of the architecture(I am new to streaming and all the formats/codecs/protocols/technologies are making it really hard to digest).
As of right now, I came across WebRTC that apparently allows me to do what I want, record and encode video from the browser using the webcam, but this API only works with HTTPS sites. Are there any alternatives that work with HTTP sites?
The other part that I am not completely sure about is the need for an encoding server, for example Wowza Streaming Engine, why do I need it? Isn't it enough if I use for example WebRTC for encoding the video and then I just send it to the distribution service (AWS-Cloudfront for example)? I do understand that the encoding server would allow me to support many different devices since it will create lots of different encodings and serve many different HTTP protocols, but do I need it for this prototype? I just want to make a 1 format (MP4 for example) live-stream that can be viewed in 2 web browsers, that's all, I don't need variety of formats nor support for different bandwidths or devices.
Base on your requirement, WebRTC is good way.
API only works with HTTPS sites. Are there any alternatives that work
with HTTP sites?
No. Currently Firefox is only browser is allow WebRTC on HTTP, but finally it need HTTPS
For doing this prototype you need to go with the Wowza WebRTC.
While going with wowza all the streams are delivered from the wowza only.So it become a routed WebRTC.
Install Wowza - https://www.wowza.com/docs/how-to-install-and-configure-wowza-streaming-engine
Enable the WebRTC - https://www.wowza.com/docs/how-to-use-webrtc-with-wowza-streaming-engine
Downaload and configure the Streamlock. or Selfsigned JKS file - https://www.wowza.com/docs/how-to-request-an-ssl-certificate-from-a-certificate-authority
Download the sample WebRTC - https://www.wowza.com/_private/webrtc/
Publish stream using the Publish HTML and Play through the Play HTML ( Supported Chrome,Firefox & Opera Browsers)
For MP4 files in WebRTC : you need to enable the transcoder with h264 & aac. Also you need to enable the option Record all the incoming Streams in the properties of application which you are creating for the WebRTC ( Not the DVR ).Using the File writer module save all the recorded files in a custom location.By using a custom script(Bash,Python) Move all the Transcoded files to the s3 bucket, Deliver through cloudfront.
I would like to create a distribution network for the mp3 files of my amazon S3 bucket. I managed to achieve it using aws Cloudfront using RTMP protocol. But as android has no native support for RTMP, i am exploring the idea of making it using RTSP protocol.Can some one help in figuring out how to achieve it.
RTSP is stateful as it maintains a connection trough RTCP, requires multiple ports and you will have issues with firewall traversal. Plus, if you want to take advantage of S3 you should use instead a HTTP streaming protocol, unless you want to stream the mp3 files directly via progressive download.
The are two alternatives: HLS and DASH, with HLS being the most used format at the moment.
Android 4.x+ has native support for HLS, it works on iOS out of the box since it's made by Apple and on desktops it works natively on Safari 6+ and all other browsers with a Flash fallback. There are many web players available, the most noteworthy being JWPlayer (paid) or clappr (open-source).
The Amazon Elastic Transcoder supports HLS transcoding and you can also use an open-source solution like ffmpeg.
https://developer.apple.com/streaming/
I'm in testing stage of launching an online radio. I'm using AWS CloudFormation stack with Adobe Media Server.
My existing instance type is m1.large and my Flash Media Live Encoder is streaming mp3 at 128kbps which i think is pretty normal but it's producing a stream that isn't smooth & stable at all and seems to have a lot of breaks.
Should i pick an instance type with higher specs?
I'm running my test directly off of LiveHLSManifest link that opens on my iPhone's Safari and plays on browser's build-in player..which doesn't set any buffering on client side - could this be the issue?
Testing HLS/HDS links directly on iPhone's Safari was a bad idea. I relied on built-in players already having some sort of buffering configuration by default but noo... I was able to receive stable & smooth stream when i used players like Strobe Media Playback, FlowPlayer etc.. Hopefully, this answer will save someone some time.
We have a web service that sends the video content in the response as binary (in different formats asx, asf, ram, mpeg, mpg, mpe, qt, mov, avi, movie, wmv, smil, mp4, mxf, gxf, flv, 3gp, f4v, mj2, omf, dv, vob).
Do you see any issue with performance, if I have an intermediate application which makes a request to web service to retrieve video content and render in browser?
Thanks
As long as the web service returns binary data directly, then there will be no performance hit. If this is an XML or SOAP web service that wraps the whole thing in a SOAP envelope and bae64 encodes it to make it all text, then you will not be able to play it directly and it will have a big impact on bandwidth, cpu, and memory.
Also note that by serving the video directly instead of using a true streaming protocol the user will only be able to seek within the portion downloaded so far. A streaming protocol like RTSP, RTMP, or the many varieties of HTTP Streaming allow seeking to any part of the file and only downloading the part seeked to.