MP4 doesn't work in MediaSource Extensions

RESOLVED WORKSFORME

Status

()

RESOLVED WORKSFORME
5 years ago
5 years ago

People

(Reporter: cpearce, Unassigned)

Tracking

(Blocks: 1 bug)

Firefox Tracking Flags

(Not tracked)

Details

(URL)

There's something wrong with fMP4 MSE support. The example players below don't work (using the MP4Reader on Windows).

http://dashif.org/reference/players/javascript/1.0.0/baseline.html
http://dashif.org/reference/players/javascript/1.0.0/index.html
(Reporter)

Comment 1

5 years ago
GPAC/mp4box can mux MP4 files for MSE.

I made a simple MP4 in MSE testcase:

http://people.mozilla.org/~cpearce/simple-dash/

(command line to mux the MP4 file was: `mp4box -dash 10000 -rap -segment-name bruce -subsegs-per-sidx 5 bruce_vs_ironman.mp4`)

This page works in IE11.

With Firefox Nightly with MSE and the fmp4 demuxer/MP4Reader enabled this works perfect on the first play through, but if I reload the page, it doesn't play, we get an empty frame.

It also hangs during shutdown.

If I use disable the fmp4 demuxer/MP4Reader and use WMFReader instead, we don't get an audio stream played, and playback stops after 7 seconds.
(Reporter)

Comment 2

5 years ago
On Linux the above testcase crashes with the following stack:

#0  0x00007ff2a981fd84 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib/x86_64-linux-gnu/libpthread.so.0
#1  0x00007ff2a8ee0631 in PR_EnterMonitor (mon=0x7ff28b0557c0) at /home/cpearce/src/orange/nsprpub/pr/src/pthreads/ptsynch.c:592
#2  0x00007ff2a37515f0 in mozilla::ReentrantMonitor::Enter (this=0x7ff27cc208a0) at /home/cpearce/src/orange/xpcom/glue/BlockingResourceBase.cpp:279
#3  0x00007ff2a47ba2f6 in mozilla::SourceBufferResource::AppendData (this=0x7ff27cc20820, aData=0x7ff27ab22000 "", aLength=721611) at /home/cpearce/src/orange/content/media/mediasource/SourceBufferResource.cpp:147
#4  0x00007ff2a47bb053 in AppendData (aLength=721611, aData=0x7ff27ab22000 "", this=0x7ff27cc14a00, aRv=...) at /home/cpearce/src/orange/content/media/mediasource/SourceBuffer.cpp:349
#5  mozilla::dom::SourceBuffer::AppendData (this=0x7ff27cc14a00, aData=0x7ff27ab22000 "", aLength=721611, aRv=...) at /home/cpearce/src/orange/content/media/mediasource/SourceBuffer.cpp:331
#6  0x00007ff2a40e33cb in appendBuffer (args=..., self=0x7ff27cc14a00, cx=0x7ff289fc8600, obj=...) at /home/cpearce/src/orange/obj-x86_64-unknown-linux-gnu/dom/bindings/SourceBufferBinding.cpp:364
#7  mozilla::dom::SourceBufferBinding::appendBuffer (cx=0x7ff289fc8600, obj=..., self=0x7ff27cc14a00, args=...) at /home/cpearce/src/orange/obj-x86_64-unknown-linux-gnu/dom/bindings/SourceBufferBinding.cpp:335
#8  0x00007ff2a4189a39 in mozilla::dom::GenericBindingMethod (cx=0x7ff289fc8600, argc=<optimized out>, vp=<optimized out>) at /home/cpearce/src/orange/dom/bindings/BindingUtils.cpp:2258
#9  0x00007ff2a5789451 in js::CallJSNative (cx=0x7ff289fc8600, native=0x7ff2a4189915 <mozilla::dom::GenericBindingMethod(JSContext*, unsigned int, JS::Value*)>, args=...) at /home/cpearce/src/orange/js/src/jscntxtinlines.h:239
#10 0x00007ff2a57da6d9 in js::Invoke (cx=0x7ff289fc8600, args=..., construct=js::NO_CONSTRUCT) at /home/cpearce/src/orange/js/src/vm/Interpreter.cpp:476
#11 0x00007ff2a57cb6c2 in Interpret (cx=0x7ff289fc8600, state=...) at /home/cpearce/src/orange/js/src/vm/Interpreter.cpp:2614
#12 0x00007ff2a57d908b in js::RunScript (cx=0x7ff289fc8600, state=...) at /home/cpearce/src/orange/js/src/vm/Interpreter.cpp:423
#13 0x00007ff2a57da755 in RunScript (state=..., cx=0x7ff289fc8600) at /home/cpearce/src/orange/js/src/vm/Interpreter.cpp:390
#14 js::Invoke (cx=0x7ff289fc8600, args=..., construct=js::NO_CONSTRUCT) at /home/cpearce/src/orange/js/src/vm/Interpreter.cpp:495
#15 0x00007ff2a57db477 in js::Invoke (cx=0x7ff289fc8600, thisv=..., fval=..., argc=<optimized out>, argv=0x7fff9a7aeaf8, rval=JSVAL_VOID) at /home/cpearce/src/orange/js/src/vm/Interpreter.cpp:532
#16 0x00007ff2a563f4d7 in JS::Call (cx=0x7ff289fc8600, thisv=$jsval((JSObject *) 0x7ff279296e00 [object XMLHttpRequest]), fval=$jsval((JSObject *) 0x7ff279299740 [object Function "fetch/loaded"]), args=..., rval=JSVAL_VOID)
    at /home/cpearce/src/orange/js/src/jsapi.cpp:4907
