Вы можете создать MediaStream из AudioElement, воспроизводящего мультимедиа из blob: // URI, используя метод MediaElement. captureStream()
, но это приведет к нарушению цели, поскольку вам все равно придется воспроизводить это media в исходном элементе .
Вы также можете прочитать свой Blob как ArrayBuffer, затем декодировать аудиоданные этого мультимедиа с помощью AudioContext и его метода decodeAudioData()
, а затем передать результирующий AudioBuffer в AudioBufferSourceNode и, наконец, подключение этого последнего к MediaStreamSourceNode.
Но ... ошибки, которые вы описываете, скорее всего, не вызваны вашим использованием blob: // URI, , что в настоящее время действительно является лучшим способом воспроизведения аудиофайлов .
Надеюсь, что когда-нибудь браузеры будут полностью реализовывать спецификации, и мы сможем передавать другие объекты как srcObject
, и, возможно, даже увижу, как это распространится на другие элементы , но я перестал задерживать дыхание на несколько лет go ...
Так что да, против Можно использовать blob: // URI , а файл сообщает команде Chrome об их ошибках.
Ps: если вы можете, установка src
непосредственно на URL-адрес, который вы извлекаете, используя AJAX, на самом деле лучший вариант.