[Live-devel] Questions about media server - MKV, rtsp with multiple video media types

office luksoft.it office at luksoft.it
Thu Oct 25 00:18:54 PDT 2018


Hi there,


I am recently playing a lot with live555 streaming server, as I need to create a block of larger test environment, responsible for streaming content from some storage. I ran into some questions and it seems I need know-how/knowledge based assistance with regards to live555.



Background scenario:

- stream a video from video file (H264 elementary stream or wrapped in a container) ok

- stream a part of video file starting from specific position (FROM: timestamp)

- stream a video file from specific postion (FROM: timestamp) while it's still being written by some other process

- stream a specified part of video file, start-end  (FROM - TO /timestamp)

- stream several video files to one client on demand at the same time - preferrably synchronized (assuming streams fps etc. matches)


I have some questions regarding streaming and one of container formats.

I've chosen to stream video files using RTSP (some player clients handle it ok + live555 rtsp client is in the package) and it seems everything works ok in majority of scenarios.

However, I've run into questions for which neither source code of live555 or available net resources provided answers. Please mind I could miss something in source code, as it's been a while since I was doing C/C++ - so if I ask about something already there, don't get too upset :-)



STREAMING

In case of 'stream several video files to one client', I can handle it with several independent RTSP sessions, however it struck me, that one RTSP session by design can handle multiple media types within one session. I understand intended usage (e.g. vide + audio + subtitles).

QUESTION 1: Could I create RTSP stream with multiple videos in it (assuming something on the client end will understand it) and stream each video properly within that session using LIVE555 Media Server?

QUESTION 2: Do you know any player which could handle such session out of the box (play multiple video streams - multiple windows, or one window, whatever)?

QUESTION 3: In such scenario, an 'aggregate play' option: would it cause all videos start/pause/stop streaming together in live555 media server?

QUESTION 4: 'Aggregate play': would 'play' cause all X videos to be somehow synchronized when FROM: timestamp is provided, e.g. based on IDRs in files?



CONTAINER FORMAT

I was trying to employ MKV container for written files (seeking is a feature I could use a lot), however I've run into issues when trying to stream MKV in FROM - TO (timestamps) manner

It seems the "TO" part is not implemented in live555 server - I can only appoint FROM when in file MKV can be played and by analysing code, it's the only part handled.

And yes, for sake of simplicity it's enough for me to find the first IDR before FROM: timestamp and stop on first IDR after TO: timestamp (and let player handle stuff on client side). If this is 'dumb' approach, I would welcome any piece of advice. I strongly prefer server-side solution for some level of synchronization though (if only possible), as it would do a lot of things on client side much easier. 


QUESTION 5: Why 'TO: timestamp' is not handled for MKV playback & streaming? Or if I am mistaken, how to stream MKV file up to appointed 'end' timestamp?


Second issue is connected to 'stream a file while it's being still written' & MKV. I just can't get to understand how to do it (except general guideline on MKV site: https://matroska.org/technical/streaming/index.html , live streaming part). Writing such file part is still an issue for me (I did some experiments with ffmpeg to capture h264 elementary stream and turn it to MKV in stream-manner, but I've failed so far; all I could get is to write it in appointed chunks and only then stream it using live555, when MKV file is complete; so at the end I have series of multiple files; wrapping up a file each e.g. 5-10 seconds is not an option here).


QUESTION 6: Can LIVE555 Media Server stream such 'unfinished' MKV file, which is still being written to? If yes, what are the conditions/how the file must be written to enable that?

QUESTION 7: Could you advise maybe how to create such 'unfinished' MKV file using e.g. ffmpeg or other tool (maybe something from live555 suite can do that)?



Forgive me any grammar/spelling errors - English is not my native language. If something is not clear, please let me know, I'll try to explain more in details (as much as I am allowed or capable of).


Best Regards, Lukas
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.live555.com/pipermail/live-devel/attachments/20181025/b4ccc616/attachment.html>


More information about the live-devel mailing list