#17 0x00007ff2a3f574b0 in mozilla::dom::EventListener::HandleEvent (this=0x7ff27aabaac0, cx=0x7ff289fc8600, aThisVal=$jsval((JSObject *) 0x7ff279296e00 [object XMLHttpRequest]), event=..., aRv=...)
    at /home/cpearce/src/orange/obj-x86_64-unknown-linux-gnu/dom/bindings/EventListenerBinding.cpp:44
#18 0x00007ff2a43ed29e in mozilla::dom::EventListener::HandleEvent<mozilla::dom::EventTarget*> (this=0x7ff27aabaac0, thisObjPtr=<optimized out>, event=..., aRv=..., aExceptionHandling=<optimized out>) at ../../dist/include/mozilla/dom/EventListenerBinding.h:53
#19 0x00007ff2a43f2dd7 in mozilla::EventListenerManager::HandleEventSubType (this=0x7ff286dfa980, aListener=<optimized out>, aDOMEvent=<optimized out>, aCurrentTarget=0x7ff27aaa2800) at /home/cpearce/src/orange/dom/events/EventListenerManager.cpp:951
#20 0x00007ff2a43f3000 in mozilla::EventListenerManager::HandleEventInternal (this=0x7ff286dfa980, aPresContext=0x0, aEvent=0x7ff28747b440, aDOMEvent=0x7fff9a7aefd8, aCurrentTarget=0x7ff27aaa2800, aEventStatus=0x7fff9a7aefe0)
    at /home/cpearce/src/orange/dom/events/EventListenerManager.cpp:1015
#21 0x00007ff2a43f329a in HandleEvent (aEventStatus=0x7fff9a7aefe0, aCurrentTarget=0x7ff27aaa2800, aDOMEvent=0x7fff9a7aefd8, aEvent=0x7ff28747b440, aPresContext=0x0, this=<optimized out>) at ../../dist/include/mozilla/EventListenerManager.h:328
#22 mozilla::EventTargetChainItem::HandleEvent (this=0x7ff28c8b9008, aVisitor=..., aCd=...) at /home/cpearce/src/orange/dom/events/EventDispatcher.cpp:197
#23 0x00007ff2a43f33ae in mozilla::EventTargetChainItem::HandleEventTargetChain (aChain=..., aVisitor=..., aCallback=0x0, aCd=...) at /home/cpearce/src/orange/dom/events/EventDispatcher.cpp:287
#24 0x00007ff2a43f826a in mozilla::EventDispatcher::Dispatch (aTarget=0x7ff28c8b9008, aPresContext=<optimized out>, aEvent=0x7ff28747b440, aDOMEvent=0x7ff27cc5ec80, aEventStatus=0x0, aCallback=0x0, aTargets=0x0)
    at /home/cpearce/src/orange/dom/events/EventDispatcher.cpp:598
