<div dir="ltr"><div><div><div>Right now I have this routine implemented:<br><br></div>multifilesink writes files of fixed time to temporary dir and I wait for message on the bus. Upon each new file message I move the file to my directory tree. So if I understood you right, if I  want to broadcast those files later I should either:<br><br></div>1) Move or make simlinks to  those files to temporary dir with a wildcard like video%d.mp4<br><br></div>2) Prepare a m3u8 manifest pointing to my files location and use hlsdemux, update the m3u8 dynamicaly<br><br></div><div class="gmail_extra"><br><div class="gmail_quote">2016-03-31 12:26 GMT+03:00 Thornton, Keith <span dir="ltr"><<a href="mailto:keith.thornton@zeiss.com" target="_blank">keith.thornton@zeiss.com</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">





<div link="blue" vlink="purple" lang="DE">
<div>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Arial","sans-serif"" lang="EN-US">Hi,<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Arial","sans-serif"" lang="EN-US">I don’t think it was designed fort hat use-case. It was designed to put the files in one directory with incrementing file names. Why not just move the files to
 the required directory using a background thread at the end of each hour.<u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-US"><u></u> <u></u></span></p>
<p class="MsoNormal"><b><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif"">Von:</span></b><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif""> gstreamer-devel [mailto:<a href="mailto:gstreamer-devel-bounces@lists.freedesktop.org" target="_blank">gstreamer-devel-bounces@lists.freedesktop.org</a>]
<b>Im Auftrag von </b>Krutskikh Ivan<br>
<b>Gesendet:</b> Donnerstag, 31. März 2016 11:14<br>
<b>An:</b> Discussion of the development of and with GStreamer<br>
<b>Betreff:</b> Re: playbin2 undecoded video and about-to-finish signal<u></u><u></u></span></p><div><div class="h5">
<p class="MsoNormal"><u></u> <u></u></p>
<div>
<div>
<p class="MsoNormal" style="margin-bottom:12.0pt">Hi!<u></u><u></u></p>
</div>
<p class="MsoNormal">Thanks for pointing me to splitmuxsink and splitmuxsrc. That would spare me a good chunk of code.=)
<br>
<br>
The only thing I don't understand about splitmuxsrc is how to specify a specific file list or to modify it in playing state. By default I have a separate directory for each hour of recording. I can stream files from one hour with location=/archive/video/cam/day/hour/*.mp4,
 but what happens when I finish this hour? The awkward hack is to make a temp directory and add simlinks to videofiles from main archive to it in advance...<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
<div>
<p class="MsoNormal">2016-03-30 23:53 GMT+03:00 Tim Müller <<a href="mailto:tim@centricular.com" target="_blank">tim@centricular.com</a>>:<u></u><u></u></p>
<p class="MsoNormal">On Sun, 2016-03-27 at 22:28 +0300, Krutskikh Ivan wrote:<br>
<br>
Hi,<br>
<br>
Your subject line mentions 'playbin2' - are you using the outdated and<br>
unmaintained GStreamer 0.10 ? If yes, you should switch to a current<br>
1.x version.<br>
<br>
> I'm developing a video recording/broadcasting server with gstreamer<br>
> and python.<br>
><br>
> Right now I'm facing 2 tasks:<br>
><br>
> - recording video from different sources (rtsp and http) and with<br>
> different codecs (mjpeg,mpeg4,h264,h265) in a series of mkv files<br>
><br>
> - broadcasting video from my archive to different clients using http<br>
> and rtsp.<br>
><br>
> Before discovering the playbin magic I used a number of template<br>
> pipelines to capture video from source, pass it to multifilesink and<br>
> ffmpeg to finish and store them in a convinient way, But if I could<br>
> somehow feed my uri to playbin and get an undecoded video/audio<br>
> stream from it, I would be able to put all my templates to single<br>
> gstreamer pipeline: playbin uri=rtsp... (magic here) ! mpegtsmux !<br>
> multifilesink...  And that would be very convenient.<br>
<br>
For what it's worth, there is also decodebin and uridecodebin, which<br>
are used inside of playbin but lower level.<br>
<br>
You can also make (uri)decodebin stop autoplugging decoders early so<br>
you can transmux without re-encoding, for example (auto* signals).<u></u><u></u></p>
<div>
<div>
<p class="MsoNormal" style="margin-bottom:12.0pt"><br>
<br>
> The second task is more ambitious. I want to feed the recorded video<br>
> to my clients as if it was a live source. Right now I have a file<br>
> tree:<br>
><br>
> /basedir/cam_name/yearmonthday/hour/minutesecond-duration.mp4<br>
><br>
> Example:<br>
><br>
> archive-test:/archive/video/multi/160327/21 # ls<br>
> 0120-00125.mp4  0730-00120.mp4  1335-00120.mp4  1940-00125.mp4  2545-<br>
> 00120.mp4  3150-00120.mp4  3755-00120.mp4  4400-00125.mp4  5005-<br>
> 00125.mp4  5610-00125.mp4<br>
> 0325-00120.mp4  0930-00120.mp4  1535-00125.mp4  2145-00120.mp4  2745-<br>
> 00125.mp4  3350-00125.mp4  3955-00125.mp4  4605-00120.mp4  5210-<br>
> 00120.mp4  5815-00120.mp4<br>
> 0525-00125.mp4  1130-00125.mp4  1740-00120.mp4  2345-00120.mp4  2950-<br>
> 00120.mp4  3555-00120.mp4  4200-00120.mp4  4805-00120.mp4  5410-<br>
> 00120.mp4<br>
><br>
> At some point in the future I recieve a request to play video from<br>
> cam multi from  21:05 160327. I can then find my started file,<br>
> construct a pipeline with playbin and multisocketsink, fast forward<br>
> to the desired time and replace the uri of the file upon each about-<br>
> to-finish signal. The complex part is that I also need an undecoded<br>
> video stream since I plan to broadcast it to remote client without<br>
> re-encoding.<br>
><br>
> So my questions are:<br>
><br>
> 1) Is this design possible?<br>
> 2) Where can I find some examples of such pipelines, preferably in<br>
> python.<u></u><u></u></p>
</div>
</div>
<p class="MsoNormal">It's all possible, but will be a bit fiddly.<br>
<br>
You probably want something lower-level than playbin.<br>
<br>
In recent GStreamer versions we have splitmuxsink and splitmuxsrc which<br>
you might find helpful in this context.<br>
<br>
What protocols do you want to stream as? The easiest would be to just<br>
use gst-rtsp-server (see gst-rtsp-server/examples for some simple<br>
examples).<br>
<br>
Cheers<br>
<span><span style="color:#888888"> -Tim</span></span><span style="color:#888888"><br>
<br>
<br>
<span>--</span><br>
<span>Tim Müller, Centricular Ltd - <a href="http://www.centricular.com" target="_blank">
http://www.centricular.com</a></span><br>
<br>
<br>
<span>_______________________________________________</span><br>
<span>gstreamer-devel mailing list</span><br>
<span><a href="mailto:gstreamer-devel@lists.freedesktop.org" target="_blank">gstreamer-devel@lists.freedesktop.org</a></span><br>
<span><a href="https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel" target="_blank">https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel</a></span></span><u></u><u></u></p>
</div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
</div></div></div>
</div>

<br>_______________________________________________<br>
gstreamer-devel mailing list<br>
<a href="mailto:gstreamer-devel@lists.freedesktop.org">gstreamer-devel@lists.freedesktop.org</a><br>
<a href="https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel" rel="noreferrer" target="_blank">https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel</a><br>
<br></blockquote></div><br></div>