VIDEO HLS (m3u8) - Simulate a local connection rate? - ffmpeg

I am in local development, wampserver and laravel 5.3
I use ffmpeg to convert video files to HLS (video.m3u8).
The quality adapts according to the user's connection speed. Youtube uses this technology.
I now want to test according to the bitrate but I am in local.
The video plays automatically in the best format.
Is there a solution to simulate a local connection rate?

Since you're sending data over HTTP, check out Fiddler. https://www.telerik.com/download/fiddler It has the ability to simulate slower speeds.
An alternative is to use a tool like Clumsy which can simulate poor network conditions at the network level. https://jagt.github.io/clumsy/ I've had trouble with it under Windows 10, but it seems fine under Windows 7.
There are commercial traffic shaper applications as well.

I like to use Chrome for HLS testing and throttling, this keeps my testing needs all one place/one application. In Chrome install the "Native HLS PLayback" plugin, this allows you to enter a m3u8 URL right into Chrome and play it back. Then open up Chrome's Developer Tools, go to the Network tab, and then go to 'Networks conditions' - in here you can do Network throttling and specify whatever download/upload speeds you want. This should allow to test/view your different bitrates.

Related

Is it possible to protect from downloading an audio from a site

I want to create an audio-book application using Laravel.
Is it possible to protect from downloading an audio from a site ?
Is right click disable does the trick OR
What security measures will I take to prevent any audio files download ?
Meanwhile I have decided to use HTML5-Audio Player.
This question is complicated, and depending on how you deliver the audio, the answer will changes. I would recommend to look at how protected content are delivered on certain platform.
Let take a look at Spotify, they are using Widevine:
Widevine is a proprietary digital rights management (DRM) technology from Google used by the Google Chrome, Brave and Firefox web browsers (including some derivatives), Android MediaDRM, Android TV, and other consumer electronics devices.
Wikipedia
Simply disabling the download is only a frontend feature removed, that can be easily bypass. For protected content, more complicated solution are required like a DRM.

Application that Streams Videos from Local Cache - in Browser?

I've built a webapp to host low-res proxies of our teams video files. The webapp is primarily for tagging and searching video. Additionally, I'd like to be able to play a random playlist of clips on TVs around the office. I've implemented this by "Casting Tab" to a Chromecast, and it works fine.
However, now I'm running up against the bandwidth limitations of my host. Latency and everything is fine, but to run a single TV's 2.5Mbps stream 8hrs a day for 23 days a month comes to about 207 GB/month, 20% of my alotted 1TB monthly transfer.
How can i build something that will "cache" these clips client-side, so that it doesnt re-download them unnecessarily? There are about 1000 clips. I'd prefer to keep it connected to my webapp via browser or some API endpoint so the RAND() stream of clips is constantly updated as people add to it.
Note: I asked a related question yesterday, and it seemed to fix my specific issue, but it doesn't seem to have worked at scale, so I'm broadening the approach a bit. Browser Caching of images and videos served via php query strings
Shaka Player has built-in support for offline playback, along with a pretty good API for listing offline assets, and removing them again.
This would require that you have your videos in MPEG-DASH format. Luckily Google also has a tool available for that. Shaka Packager can take your mp4's and package them for MPEG-DASH, provided the MP4's follow some simple requirements.
You could probably build something yourself using similar mechanisms to the Shaka Player, but it seems much easier to use Shaka for doing it.

Real-time audio record/playback from a Ruby web app

I am wondering if anyone has success with audio record (from microphone on the users browser) and playback from a web based app (Ruby/RoR)?
What I have found so far - I could write a flex/flash app which will record the audio and then have a server side like Red5 or so to receive and convert. This sounds more involved and I also saw different types of hosting issues etc people are having - so I am thinking there may be better/easier solutions out there!! I looked at html5/web-kit too but seems to only works on chrome and is limited to text fields etc.
In my app, i want to record users voice, save it on a aws/s3 as mp3 or similar file format and play it back to user within the app based on users input/choice. While flash based solution is workable for now, non-flash based solution will be preferred as it will support more devices (you know devices I am referring)..
The only options for web based record are Flash, Silverlight or Java. None of these will work on an iPhone or iPad - You will need a native app for that.
You don't need to use Red5 for Flash recording - you can record direct to memory, optionally encode (or zip), and then upload the the data. You might be better doing mp3 encoding server-side using ffmpeg or SoX before moving the file to s3.
There is a way using HTML5 and a server. Just record a video.
Convert the video to audio, then use the audio as you wish.
This implementation takes audio from a video and runs
ffmpeg to extract the audio:
http://goo.gl/A0bya
This is in PHP, but it should not be too
hard to create a Ruby version. Easy peasy.

Playing an MOV/MP4 locally in FireFox

This isn't clever nor fun but I'm stuck. A client of mine requires the need for a download of a presentation web site where videos can be embedded. Since OGG is a pretty obscure format for clients I ask them to upload MPEG4 encoded videos as either .mov, .mp4 or .m4v. These can be played using the HTML <video> or for browsers that don't support MPEG4 I use a Flash player (since that can play them).
This is fine for online and it works well.
When we go to download the presentation, the <video> element works fine in browsers that support MPEG4 video, even if they're local.
So we then come on to FireFox; this doesn't support MPEG4. Nor can I get Flash to locally play a video (because of security issues, unless we get them to go through the security settings but that isn't very nice).
So we resorted to using the good ol' <embed> tag but this is very buggy with FireFox. It works fine on a server, it even allows me to have custom controls, but locally the videos don't play.
I've had some Googling around and it seems like a security issue but want to get a definite answer. Does anyone know why it's not playing locally? The URL is fine and the file exists. I notice that it's common amongst version 4+ so could it be a codec issue? Is there another way I can get FireFox to play MPEG4s locally?

How can I proxy a video stream from an AXIS web camera?

I'm developing a web system that (among other things) will be streaming video content to a limited number of users. There won't be more than 20 users at any one time, and they may be viewing videos from up to three cameras. However there are some restrictions on the setup of the network the clients have which are making this an absolute pain, and I'm stuck on ideas.
The cameras will be directly accessible from the web server running the software. The software server will be directly accessible to web users. However the cameras will not be able to be accessed by web users at all. So simply throwing up a flash player pointing to the url of the camera feeds isn't going to work. I need to present the video stream through the website in a cross-browser compatible manner, probably through a flash player like flowplayer, but flash is by no means a necessity.
So what are my options here? Any help would be greatly appreciated.
The web software is an ASP.NET/C# website running on a Windows server. I'd prefer not to run another program on the server, but in the (likely) case that I do, the software needs to be able to run as a service so that it can run after a server restart with no user interaction. Also, free and/or cheap options would be prefreable.
The cameras are along the line of the AXIS 214 (there are others but they're similar AXIS cameras) and outputs MJPEG and MPEG4 streams at 640x480.
So I found a cheap windows application called WebcamXP: http://www.webcamxp.com/home.aspx
It suits my purposes almost perfectly. It captures the AXIS camera's stream with no problem, and re-streams it (in MJPEG from what I can tell). It also includes a small flash front-end with no controls, which may be a drawback for some, but perfect for my needs. You can just grab the embed code from WebcamXP and drop it into the website. Nice and simple.

Resources