MediaRecorder.mimeType returns empty string
Categories
(Core :: Audio/Video: Recording, defect, P3)
Tracking
()
Tracking | Status | |
---|---|---|
geckoview64 | --- | wontfix |
geckoview65 | --- | wontfix |
firefox-esr60 | --- | wontfix |
firefox-esr68 | --- | wontfix |
firefox63 | --- | wontfix |
firefox64 | --- | wontfix |
firefox65 | --- | wontfix |
firefox66 | --- | wontfix |
firefox67 | --- | wontfix |
firefox68 | --- | wontfix |
firefox69 | --- | wontfix |
firefox70 | --- | wontfix |
firefox71 | --- | fixed |
People
(Reporter: zarema.khalilova, Assigned: pehrsons)
References
Details
(Keywords: dev-doc-complete)
Attachments
(11 files, 4 obsolete files)
(deleted),
text/x-phabricator-request
|
Details | |
(deleted),
text/x-phabricator-request
|
Details | |
(deleted),
text/x-phabricator-request
|
Details | |
(deleted),
text/x-phabricator-request
|
Details | |
(deleted),
text/x-phabricator-request
|
Details | |
(deleted),
text/x-phabricator-request
|
Details | |
(deleted),
text/x-phabricator-request
|
Details | |
(deleted),
text/x-phabricator-request
|
Details | |
(deleted),
text/x-phabricator-request
|
Details | |
(deleted),
text/x-phabricator-request
|
Details | |
(deleted),
text/x-phabricator-request
|
Details |
Comment 1•6 years ago
|
||
Updated•6 years ago
|
Assignee | ||
Comment 2•6 years ago
|
||
Assignee | ||
Comment 4•6 years ago
|
||
Assignee | ||
Updated•6 years ago
|
Assignee | ||
Comment 5•6 years ago
|
||
Assignee | ||
Comment 6•6 years ago
|
||
Assignee | ||
Comment 7•6 years ago
|
||
This makes GetEncodedMetadata set metadata on the writer in a single call.
It also removes the ctor argument from the WebMWriter since it can now rely on
the single SetMetadata() instead.
To comply with the ContainerWriter::SetMetadata() docs,
WebMWriter::SetMetadata() will now also sanity check metadata.
Assignee | ||
Comment 8•6 years ago
|
||
We used to set the mime type based on what tracks were fed to the recorder,
which was spec incompliant. Now we set the mime type immediately in the ctor if
it's defaulted or supported, or throw otherwise.
Assignee | ||
Comment 9•6 years ago
|
||
This test relied on us choosing to record audio/ogg because of the only audio
track, which would fail and result in an error with ogg support disabled.
We now per spec select mime type synchronously on construction instead of after
detecting the stream's tracks - and so fall back to video/webm when the mime
type is defaulted. With this the test times out because we're recording fine.
When disabling also webm encoding we follow the spec's "note that this case is
essentially equivalent to leaving up to the UA the choice of container and
codecs on constructor", and choose some unknown mime type that is not supported
(none are), thus ending up throwing NotSupportedError.
Not much remains of this test with these changes, and what actually remains is
covered by other tests, which warrants removal.
Assignee | ||
Comment 10•6 years ago
|
||
With spec compliant mime type handling we no longer fire "error" on start for a
audio-only recording of a (currently) video-only MediaStream.
This patch adapts the test to more accurately name what we originally wanted to
test - that pause() after an error doesn't crash but throws. It does this by
triggering another kind of error, one that happens because we try to removed
the recorded track from the recorded stream. We still keep the behavior of
start()ing the recording before any supported tracks are available, because we
support that.
Assignee | ||
Comment 11•6 years ago
|
||
Assignee | ||
Comment 12•6 years ago
|
||
This moves the impl of PushBlobRunnable from a runnable to MozPromise, which
let's us more easily modularize it's parts (gather the blob, fire dataavailable)
to make individual code paths more explicit.
Assignee | ||
Comment 13•6 years ago
|
||
Assignee | ||
Comment 14•6 years ago
|
||
So this has hit a snag because while the spec is fairly clear (it's not straight forward, but you can figure out the intention of the author) Chrome is not following it. Since our old behavior is closer to Chrome's than the spec, we're now discussing updating the spec to follow closer to reality, and hopefully making it clearer in the process.
This work will block bug 1518105 as well. At least for now.
Updated•5 years ago
|
Comment 15•5 years ago
|
||
Comment on attachment 9039495 [details]
Bug 1014393 - Remove MediaRecorder::Session::PushBlobRunnable. r?bryce
Revision D17813 was moved to bug 1014393. Setting attachment 9039495 [details] to obsolete.
Comment 16•5 years ago
|
||
Comment on attachment 9039496 [details]
Bug 1512175 - Unify MediaRecorder session shutdown paths and fix event timing when stopping per spec. r?bryce
Revision D17814 was moved to bug 1014393. Setting attachment 9039496 [details] to obsolete.
Assignee | ||
Comment 17•5 years ago
|
||
This bug is currently blocked on the resolution of the spec issue at https://github.com/w3c/mediacapture-record/issues/170
Assignee | ||
Comment 19•5 years ago
|
||
This leaves out support for extending the mime type with the selected container
and codecs, and support in MediaEncoder for using a specific mime type.
Depends on D17806
Updated•5 years ago
|
Assignee | ||
Comment 20•5 years ago
|
||
Depends on D17812
Assignee | ||
Comment 21•5 years ago
|
||
We're immediately after explicitly stopping the recording anyway.
Depends on D46464
Assignee | ||
Comment 22•5 years ago
|
||
This to ensure that when the "start" event is fired, there is already some data
in the blob.
Depends on D46465
Updated•5 years ago
|
Updated•5 years ago
|
Updated•5 years ago
|
Assignee | ||
Comment 23•5 years ago
|
||
Updated•5 years ago
|
Assignee | ||
Comment 24•5 years ago
|
||
Depends on D46466
Assignee | ||
Comment 25•5 years ago
|
||
dev-doc-info |
This implements the mimeType handling of MediaRecorder per spec. Note that there were some recent spec changes to clarify the algorithms here.
Comment 26•5 years ago
|
||
Comment 29•5 years ago
|
||
bugherder |
https://hg.mozilla.org/mozilla-central/rev/b90cfb7ecee3
https://hg.mozilla.org/mozilla-central/rev/a76ec7f58d50
https://hg.mozilla.org/mozilla-central/rev/c08c0b553f15
https://hg.mozilla.org/mozilla-central/rev/3bc62d21ad37
https://hg.mozilla.org/mozilla-central/rev/d3c6648507db
https://hg.mozilla.org/mozilla-central/rev/dca395faee36
https://hg.mozilla.org/mozilla-central/rev/85af0c8641ab
https://hg.mozilla.org/mozilla-central/rev/b43a92f049c1
https://hg.mozilla.org/mozilla-central/rev/343e4bf9c1ed
https://hg.mozilla.org/mozilla-central/rev/d65b19aacfbd
https://hg.mozilla.org/mozilla-central/rev/8f67e6f39d7b
Assignee | ||
Updated•5 years ago
|
Updated•5 years ago
|
Comment 31•5 years ago
|
||
Documentation updates:
- https://wiki.developer.mozilla.org/en-US/docs/Web/API/MediaRecorder/mimeType has had some work done to clarify some points
Submitted BCD PR 5133 for this change.
Let me know if more is required!
Comment 32•5 years ago
|
||
How is it fixed if mediaRecorder.mimeType is still empty string on each stage of recording?
Demo is the same: https://codepen.io/zmoki/pen/WYBWJd?editors=0011
Comment 33•5 years ago
|
||
Quote from the documentation:
The mimeType read-only property returns the MIME media type that was specified when creating the MediaRecorder object, or, if none was specified, which was chosen by the browser.
mimeType should contain the type chosen by the browser, which isn't happening.
Assignee | ||
Comment 34•4 years ago
|
||
(In reply to homm86 from comment #33)
Quote from the documentation:
The mimeType read-only property returns the MIME media type that was specified when creating the MediaRecorder object, or, if none was specified, which was chosen by the browser.
mimeType should contain the type chosen by the browser, which isn't happening.
The spec says to set the mimeType attribute before firing "start" and set it to the empty string before firing "stop". You can consider it valid between those two events. Or look at the mimeType of one of the blobs that came out of the recorder.
Updated•4 years ago
|
Description
•