<!DOCTYPE html>
<html><head>
    <meta charset="UTF-8">
</head><body><p><span color="#000000" style="color: #000000;"><span face="Arial, Helvetica, sans-serif" style="font-family: Arial, Helvetica, sans-serif;"><span size="3" style="font-size: medium;">Hi there,</span></span></span></p><p><br></p><p><span color="#000000" style="color: #000000;"><span face="Arial, Helvetica, sans-serif" style="font-family: Arial, Helvetica, sans-serif;"><span size="3" style="font-size: medium;">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.</span></span></span></p><p><br></p><p><br></p><p><span color="#000000" style="color: #000000;"><span face="Arial, Helvetica, sans-serif" style="font-family: Arial, Helvetica, sans-serif;"><span size="3" style="font-size: medium;">Background scenario:</span></span></span></p><p><span color="#000000" style="color: #000000;"><span face="Arial, Helvetica, sans-serif" style="font-family: Arial, Helvetica, sans-serif;"><span size="3" style="font-size: medium;">- stream a video from video file (H264 elementary stream or wrapped in a container) ok</span></span></span></p><p><span color="#000000" style="color: #000000;"><span face="Arial, Helvetica, sans-serif" style="font-family: Arial, Helvetica, sans-serif;"><span size="3" style="font-size: medium;">- stream a part of video file starting from specific position (FROM: timestamp)</span></span></span></p><p><span color="#000000" style="color: #000000;"><span face="Arial, Helvetica, sans-serif" style="font-family: Arial, Helvetica, sans-serif;"><span size="3" style="font-size: medium;">- stream a video file from specific postion (FROM: timestamp) while it's still being written by some other process</span></span></span></p><p><span color="#000000" style="color: #000000;"><span face="Arial, Helvetica, sans-serif" style="font-family: Arial, Helvetica, sans-serif;"><span size="3" style="font-size: medium;">- stream a specified part of video file, start-end  (FROM - TO /timestamp)</span></span></span></p><p><span color="#000000" style="color: #000000;"><span face="Arial, Helvetica, sans-serif" style="font-family: Arial, Helvetica, sans-serif;"><span size="3" style="font-size: medium;">- stream several video files to one client on demand at the same time - preferrably synchronized (assuming streams fps etc. matches)</span></span></span></p><p><br></p><p><span color="#000000" style="color: #000000;"><span face="Arial, Helvetica, sans-serif" style="font-family: Arial, Helvetica, sans-serif;"><span size="3" style="font-size: medium;">I have some questions regarding streaming and one of container formats.</span></span></span></p><p><span color="#000000" style="color: #000000;"><span face="Arial, Helvetica, sans-serif" style="font-family: Arial, Helvetica, sans-serif;"><span size="3" style="font-size: medium;">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.</span></span></span></p><p><span color="#000000" style="color: #000000;"><span face="Arial, Helvetica, sans-serif" style="font-family: Arial, Helvetica, sans-serif;"><span size="3" style="font-size: medium;">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 :-)</span></span></span></p><p><br></p><p><br></p><p><span color="#000000" style="color: #000000;"><span face="Arial, Helvetica, sans-serif" style="font-family: Arial, Helvetica, sans-serif;"><span size="3" style="font-size: medium;">STREAMING</span></span></span></p><p><span color="#000000" style="color: #000000;"><span face="Arial, Helvetica, sans-serif" style="font-family: Arial, Helvetica, sans-serif;"><span size="3" style="font-size: medium;">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).</span></span></span></p><p><span color="#000000" style="color: #000000;"><span face="Arial, Helvetica, sans-serif" style="font-family: Arial, Helvetica, sans-serif;"><span size="3" style="font-size: medium;">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?</span></span></span></p><p><span color="#000000" style="color: #000000;"><span face="Arial, Helvetica, sans-serif" style="font-family: Arial, Helvetica, sans-serif;"><span size="3" style="font-size: medium;">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)?</span></span></span></p><p><span color="#000000" style="color: #000000;"><span face="Arial, Helvetica, sans-serif" style="font-family: Arial, Helvetica, sans-serif;"><span size="3" style="font-size: medium;">QUESTION 3: In such scenario, an 'aggregate play' option: would it cause all videos start/pause/stop streaming together in live555 media server?</span></span></span></p><p><span color="#000000" style="color: #000000;"><span face="Arial, Helvetica, sans-serif" style="font-family: Arial, Helvetica, sans-serif;"><span size="3" style="font-size: medium;">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?</span></span></span></p><p><br></p><p><br></p><p><span color="#000000" style="color: #000000;"><span face="Arial, Helvetica, sans-serif" style="font-family: Arial, Helvetica, sans-serif;"><span size="3" style="font-size: medium;">CONTAINER FORMAT</span></span></span></p><p><span color="#000000" style="color: #000000;"><span face="Arial, Helvetica, sans-serif" style="font-family: Arial, Helvetica, sans-serif;"><span size="3" style="font-size: medium;">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</span></span></span></p><p><span color="#000000" style="color: #000000;"><span face="Arial, Helvetica, sans-serif" style="font-family: Arial, Helvetica, sans-serif;"><span size="3" style="font-size: medium;">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.</span></span></span></p><p><span color="#000000" style="color: #000000;"><span face="Arial, Helvetica, sans-serif" style="font-family: Arial, Helvetica, sans-serif;"><span size="3" style="font-size: medium;">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. </span></span></span></p><p><br></p><p><span color="#000000" style="color: #000000;"><span face="Arial, Helvetica, sans-serif" style="font-family: Arial, Helvetica, sans-serif;"><span size="3" style="font-size: medium;">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?</span></span></span></p><p><br></p><p><span color="#000000" style="color: #000000;"><span face="Arial, Helvetica, sans-serif" style="font-family: Arial, Helvetica, sans-serif;"><span size="3" style="font-size: medium;">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: <a href="https://matroska.org/technical/streaming/index.html">https://matroska.org/technical/streaming/index.html</a> , 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).</span></span></span></p><p><br></p><p><span color="#000000" style="color: #000000;"><span face="Arial, Helvetica, sans-serif" style="font-family: Arial, Helvetica, sans-serif;"><span size="3" style="font-size: medium;">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?</span></span></span></p><p><span color="#000000" style="color: #000000;"><span face="Arial, Helvetica, sans-serif" style="font-family: Arial, Helvetica, sans-serif;"><span size="3" style="font-size: medium;">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)?</span></span></span></p><p><br></p><p><br></p><p><span color="#000000" style="color: #000000;"><span face="Arial, Helvetica, sans-serif" style="font-family: Arial, Helvetica, sans-serif;"><span size="3" style="font-size: medium;">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).</span></span></span></p><p><br></p><p><span color="#000000" style="color: #000000;"><span face="Arial, Helvetica, sans-serif" style="font-family: Arial, Helvetica, sans-serif;"><span size="3" style="font-size: medium;">Best Regards, Lukas</span></span></span></p></body></html>