live555在发送之前是否解析NAL单元

Does live555 parse NAL units before they are sent out

我正在尝试为我的 live555 设置添加一些基本加密。以下是我将 h264 NAL 单元发送给我的客户的基本方式。

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 单元发送之前是否解析它们?如果是这样,我如何让它不解析这些数据包?

我想通了! Live555 的 rtp 实现要求所有传递给它的数据都被正确格式化。可以在此处阅读格式化 h264 数据的标准:https://www.rfc-editor.org/rfc/rfc3984.

但对此的 TLDR 是简单地不加密 NAL 有效负载数据的第一个字节(在删除前导 0001 之后)并以纯文本形式发送。这将使系统发送加密的h264数据就好了。