live555在发送NAL单元之前是否对其进行解析

时间:2019-02-25 23:28:25

标签: c++ live555

我正在尝试为我的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单元之前解析它们?如果是这样,我如何不解析那些数据包?

1 个答案:

答案 0 :(得分:0)

我知道了! Live555的rtp实现要求正确传递给它的所有数据格式。可以在此处阅读格式化h264数据的标准:https://tools.ietf.org/html/rfc3984

但是TLDR只是不对NAL有效载荷数据的第一个字节进行加密(在取出前导0001之后),并将其以纯文本格式发送。这将使系统发送加密的h264数据就可以了。