В настоящее время я получаю фрагменты из потока видео, которое я отправляю по DataChannel партнеру, который затем реконструирует видео на другом конце.
У меня эта часть работает нормально, но я хотел бы добавить, какой кусок # был получен, чтобы не имело значения, если они поступят в другом порядке, чем предполагалось.
Первоначально я думал, что добавление параметра chunkId
будет работать, но когда я делаю .data.chunkId
на стороне получателя, он не определен.
Затем я попытался преобразовать ArrayBuffer в строку вместе с chunkId
, используя JSON.stringify({ "chunkId": chunkId, "data": chunk })
, но это вызывает проблемы, когда я анализирую его на другом конце (Unexpected end of JSON input
и Unexpected token , in JSON at position #
).
DataChannels также принимает большие двоичные объекты, поэтому я решил попробовать это, но отправитель использует node.js, который, по-видимому, не может этого сделать. Я так и не понял, как это обойти.
Последнее, что я пробовал, это просто добавить chunkId
в начало/конец самого ArrayBuffer, но когда я пытаюсь создать новый массив, я получаю сообщение об ошибке source is too large
при попытке добавить сам фрагмент.
Каков правильный способ достижения этого?