#25 0x00007ff2a43f867e in mozilla::EventDispatcher::DispatchDOMEvent (aTarget=0x7ff27aaa2800, aEvent=<optimized out>, aDOMEvent=0x7ff27cc5ec80, aPresContext=0x0, aEventStatus=0x0) at /home/cpearce/src/orange/dom/events/EventDispatcher.cpp:665
#26 0x00007ff2a469482c in nsXMLHttpRequest::DispatchProgressEvent (this=0x7ff27aaa2800, aTarget=0x7ff27aaa2800, aType=..., aLengthComputable=true, aLoaded=721611, aTotal=721611) at /home/cpearce/src/orange/content/base/src/nsXMLHttpRequest.cpp:1448
#27 0x00007ff2a4694d98 in nsXMLHttpRequest::ChangeStateToDone (this=0x7ff27aaa2800) at /home/cpearce/src/orange/content/base/src/nsXMLHttpRequest.cpp:2219
#28 0x00007ff2a4695293 in nsXMLHttpRequest::OnStopRequest (this=0x7ff27aaa2800, request=<optimized out>, ctxt=<optimized out>, status=NS_OK) at /home/cpearce/src/orange/content/base/src/nsXMLHttpRequest.cpp:2174
#29 0x00007ff2a4633db4 in nsCORSListenerProxy::OnStopRequest (this=0x7ff27cc9cb30, aRequest=<optimized out>, aContext=<optimized out>, aStatusCode=<optimized out>) at /home/cpearce/src/orange/content/base/src/nsCrossSiteListenerProxy.cpp:655
#30 0x00007ff2a38465b1 in nsStreamListenerTee::OnStopRequest (this=0x7ff27ab21d80, request=0x7ff27cc6e058, context=0x0, status=NS_OK) at /home/cpearce/src/orange/netwerk/base/src/nsStreamListenerTee.cpp:53
#31 0x00007ff2a392448f in mozilla::net::nsHttpChannel::OnStopRequest (this=0x7ff27cc6e000, request=<optimized out>, ctxt=<optimized out>, status=NS_OK) at /home/cpearce/src/orange/netwerk/protocol/http/nsHttpChannel.cpp:5241
#32 0x00007ff2a382f272 in nsInputStreamPump::OnStateStop (this=0x7ff27cc68690) at /home/cpearce/src/orange/netwerk/base/src/nsInputStreamPump.cpp:703
#33 0x00007ff2a382f3d1 in nsInputStreamPump::OnInputStreamReady (this=0x7ff27cc68690, stream=<optimized out>) at /home/cpearce/src/orange/netwerk/base/src/nsInputStreamPump.cpp:438
#34 0x00007ff2a37a7842 in nsInputStreamReadyEvent::Run (this=<optimized out>) at /home/cpearce/src/orange/xpcom/io/nsStreamUtils.cpp:85
#35 0x00007ff2a37b9b06 in ProcessNextEvent (result=0x7fff9a7af53f, mayWait=false, this=0x7ff2a91641a0) at /home/cpearce/src/orange/xpcom/threads/nsThread.cpp:694
#36 nsThread::ProcessNextEvent (this=0x7ff2a91641a0, mayWait=false, result=0x7fff9a7af53f) at /home/cpearce/src/orange/xpcom/threads/nsThread.cpp:618
#37 0x00007ff2a375538f in NS_ProcessNextEvent (thread=<optimized out>, mayWait=false) at /home/cpearce/src/orange/xpcom/glue/nsThreadUtils.cpp:263
#38 0x00007ff2a3a022e6 in mozilla::ipc::MessagePump::Run (this=0x7ff299e92b80, aDelegate=0x7ff2a91d4840) at /home/cpearce/src/orange/ipc/glue/MessagePump.cpp:95
#39 0x00007ff2a39eb6ca in MessageLoop::RunInternal (this=0x7ff2a91d4840) at /home/cpearce/src/orange/ipc/chromium/src/base/message_loop.cc:226
#40 0x00007ff2a39eb6f2 in RunHandler (this=0x7ff2a91d4840) at /home/cpearce/src/orange/ipc/chromium/src/base/message_loop.cc:219
#41 MessageLoop::Run (this=0x7ff2a91d4840) at /home/cpearce/src/orange/ipc/chromium/src/base/message_loop.cc:193
#42 0x00007ff2a422d087 in nsBaseAppShell::Run (this=0x7ff292274080) at /home/cpearce/src/orange/widget/xpwidgets/nsBaseAppShell.cpp:164
#43 0x00007ff2a4e9d24c in nsAppStartup::Run (this=0x7ff29218d060) at /home/cpearce/src/orange/toolkit/components/startup/nsAppStartup.cpp:276
#44 0x00007ff2a4e44715 in XREMain::XRE_mainRun (this=0x7fff9a7af9a0) at /home/cpearce/src/orange/toolkit/xre/nsAppRunner.cpp:4008
#45 0x00007ff2a4e449bc in XREMain::XRE_main (this=0x7fff9a7af9a0, argc=2, argv=<optimized out>, aAppData=0x7fff9a7afb50) at /home/cpearce/src/orange/toolkit/xre/nsAppRunner.cpp:4077
#46 0x00007ff2a4e44c30 in XRE_main (argc=2, argv=0x7fff9a7b0eb8, aAppData=0x7fff9a7afb50, aFlags=<optimized out>) at /home/cpearce/src/orange/toolkit/xre/nsAppRunner.cpp:4289
#47 0x0000000000404301 in do_main (argc=2, argv=0x7fff9a7b0eb8, xreDirectory=0x7ff2a912d480) at /home/cpearce/src/orange/browser/app/nsBrowserApp.cpp:282
#48 0x0000000000403865 in main (argc=2, argv=0x7fff9a7b0eb8) at /home/cpearce/src/orange/browser/app/nsBrowserApp.cpp:643
Status: NEW → RESOLVED
Last Resolved: 5 years ago
Resolution: --- → WORKSFORME
You need to log in before you can comment on or make changes to this bug.