Videojs real-time streaming over HTTP not working in Firefox/Opera - html5-video

I am streaming the video of a webcam using VLC. The video codec is h264 and the container format is flv. The video is sent over HTTP/TCP and it must be a real-time application.
When I use Chrome or IExplorer to display the video streaming, it works fine. For example, if the streaming broadcast started 2 minutes before, videojs directly seeks to minute 2 and displays the video at real-time.
But It doesn't happen when using Opera or Mozilla Firefox. In the above case, videojs displays the video starting at minute 0. Since it has no information from minute 0 to minute 2, it shows a static image in that period of time. Then, when it reaches minute 2 it displays the video packets received 2 minutes before...
What could be the reason for the different behaviour between browsers? Is there a way (probably javascript way) to directly seek to the live starting point?
Thank you

Related

Does video.js support MPEG2-TS/UDP streams?

I am just starting to play around with video.js and really like it. I currently have some code where I have two players showing two different HLS streams in a single browser page.
However, HLS inherently has high latency and that may not work for my project. So I am wondering if video.js can receive and play MPEG2-TS/UDP streams which would have less latency (I can easily change the format of all of my source video steams).
My basic requirement is to have 2 players in a single browser page, one player showing the video stream sent from a particular network node, and the second showing how a different network node received that same stream. So the two video.js players on the browser page are showing 2 video streams that are actually the same video so they are highly correlated. This is why the latency is a critical requirement for this project.
Thanks,
-Andres

asp.net core video streaming, multiple requests from the same client

I am streaming a video from an asp.net core app.
The code is handling range requests, which allows the user to seek anywhere in the video.
The issue is that the HTML5 video player will start a new request when you seek somewhere in the video and the previous request is still being fulfilled.
So, if you skip around the video 5-6 times, you will have 5-6 outgoing streams.
Has anyone any experience with how to handle this?

How to measure the performance of my site's video streaming and playback?

I have developed a site that hosts user videos. I store the video files in AWS S3, I deliver them through AWS Cloudfront and I use video.js as the site's player with HTML5 as default and flash as fallback.
Generally the video streaming seems to work fine but in some cases I receive complaints from users for slow or choppy video playback. I want to create some tests to measure the performance of streaming in order to be able to distinguish user problems (e.g. slow connection at the user side) or with my service.
Are there any best practices or tools to collect video delivery metrics? I'm interested in open source solutions or something that I can implement myself because it's just a personal project, but I don't want to rediscover the wheel.
Testing progressive download implies checking the transmission bandwidth and its continuity. For example for a high transmission rate the initial client buffer will be filled faster and the playback will start sooner. However, losing that transmission capacity at some later time can cause re-buffering. The total transmission time of your file must be lower than the video duration.
To identify potential issues you can start with the S3 bucket logs and the CloudFront cache statistics and access logs.
There's a load testing tool written in Java called Apache JMeter. It cannot use JavaScript so it must be configured to request the files directly.
The disadvantage of using a load test tool in a single location is pretty evident. Different geographical areas and carriers have different characteristics and test results will be different.
There are online, non open-source tools that can load test from multiple locations but they are generally paid though some offer free trials.
Here's another way to look at this.
but in some cases I receive complaints from users for slow or choppy video playback.
If you're using an Adaptive HLS stream, and you're CloudFront, and the video is still choppy to some users, that's probably because of their own internet connection speeds.
In that case, you can encode your video in multiple resolutions (using just one AWS MediaConvert job, btw) - like 1080p, 720p, 360p, 240p, 144p etc.
And then Videojs has a stream switcher plugin that will 1) automatically start playing the highest possible resolution - and no higher - that's right for the viewer's connection and 2) give the user the option via a "Settings" (gear) icon in the control bar that they can use to switch resolutions manually.
That way, even those with really poor internet connections should be able to watch your video.
Of course, the other alternative is to use progressive download videos that the viewer can simply click play, then immediately click pause, and wait for the video to buffer, and then play it after it's fully downloaded.
Check out the Videojs Resolution Switcher demo here.
-- Ravi Jayagopal

Can't find a good enough html5 video player

I've been on the search for html5 video players for well into 3 months trying virtually everything...
Right now my best choice is SublimeVideo as it seems to work the best, my only gripe is that when playing videos from my website over 3g/LTE data connections the videos will sometimes have trouble playing. The first 3 to 4 videos will run fine but after that it's hit and miss where 50 percent of the videos will give a connection error or not play at all..
I really have no idea as over wifi or via pc - it will work flawlessly.
I've tried jwplayer - wifi, 3g and desktop videos seem to load 75 percent of the time and freeze the rest.
I've tried flowplayer but that also is inconsistent and takes a long time to load videos in general. The three spinning circles for about 10 to 15 seconds before the video starts.
I've verified my server and everything seems fine on that end which is why it seems to work well via wifi and desktop? I'm guessing maybe there is an issue with concurrent connections over 3g? As it seems sublime does not close the video connection when it finishes it kind of leaves it where it left off..
any help would be GREATLY appreciated.
If someone has a slow connection, you need to offer those users low quality streams. The JW Player offers dynamic (adaptive) bitrate switching for this exact purpose.
Try Video.js it worked well for me

youtube live api event tagging, video clipping, preroll ads

I'd like to use YouTube Live to stream a live video embedded in my website. I'd also like to be able to use the API to tag events within that video based on the time, then auto-generate clips x seconds before and y seconds after the timestamp to show that event only. I'd also like to publish my own pre-roll advertisements on both the live stream and the clips (and be able to play an ad during the stream at appropriate times). Is any/all of this possible?