blob: 05389df4ee1613d79c5dbd674e05ac96daa89db9 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
|
Server usage:
-------------
$ ./stp-server
Runs on port 8000 by default. Further options can be seen with the --help flag:
$ ./stp-server --help
The server supports multiple PUT streams and multiple GET streams for each PUT
stream.
Usage with curl:
----------------
Sending a stream (PUT):
$ curl -v "http://localhost:8000/somepath" -T - < [some video file]
This will use Chunked encoding and send the file in chunks.
Optionally, you can rate limit to emulate a live stream (--limit-rate)
Trying to create two streams on the same path will return a 409.
Reading the webm output stream (GET):
$ curl -v "http://localhost:8000/somepath" > [some output file]
The server supports multiple PUT requests on different paths, and multiple GET
requests from these paths.
Usage with souphttp:
--------------------
Sending a stream from a file (PUT):
$ gst-launch-1.0 filesrc location=[video file] ! \
souphttpclientsink location="http://localhost:8000/somepath"
This will use a persistent HTTP connection and Content-Length + Content-Range
headers to send the stream data.
Reading a webm output stream (GET):
$ gst-launch-1.0 souphttpsrc location="http://localhost:8000/somepath" ! \
filesink location=[some output file]
Known bugs:
-----------
* Doing a massive PUT in a single go (say, 300-400MB or more) of a WebM
file causes the server to become overwhelmed. This problem doesn't happen for
non-WebM file dumps. Note however, that this is not a problem in the usual
mode of operation using live streams.
* Opening multiple GET streams from the same PUT stream works, but clients other
than the first one might timeout due to a bug that is being investigated.
* There are no queue size limit handling for PUT streams, and hence the server
can take a lot of memory if the PUT stream is sending data faster than it can
be encoded. In most circumstances, this is actually a feature. :-)
|