Does Ant Media Server has live rewind feature? - ant-media-server

Do the RTMP options support live rewind? (especially in the newest Ant Media Server version) I need to be able to rewind live to take notes.

Ant Media Server(2.4.2+) supports rewind live feature. v2.4.2 has not been released yet when writing this answer. I mean it's available as a snapshot releases in your account at antmedia.io
Anyway, let me tell how it works. Ant Media Server deletes the obsolete HLS segments by default. So we need to make Ant Media Server keep every HLS segments in the list. In order to do that
Open your application properties file with your favorite editor. i.e. for LiveApp it's /usr/local/antmedia/webapps/LiveApp/WEB-INF/red5-web.properties
Set or add following properties in the file
settings.hlsPlayListType=event
settings.hlsflags=
Default hls flags is delete_segments so that we just keep it empty
Save the file and restart Ant Media Server
sudo service antmedia restart
Send a Live Stream to Ant Media Server with WebRTC or RTMP. Let's assume that you're sending a live stream with stream1 id
Open the HLS player in your browser. https://YOUR_SERVER:5443/LiveApp/play.html?id=stream1&playOrder=hls
You should see the slider bar in the player as shown below. It's by default playing the Live edge
You can click any where in the slider to rewind back in the live stream as below.

Related

HTTP Video Streaming

I have a server (not internet connected) that hosts a webpage with company data on an internal website. The server also contains videos (thousands of them) in a defined directory structure.
When a client connects I can display the videos to them on the internal website. The problem is some of the video files are 1Gb or larger and the connection to some clients is rather slow; the browser seems to be trying to download them in order to play them rather than stream them.
Is there a video streaming server that I could send a file path to and it would serve the video back to the client as a stream?
I guess this is essentially transcoding the video that I need done. I'm not sure if PLEX or something like that is able to do it dynamically as there are hundreds of videos and new videos added all the time.
Sorry if i'm not being clear on my need. Send me a question if I haven't been clear on a point.
...the browser seems to be trying to download them in order to play them rather than stream them.
To echo what #Offbeatmammal said in the comments, if you're using MP4 files, you need to ensure the MOOV atom is at the beginning of the file. Without it, the browser doesn't know what byte offsets to request.
Ideally, encode your video files as fragmented. In FFmpeg:
ffmpeg -i ... -f mp4 -movflags frag_keyframe+empty_moov output.mp4
See also: https://stackoverflow.com/a/9734251/362536
That should allow the client to stream the MP4 files from any web server that supports HTTP/1.1 range requests. (Most all do, unless configured otherwise.)
However, there is another point to address:
The problem is some of the video files are 1Gb or larger and the connection to some clients is rather slow...
While fixing the streaming issue means the clients won't have to download the whole file first, they still need the bandwidth to keep up with the stream. If it's possible they won't, you'll want to implement some sort of transcoder.
I would recommend using an existing segmented streaming method such as DASH or HLS. HLS is currently the most compatible, thanks to Apple's platform policies. Either will enable adaptive bitrate switching, which will allow slow clients to automatically switch to a lower bitrate stream that they can smoothly keep up with. That way, slower clients can still see the video, albeit a lower quality one, while fast clients can get the full quality video.
You can use FFmpeg to do the transcoding and HLS playlist creation.
I'm not sure if PLEX or something like that is able to do it dynamically as there are hundreds of videos and new videos added all the time.
As for when you do this transcode, I suppose it depends on how much load you're looking at. If this is just one or two people viewing the file, you can transcode on demand if your servers can keep up. Ideally, you have at least a couple stream variants around for less popular files, and add more later if needed.
If you're doing this live, I'd recommend doing all of your transcoding up front. You can always prune old files/variants if you need the storage back.

Where Is Asterisk FreePBX Video Call Recording File

I would like to know where can I find (if it does exist) the video file for a call with video.
I already have all the things running properly:
Call recording enabled for extensions as Force
Call recording enabled for routes as Force
Video Support enabled
Video Codecs checked
3CX Softphone calling with video
3CX recording the video locally
WAV file available on FreePBX CRD Reports
Now I would like to have/find the video file (MPEG, H264, etc).
Am I missing some config or it can't be done?
I'm running on FreePBX 13.0.194.2 and Asterisk 13.
Tnx in advance,
I think at this moment MixMonitor(from 1.8 version) use audiohooks, so not able record video.
Try Record app(not sure, but may work).

Protecting HLS streams using Playready

