W3C home > Mailing lists > Public > public-html-media@w3.org > March 2014

Re: Streaming with Media Source

From: Aaron Colwell <acolwell@chromium.org>
Date: Tue, 25 Mar 2014 11:31:16 -0700
Message-ID: <CAA0c1bC63WiN0X4PB+jHefOyRizmcU5B+gCATO3ASbJUqgCYkg@mail.gmail.com>
To: Jay Munro <jaymunro@microsoft.com>
Cc: Aymeric Vitte <vitteaymeric@gmail.com>, "public-html-media@w3.org" <public-html-media@w3.org>
Hi Jay,

I did a little more investigation and Chrome is also having problems with
the large uuid box at the beginning of the file. This box appears to
contain some sort of Adobe specific header. If you simply strip it out of
the file, then this content should work with existing Chrome builds with no
problem. I'm planning on landing a change today that will allow our code to
properly skip & ignore this box. The fix should show up in Canary builds in
the next day or so.

On a completely separate note, you should not be referencing
WebKitMediaSource in your code unless you are intentionally targetting a
MediaSource implementation in WebKit that supports appendBuffer(). Chrome's
WebKitMediaSource implementation has never supported appendBuffer() so
unless you are targetting a non-Chrome implementation you should simply use
'mediaSource = new MediaSource()' and not 'mediaSource = new
(window.MediaSource || window.WebKitMediaSource)()'. The
"window.MediaSource || window.WebKitMediaSource" construct has shown up in
a lot of examples on the Internet, but since the synchronous append()
became the asynchronous appendBuffer() during standardization, the prefixed
API is not compatible with the non-prefixed one and so this construct won't
do what you hope it would. I'd appreciate it if you would update your
example so that others don't make the same mistake.

I hope this helps,

Aaron


On Tue, Mar 25, 2014 at 10:22 AM, Aaron Colwell <acolwell@chromium.org>wrote:

> Hi Jay,
>
> I believe your demo should work if you specify the codecs you are using in
> the mimetype you pass to addSourceBuffer(). It looks like your code only
> passes in "video/mp4". Chrome requires that the codecs also be specified so
> you should pass in 'video/mp4;codecs="avc1.4d0020,mp4a.40.2"' since that
> appears to be what codecs are specified in the DASH manifest.
>
> Aaron
>
>
> On Tue, Mar 25, 2014 at 9:46 AM, Jay Munro <jaymunro@microsoft.com> wrote:
>
>> How are you preparing your source files? Do they have the initialization
>> box/packet (normally on any mp4 or webm file) for at least the first
>> segment?
>>
>> I've created a MSE player for DASH mp4 files.. I'm not an expert, but
>> I've gotten it to work on a single stream on IE and Firefox. I would like
>> to get it to work on chrome, so maybe we can share experiences.
>>
>> I don't know if this will help, but here's a blog post I wrote on one way
>> to do it (there seems to be quite a few)
>> http://blogs.msdn.com/b/mediastuff/archive/2014/02/19/video-streaming-without-plug-ins-or-special-servers.aspx
>>
>> -Jay
>>
>>
>> -----Original Message-----
>> From: Aymeric Vitte [mailto:vitteaymeric@gmail.com]
>> Sent: Tuesday, March 25, 2014 4:23 AM
>> To: public-html-media@w3.org
>> Cc: acolwell@chromium.org
>> Subject: Streaming with Media Source
>>
>> Hi,
>>
>> For [1] I have started to implement Streaming for audio and video using
>> the Media Source API, the app is retrieving chunks and is appending them to
>> the "source" of audio/video tags.
>>
>> This was supposed to be simple but it is not, the API (or at least the
>> Chrome implementation) seems to handle only adaptive rate/manifest
>> structures both for mp4 and webm, it's unclear if the audio tag is
>> supported.
>>
>> I am not an expert in video/audio format but I don't see very well what's
>> the issue to append chunks to a destination, or to turn it into a stream
>> (since I am participating to the Streams API, I know it's not there yet)
>> outside of other interfaces such as WebRTC.
>>
>> For the final phase of the project, WebRTC will be used but with
>> DataChannels, so the issue remains.
>>
>> I have looked in all existing APIs and unless I am missing something, I
>> still don't see how to achieve this simple thing, how can it be done?
>>
>> Regards,
>>
>> Aymeric
>>
>> [1] http://www.peersm.com
>>
>> --
>> Peersm : http://www.peersm.com
>> node-Tor : https://www.github.com/Ayms/node-Tor
>> GitHub : https://www.github.com/Ayms
>>
>>
>>
>
Received on Tuesday, 25 March 2014 18:31:44 UTC

This archive was generated by hypermail 2.3.1 : Tuesday, 6 January 2015 20:33:02 UTC