我正在尝试为我的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单元之前解析它们?如果是这样,我如何不解析那些数据包?
答案 0 :(得分:0)
我知道了! Live555的rtp实现要求正确传递给它的所有数据格式。可以在此处阅读格式化h264数据的标准:https://tools.ietf.org/html/rfc3984。
但是TLDR只是不对NAL有效载荷数据的第一个字节进行加密(在取出前导0001之后),并将其以纯文本格式发送。这将使系统发送加密的h264数据就可以了。