I am trying Playready protect HLS streams using transform manager.
It seems that the output can only be played using URL "t_200-m3u8-aapl.ism/manifest(format=m3u8-aapl)"
I believe a standard HTTP server wont be able to stream it as it wont be able to interpret /manifest call. What kind of server capabalities are required?
Is there any way I can achieve following workflow:
Create HLS stream using apple segmenter -> Playready protect that package (which tool?)
Azure Media Services supports the protection and streaming of HLS with PlayReady.
To achieve the workflow, you have to first encode a video to Smooth Streaming format, and then run it through the Encryptor task here with your PlayReady settings.
Once you have an encrypted Smooth Streaming Asset, you can then create a second HLS PlayReady protected asset by passing the file through the Packager task here.
The resulting HLS Asset will be encrypted with PlayReady, and the .m3u8 will contain the proprietary PlayReady tags for use by a player framework that is capable of getting a license and decrypting the content. There are several third party DRM companies that provide such player frameworks. Microsoft does not provide a PlayReady player SDK for iOS at this time, so you have to go to a third party DRM company.
IIS Transform Manager creates HLS presentations that are designed to be played using IIS Media Services or Windows Azure Media Services. You are correct that basic HTTP servers are not capable of delivering such videos, as some server-side processing is required.
It is possible to protect a stand-alone HLS video using PlayReady, though I am not aware of any freely available tools for this. If you are interested in commercial solutions, I may be able to help you via e-mail (saares#axinom.com).
To just update on this, Azure Media Services just announced first-party PlayReady service as well. You could obtain a PlayReady server in the cloud, and use Media Services either statically encrypted a smooth streaming asset, then package the content into HLS, or even better, you could encode your asset into Multi-bit-rates MP4, and we do dynamic encryption with PlayReady, and deliver the stream in HLS, DASH and Smooth Streaming on the fly.
For more information, you could check out my blog at http://azure.microsoft.com/blog/2014/09/10/announcing-public-availability-of-azure-media-services-content-protection-services/.

Creating http video stream using libVLC

I have a video that I want to broadcast on a network using the http protocol.
I know libVLC can do that but I haven't been able to know how. I checked the doxygen documentation, but this hasn't helped me. Can you help me please ?
Thanks
Libvlc is the library to develop the application. vlc player is the client AND SERVER application to do that. If you just need to stream, use vlc media player as a server. You can find the command line / GUI steps if you google "vlc how to stream".
Basically in the file open dialog you get the option to configure either to load a stream from another source or local file OR RUN your own application as a streaming server.
The play button at the bottom of open dialog has a small button on the right to selec "stream" instead of play. But you need to have configured all options correctly to setup the type of stream you are looking for.
Lastly, you can run another instance of vlc as client to test your stream locally.

video server supporting Http

I want to setup a video on demand server which support Http protocol. It is like Youtube, which hosts a lot of videos, and end users could play them from browser (by using Flash or Html 5).
Two quick questions,
For the big video files, shall I put them on disk or in memory? How Youtube or other big video site did it? Not sure if put all video in memory is too expensive, and put video on disk is too slow?
Is there any open source video hosting server for my purpose? If steaming is supported, it will be great.
thanks in advance,
George
If you just want to have an HTML page that links to your video files - no problem, but most browsers will download the entire file before you system even considers playing it.
If you want to stream the files (like YouTube and others do) then you aren't actually using HTTP for the video itself. HTTP is used to get the information about the stream so your player can stream and play directly without having to download the entire file first.
Streaming video uses RTSP (or some other streaming protocol) for the audio and video data.
The closest HTTP protocol can get to "streaming" video is to use Server-Push of individual image frame with each frame flagged to replace the previous frame. Not all browsers can handle this directly, but might need an ActiveX control or Java Applet. The original QuickTime did this before the streaming protocols were implemented at the servers.
re: how does YouTube deal with big video file
I suspect they are on disk until they are needed. Moved into memory only as needed. Flushed from memory when no longer needed.
re: is there an open source video server for my purpose
YES! Check out http://www.videolan.org/
-Jesse
another approach is to use HTTP Live Streaming - HLS - the web server is simply a standard httpd server - video/audio is preprocessed on server side into a set of bitrate playlists.
The logic is on the client side to retrieve the media as a series of 6 second files, based on bandwidth appropriate playlist.
So :
- use files not memory
- there are open source HLS segmentators (ffmpeg)

Resources