Can WebM get MPEG-TS's robustness?

486 views
Skip to first unread message

Ibrahim Tachijian

unread,
Feb 8, 2014, 11:54:59 AM2/8/14
to webm-d...@webmproject.org
What I mean here is can WebM be encoded with settings/options so that the webm file has headers being repeated the same way mpeg-ts is?
I want to create a webm file that can be split at any given offset of the file and still be played back normally just like mpegts files are.

The reason for this is live streaming. More specifically to send webm encoded files over multicast and be able to play back that stream even if I started listening in the middle of the file.

Ralph Giles

unread,
Feb 11, 2014, 5:09:26 PM2/11/14
to webm-d...@webmproject.org
For multicast delivery you probably want to use the VP8 and Opus codecs
in their RTP encapsulation, rather than trying to stream a file-oriented
container like WebM. See

https://tools.ietf.org/html/draft-ietf-payload-vp8 and
https://tools.ietf.org/html/draft-ietf-payload-rtp-opus

For unicast streaming of webm over http, normally what is done is to
have the server save the headers from the beginning of the source stream
and prepend them to any new connection. This strategy is implemented by
icecast, for example. But of course that doesn't work for multicast. If
you need a dumb server, there's DASH, which cuts the stream into
individual short files, each reproducing the header.

HTH,
-r

Ibrahim Tachijian

unread,
Feb 12, 2014, 5:07:50 AM2/12/14
to webm-d...@webmproject.org
For multicast delivery you probably want to use the VP8 and Opus codecs
in their RTP encapsulation, rather than trying to stream a file-oriented
container like WebM. See

https://tools.ietf.org/html/draft-ietf-payload-vp8 and
https://tools.ietf.org/html/draft-ietf-payload-rtp-opus

For unicast streaming of webm over http, normally what is done is to
have the server save the headers from the beginning of the source stream
and prepend them to any new connection. This strategy is implemented by
icecast, for example. But of course that doesn't work for multicast. If
you need a dumb server, there's DASH, which cuts the stream into
individual short files, each reproducing the header.

Let me explain my situation. I have lots of 'video' or 'channels' being broadcasted live in my internal multicast network.

An example is channel1 on 239.200.0.1:3301, channel2 on 239.200.0.2:3302.

When I watch that channel I dont use multicast per say, Im ussing a HTTP-to-Multicast gateway.
Specifically I can make a unicast http request to something like http://www.example.org:port/request/239.200.0.1:3301

The web server that is listening on for those HTTP GET would start listening to the multicast group and relay them over to the client who made that HTTP get request (wget, vlc, you name it).

If the multicast channel had MPEG-TS encapsulated H264/AAC - no problem.
If the multicast channel had WEBM encapuslated VP8/Vorbis - does not work because when I start watching 'in the middle' of the file I see no headers.
I can start to send arbitrary headers by coding that into my HTTP-to-Multicast gateway.

So my question,

1. Can I send WEBM headers without knowing the total length of the file? (I mean it is live so the channel will continue for ever until ffmpeg crashes or the channel stops broadcasting).
Maybe I can send a zero length total time or a ridiculously high time
2. I dont want seeking possibilites I want it to be live.
3. How do I build this header? I really dony want to spend my time in hexediting WEBM files to see how the headers are written.
4. The main reason for all of this is to get WEBM pseudo file-based support in HTML5 browsers using my specially made HTTP server that can read local multicast feeds into unicast progressivedownload as-if the file was present on disk.


Regards, 

Matthew Heaney

unread,
Feb 12, 2014, 3:52:24 PM2/12/14
to WebM Discussion
On Wed, Feb 12, 2014 at 2:07 AM, Ibrahim Tachijian <bar...@gmail.com> wrote:
So my question,

1. Can I send WEBM headers without knowing the total length of the file? (I mean it is live so the channel will continue for ever until ffmpeg crashes or the channel stops broadcasting).

Yes.  You use the distinguished value -1 as the Matroska element size.
 
 
Maybe I can send a zero length total time or a ridiculously high time

No, don't do that.

 
2. I dont want seeking possibilites I want it to be live.

OK.

 
3. How do I build this header? I really dony want to spend my time in hexediting WEBM files to see how the headers are written.

Clients should accept -1 as the element size value.

Have you tried using IE with the WebM Media Foundation components installed, and then pointed the browser to a site with a live webm stream?  (The same components power both WMP and IE.)

 
4. The main reason for all of this is to get WEBM pseudo file-based support in HTML5 browsers using my specially made HTTP server that can read local multicast feeds into unicast progressivedownload as-if the file was present on disk.

Playback in a browser of a live webm stream should already work.

 -Matt

Reply all
Reply to author
Forward
0 new messages