Фундаментальная проблема здесь в том, что вы не можете передавать данные, поступающие из MediaRecorder
, и ожидать, что другой конец их воспроизведет; это не полное видео. Он будет работать только в том случае, если принимающая сторона сможет получить байтов инициализации , что, я сомневаюсь, будет работать в реальном сценарии.
Что вы можете сделать, это создать интервал, который будет запускать / останавливать MediaRecorder
, например, каждую 1 секунду, чтобы создать 1-секундные фрагменты видео, которые вы можете передавать по проводам (лучше всего я знаю и проверял это веб-сокеты )
Я настоятельно рекомендую не использовать MediaRecorder
, если вы делаете потоковое видео в реальном времени, которое не было указано в вашем сообщении, но если да, лучше создать холст для копирования потока и делать некоторые вещи requestAnimationFrame
, которые могут захватывать ваш видеопоток во что-то, что вы можете передавать.
Взгляните на эту демонстрацию для справки: https://github.com/cyberquarks/quarkus-websockets-streamer/blob/master/src/main/resources/META-INF/resources/index.html
MediaRecorder
в моем опыте реакция задерживается, что обычно добавляет довольно большую задержку в видео, не говоря уже о задержке, которую сокет также вводит.
Как правило, другие разработчики рекомендуют использовать маршрут WebRT C, однако, исходя из моего опыта, WebRT C обычно не работает быстрее.