Live555 анализирует блоки NAL перед отправкой - PullRequest
0 голосов
/ 26 февраля 2019

Я пытаюсь добавить немного базового шифрования к моей настройке live555.Ниже приведен основной способ отправки моих NAL-блоков h264 моему клиенту.

uint8_t* send_buffer = new uint8_t[15000];
copy(nal.p_payload + trancate, nal.p_payload + trancate + fFrameSize, send_buffer);
memmove(fTo,send_buffer,fFrameSize);
FramedSource::afterGetting(this);

Вот код, который я использую для отправки данных клиенту с шифрованием:

uint8_t* send_buffer = new uint8_t[15000];
crypto_stream_chacha20_xor(send_buffer, nal.p_payload + trancate, fFrameSize,
    nonce, key);
memmove(fTo,send_buffer,fFrameSize);
FramedSource::afterGetting(this);

Второйбит кода не распространяет никаких ошибок на стороне сервера, но клиентская часть просто ничего не получает.Таким образом, мой вопрос заключается в том, анализирует ли live555 блоки NAL до их отправки?И если да, то как мне заставить его не анализировать эти пакеты?

1 Ответ

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

Я понял это!Реализация rtp в Live555 требует, чтобы все переданные ему данные были правильно отформатированы.Стандарты форматирования данных h264 можно прочитать здесь: https://tools.ietf.org/html/rfc3984.

Но TLDR к этому - просто не шифровать первый байт данных полезной нагрузки NAL (после того, как начальный 0001 вынут) и отправить егоболее простым текстом.Это заставит систему отправлять данные h264 в зашифрованном виде.

...