Так что, если я получу такой поток с веб-камеры, запишите и воспроизведите его на лету ...
<script>
const constraints = { video: true, audio:false };
const video1 = document.querySelector('.real1');
const video2 = document.querySelector('.real2');
var mediaSource = new MediaSource();
video2.src = window.URL.createObjectURL(mediaSource);
var sourceBuffer;
mediaSource.addEventListener('sourceopen', function () {
sourceBuffer = mediaSource.addSourceBuffer('video/webm; codecs=vp8');
console.log(sourceBuffer);
})
function handleSuccess(stream) {
video1.srcObject = stream;
var mediaRecorder = new MediaRecorder(stream, { mimeType: "video/webm; codecs=vp8" });
console.log(mediaRecorder.mimeType)
mediaRecorder.ondataavailable = function (e) {
var reader = new FileReader();
reader.onload = function (e) {
sourceBuffer.appendBuffer(new Uint8Array(e.target.result));
}
reader.readAsArrayBuffer(e.data);
if (video2.paused) {
video2.play(0); // Start playing after 1st chunk is appended.
}
}
mediaRecorder.start(20);
}
function handleError(error) {
console.error('Reeeejected!', error);
}
navigator.mediaDevices.getUserMedia(constraints).
then(handleSuccess).catch(handleError);
</script>
Это работает без проблем. Если я заменяю локальный поток удаленным потоком, тот же код, только полученный через webRT C, я вижу первый кадр и больше ничего ... Без ошибок ... jsut один кадр.
chrome: // media-internals / from player
render_id: 4
player_id: 4
origin_url: http://myurl/
kFrameUrl: http://myurl/index.html
kFrameTitle:
url: blob:http://myurl/23baa428-df7a-4d95-8625-f442f9fab5bc
info: (Log limit reached. Further similar entries may be suppressed): Estimating WebM block duration=63ms for the last (Simple)Block in the Cluster for this Track (PTS=0ms). Use BlockGroups with BlockDurations at the end of each Cluster to avoid estimation.
pipeline_state: kSuspended
kVideoTracks: [object Object]
kIsVideoDecryptingDemuxerStream: false
kVideoDecoderName: VpxVideoDecoder
kIsPlatformVideoDecoder: false
duration: unknown
height: 240
width: 320
kResolution: 320x240
event: SUSPENDED
Код сверху: https://jsfiddle.net/pkj4sa1n/ Скрипка не работает в chrome из-за ограничений iframe для ВЭБ-камера?! Скопируйте и вставьте приведенный выше код в файл html и откройте его или используйте firefox.
спасибо за помощь или идеи