Этот материал сбивает с толку, и с уважением, вы запутались. Запись ведется не getUserMedia
, а RecordRTC
. Данные, которые вы хотите загрузить, являются содержимым BLOB-объекта, предоставленного вам recorder.getBlob()
. И этот Blob содержит двоичные данные; вы не сможете разобраться в его содержании, если не используете пакет типа ebml .
И обратите внимание, что .getBlob()
возвращает Обещание, поэтому вам нужно .then()
, чтобы узнать, когда ваш BLOB-объект готов.
Но вы близки. Вы хотите загрузить Blob. Несколько изменений, и вы готовы к go.
function stopRecordingCallback() {
recorder.getBlob()
/* getBlob completes normally */
.then (function(blob) {
const fd = new FormData()
fd.append('fname', 'test.webm')
fd.append('data', blob)
$.ajax({
type: 'POST',
url: './true.php',
data: fd,
processData: false,
contentType: false
})
.done(function(data) {
console.log(data)
})
/* getBlob's promise rejected */
.catch(console.err)
}
Я не отлаживал это, но это близко к тому, что я сделал.
Похоже, вы Возможно, вы пытаетесь настроить элемент <video>
для предварительного просмотра записанного видео. Если это правда, я предлагаю вам загрузить загрузку, а затем запустить предварительный просмотр.
Pro tip Ваш код для этого носителя WebRT C будет короче и намного проще для чтения, если вы начнете использовать async
/ await
вместо .then()
и обратные вызовы. Выяснить, async
/ await
- одно из лучших вложений времени, которое вы можете сделать.