Как отобразить видео из буфера, получающего данные с сервера nodejs - PullRequest
0 голосов
/ 21 февраля 2019

Это данные буфера, которые я получаю на своем сервере со своей веб-камеры, используя webRtc и socket.io

[ <Buffer 1a 45 df a3 9f 42 86 81 01 42 f7 81 01 42 f2 81 04 42 f3 81 08 42 82 84 77 65 62 6d 42 87 81 04 42 85 81 02 18 53 80 67 01 ff ff ff ff ff ff ff 15 49 ... 53876 more bytes> ]
[ <Buffer 1a 45 df a3 9f 42 86 81 01 42 f7 81 01 42 f2 81 04 42 f3 81 08 42 82 84 77 65 62 6d 42 87 81 04 42 85 81 02 18 53 80 67 01 ff ff ff ff ff ff ff 15 49 ... 53876 more bytes>,
  <Buffer 41 ab 81 03 c0 80 fb 83 84 97 85 2d c7 d9 a6 12 c0 c8 c0 a4 bf bb 8b 6b 94 f1 78 40 a5 e3 29 e1 42 de f0 9a 4d 94 bd 3c c8 ae 9c 07 b2 c2 65 e1 22 ea ... 196152 more bytes> ]

Теперь я просто хочу отправить эти данные на свою HTML-страницу и воспроизвестивидео с веб-камеры.

Я использую angular4 и мой код не работает, мой код

  video: HTMLVideoElement;

  constructor(private _chatService: ChatService) {

    this.video = document.querySelector('video');
    const myMediaSource = new MediaSource();
     this.video.src = URL.createObjectURL(myMediaSource);

    const videoSourceBuffer = myMediaSource
      .addSourceBuffer('video/mp4; codecs="avc1.64001e"');

    this._chatService.recieveData()
      .subscribe(data => {
        console.log(data); // image is shown below
        videoSourceBuffer.appendBuffer(data);
      });

  }

Но он выдает ошибку

Аргументтипа '{}' нельзя назначить параметру типа 'BufferSource'.

Когда я пытаюсь утешить данные, я получаю данные в своем интерфейсе как

enter image description here

Кто-то, пожалуйста, помогите мне с этим.

Заранее спасибо.

1 Ответ

0 голосов
/ 22 февраля 2019

Существует модуль узла с именем NodeMediaServer, который может работать.Вот как вы бы это делали с помощью rtmp:

const { NodeMediaServer } = require("node-media-server");

const config = {
  rtmp: {
    port: 1935,
    chunk_size: 60000,
    gop_cache: true,
    ping: 60,
    ping_timeout: 30
  },
  http: {
    port: 8000,
    allow_origin: "*"
  }
};

var nms = new NodeMediaServer(config);
nms.run();

И это то, что вы использовали бы на веб-интерфейсе, чтобы взять его и воспроизвести с помощью flv:

buildPlayer() {
    if (this.player || !this.props.stream) {
      return;
    }
    const { id } = this.props.match.params;
    this.player = flv.createPlayer({
      type: "flv",
      url: `http://localhost:8000/live/${id}.flv`
    });
    this.player.attachMediaElement(this.videoRef.current);
    this.player.load();
  }

Не уверенесли это поможет, но стоит попробовать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...