NooB Q. - controlling a remote gstreamer app

Michael Niemand michael.niemand at googlemail.com
Sat Feb 25 09:09:58 PST 2012


the book is NOT about gstreamer, that was a typo.

On Sat, Feb 25, 2012 at 6:08 PM, Michael Niemand <
michael.niemand at googlemail.com> wrote:

> The protocol to do these kinda things would be SIP I think.
> There's a book by Morgan Kaufmann called "Internet Multimedia
> Communications Using SIP".
>
> Its about GStreamer though, but SIP (as the title suggests). Maybe give it
> a try. Also check gstreamer-java if that is more your thing ...
>
> Good luck!
>
>
>
> On Sat, Feb 25, 2012 at 5:31 PM, Sean McNamara <smcnam at gmail.com> wrote:
>
>> Hi,
>>
>> On Sat, Feb 25, 2012 at 12:26 AM,  <gstream at ccc2.com> wrote:
>> > Hi All,
>> >
>> > I am not a C. programmer at all. I have followed the tutorials and
>> > examples and have a working videomixer2 application. Can you give advice
>> > as to how I can interact with this app on a remote linux box. I assume
>> it
>> > is with sockets etc (telnet?). Any advice and some examples would be
>> > great.
>>
>> First, this is not a gstreamer question. Just because you're *using*
>> gstreamer doesn't mean that the nature of your question is at all
>> related to gstreamer. This is a general applications programming
>> question, because the nature of your question is *networking*, not
>> *the gstreamer API*. I'm replying as a courtesy, but please keep the
>> SNR of this list high by not posting further non-gstreamer questions
>> to this list.
>>
>> This is where having some software engineering knowledge would help you.
>>
>> First of all, if you're doing this over the public internet, you need
>> an authentication mechanism for your network service. And since
>> authentication over plain text is basically the same as having no
>> authentication, you're going to need encryption, message
>> authentication, and a bunch of other things. Rather than trying to
>> design something like this from scratch, I'd suggest to just use an
>> existing solution that is secure enough that most people trust it.
>>
>> Basically, don't try to cheat by doing something simple/easy like
>> telnet, unless this service is ONLY going to listen on a LAN IP
>> address and you trust every computer that connects to that LAN.
>> Assuming you're good with using existing GNOME technology, you might
>> look at using libsoup as an HTTPS ("S" for "SSLv3" / "TLS") server.
>> Once you have an authenticated SSL or TLS tunnel with the client, you
>> can pretty much code up an arbitrary request/response protocol between
>> the client and server.
>>
>> It'd go something like this, starting at OSI layer 5 (Session):
>>
>> 0. Client establishes a TCP socket connection on port 443 (or
>> whatever) with server. (Layer 5)
>> 1. Client sends an SSL HelloRequest to server. (Layer 6)
>> 2. Client and server complete an SSL handshake to establish a secure
>> connection. (Layer 6)
>> 3. Client pushes across an HTTP Request (tunneled through SSL) with a
>> body containing the authentication data. Don't use URL params. For a
>> low-risk system like this with no concept of user accounts, just a 20+
>> character password could be sufficient.
>> 4. If the client sent the right password, the server sends an HTTP
>> Response back with a body containing something like "OK". If the
>> client sent the wrong password, terminate the TCP connection and don't
>> respond to that host until they initiate a new connection.
>> 5. Client pushes across another HTTP Request, with a body containing
>> plain text that the server will parse to figure out what property to
>> set on the element, and what value. You can do something as simple as
>> name=value.
>> 6. Server will call g_object_set() on the appropriate gstreamer
>> element, in order to set the property at runtime.
>> 7. Here, you can optionally keep the channel open for re-use (to avoid
>> having to start over from step 1 if you want to set another property).
>> Or you can kill it on either side if you're done.
>>
>> If you use libsoup on the server, you can do this without starting
>> another thread, because libsoup has async methods that call a callback
>> that's tied into the GLib main loop. Only using one thread doesn't
>> scale extremely well to a large number of clients, but this sounds
>> like a simple job, so a simple solution will do.
>>
>> If the server is behind a NAT (i.e. it can listen on an IP that will
>> let it connect to other LAN computers but not let the public internet
>> connect to it), you CAN use the above method (extra security never
>> hurts), but you could skip the SSL if you want, if you are sure that
>> no unauthorized persons can connect to your LAN (an unsecured wifi
>> network would be an example of an *insecure* LAN).
>>
>> If you have no idea where to start, start here:
>> http://developer.gnome.org/libsoup/stable/libsoup-server-howto.html .
>> I would recommend learning the APIs and their semantics, rather than
>> just blindly copying and pasting from examples.
>>
>> BTW, you don't *have* to use C to write gstreamer apps. Since you
>> indicated you don't really know how to program in C, I would suggest
>> that you don't, unless you have some specific reason to. I would
>> suggest Python or Vala  for a task such as this one. You get soup and
>> gstreamer bindings "for free" in those languages, and the syntax is a
>> lot friendlier.
>>
>>
>> >
>> > As an example I am using
>> >  g_object_set (G_OBJECT (decoder2), "max-size-time", (guint64)300000000,
>> > NULL);
>>
>> ...So you already know the only gstreamer-relevant topic in your
>> question, and this entire post has been off-topic for this list. Just
>> FYI.
>>
>> >
>> > and would like to update this function with a new time manually.
>> >
>> > I have found some basic telnet socket examples but have no clue on how
>> to
>> > mix both applications together so I can control gst.
>> >
>> > thx
>> > Art.
>> >
>> > _______________________________________________
>> > gstreamer-devel mailing list
>> > gstreamer-devel at lists.freedesktop.org
>> > http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
>> _______________________________________________
>> gstreamer-devel mailing list
>> gstreamer-devel at lists.freedesktop.org
>> http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
>>
>
>
>
> --
> *Michael Niemand*
> *
> *
> Albusstr. 17
> 60313 Frankfurt/M
> Germany
>
> Tel.: +49 (0) 69 200 130 60
> Mobile: +49 (0) 171 645 29 07
>
> eMail: michael.niemand at gmail.com
> sip:1406283 at sipgate.de
>
>


-- 
*Michael Niemand*
*
*
Albusstr. 17
60313 Frankfurt/M
Germany

Tel.: +49 (0) 69 200 130 60
Mobile: +49 (0) 171 645 29 07

eMail: michael.niemand at gmail.com
sip:1406283 at sipgate.de
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/gstreamer-devel/attachments/20120225/776d8308/attachment-0001.htm>


More information about the gstreamer-devel mailing list