I am starting development on a project containing a web browser video streaming module.
I am seeking advice on whether a Red5 server will be useful or not required as I am new to the video streaming arena -
Users will upload video footage in all formats, .MOV .MPEG4 .AVI .WMV .MPEGPS .FLV .3GPP, and I need to allow other users to stream the videos youtube style (not live).
Thanks
Red5 would be useful for this, but only certain media formats are supported for Video on demand VOD streaming. Any other formats would need to be transcoded into flv or mp4.
Related
I am capturing video from webcam in my PC and in the fly convert it to FLV (using ffmpeg).
As a result I have a continuously growing .FLV file.
And now I would like to play it as a live stream.
I was trying VLC but it plays the file no longer than the duration read from file on initialization.
What player can I use for live playing FLV?
I am working on Ubuntu 16.04.
Thank you in advance for your answers!
You cannot play live FLV directly but there is a tricky protocol popular among Chinese live streaming platform called "http-flv" that would play live flv within http framework.
Why http-flv?
Latency for HLS / Dash is long. It is about 10 to 20+ seconds.
Http-flv reduces end-to-end the latency to ~5 seconds. It could be played on browsers with MSE support.
How it works?
FLV is a simple container that "supports" file-based progressive streaming because one could get partial byte range in a flv video and still play it ( for mp4, you would need meta like moov etc for playback. )
For file server, host a growing flv file and remove the HTTP response header "content length" so that when client request the file, it does not know the response body size. It would keep the connection and receive videos segments until connection ends.
On client side, use flv.js to fetch only the latest segments for a flv file and perform the playback.
A lot of other tricks that would make the pipeline work.
There are a lot of source online you could play around with. Here are some references:
https://github.com/Bilibili/flv.js/
https://github.com/winshining/nginx-http-flv-module
A blog about how to achieve this: https://www.yanxurui.cc/posts/server/2017-11-25-http-flv/
So I want to be able to send a normal video from a video file (AVI or any other) through WebRTC, can that be done? The only examples I see of WebRTC are video chats, so I feel as if its only geared towards webcam and chats.
So my question is, technically can sending normal video from a video file (not webcam) over WebRTC be done?
Try: "Pre-recorded media streaming" --- Documentation and Source Code.
This experiment uses MediaSource API to render Blobs in <video> element. This experiment has some issues need to be fixed e.g. it can't send longer WebM videos.
You can try this experiment as well.
The codecs typically used in AVI are not directly supported by WebRTC clients, but if you are writing your own standalone client then of course it could read an AVI or other video file and transcode it to VP8 video and Opus audio (or whatever other codecs you were able to negotiate), and transmit it via RTP. If you are trying to do video transcoding in JavaScript in a browser then that will be very slow.
on my web application I use video.js to handle all video MP4 files. I have to specify MP4 file details for my video provider.
I want to handle FF, chrome, IE8/9 and iPad by this format.
Could you define a set of video MP4 file details which ensure that video.js will handle with this format (for example: codec, video/audio format, video format profile)?
I do not know if it will be helpful, but I use mediainfo (http://mediainfo.sourceforge.net/en) to check MP4 file's details.
Including the default code that is provided on the video js website should do enough to support the mp4 file you have (specifically "type='video/mp4'"), however, if you're intending to support Firefox, this won't be enough. FF doesn't support the mp4 file type so you'll need to encode an ogv or a webm. FF provides a plugin that can help here at firefogg.org
Hope this helps.
Using the mciSendString command I am able to play avi, mpeg, mp3, etc. but I am unable to play mp4. Here in this web-site it says I can play any videos provided that I have the correct codecs. I am able to play mp4 using my other media players (eg. vlc player). How can I play mp4 videos or how can I make the MCI device auto detect the necessary driver type and play the videos ?
VLC embeds its MPEG-4 parser and codecs within the applciation and does not share it with the system. You need "true" codecs which register with Windows and extend standard API with support for MPEG-4. If you don't feel like looking for specific codec to install, perhaps the easiest would be to install a codec pack such as K-Lite.
Does Amazon S3 support progressive download? I just want my videos start playing before its fully loaded.
I don't need real streaming yet.
Yes it does is the simple answer.
You'll need to encode your videos in a format that supports playback before the entire file is downloaded and your video player will need to support that too. But those requirements are no different from any other file server.