Question

I am using the directshow filter for muxing a vp8 and vorbis. And MOST IMPORTANTLY I am sending (trying to send actually) the webm file in real time. So there is no file being created. As data is packed into webm after being encoder i send it off to the socket.

The filesinker filter uses IStream to do the file IO. And it heavely uses the seek operation. Which I can not use. Since I can not seek on a socket.

Has anyone implemented or know how to use this muxer so that seek operation in not called. Or maybe a version on the muxer with queues so that it supports fragmentation.

Thanks

I am using the directshow filter providede by www.webmproject.org

Was it helpful?

Solution

Implementation of IStream on writers allow multiplexers update cross references in the written stream/file. So they don't have to write sequentially which is impossible for most of container formats without creating huge buffers or temporary files.

Now if you are creating the file on runtime to progressively send over network, which I suppose you are trying to achieve, you don't know what, where and when the multiplexer is going to update to close the file. Whether it is going to revisit data in the beginning of the file and update references, headers etc.

You are supposed to create the full file first, and then deliver it. Or you need to substitute the whole writer thing and deliver onto socket all writes, including overwrites of already existing data. The most appropriate method to deliver real time data over network however is not not transfer the files at all. Sender send individual streams and receivers either use them as such, or multiplex into file after receiving then is it is necessary.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top