X264 Nalus序列化和处理

x264 NALUs serialization and handling

本文关键字:处理 序列化 Nalus X264      更新时间:2023-10-16

我有x264编码器,从原始视频流中产生nalus。我需要通过网络发送那些纳鲁斯。最好的方法是什么?

编码器被插入直接肖像图,这是一个变换过滤器,下游我拥有处理网络的过滤器。我可以通过直接转换过滤器创建的纳卢斯传递到网络"渲染"过滤器?它会创建一些内存问题吗?

我想知道如何在x264内部处理为纳卢斯分配的记忆 - 谁负责释放它?我也想知道我是否可以手动将nalu序列序列化,然后以相同的方式进行重建?

我需要通过网络发送那些nalus。最好的方法是什么?

"最好"需要澄清:最容易做到,在兼容性方面最好,与特定对应的实施等兼容。

我可以通过nalus,通过转换过滤器直接创建到网络"渲染"。筛选?它会创建一些内存问题吗?

没有库存网络渲染器,您应该阅读有关将要使用特定渲染器的方式。

我想知道如何在x264内部处理为纳卢斯分配的记忆 - 谁负责释放它?

X264管理填充的缓冲区,x264_encoder_encode返回您在这些缓冲区上的引用,而您无需免费数据,只需确保及时复制它,因为它将与下一个呼叫无效。之后,不要忘记x264_encoder_close - 它将在内部释放所有资源。

我也想知道我是否可以手动将nalu序列化,然后以相同的方式进行重建?

是的,您可以做到。如果您的网络对过滤器可以在其内部连接上重现相同的流进行网络内容,那么它将效果很好。与H.264的互操作性有关的最佳网络协议是RTP。但是,与简单接受/发送/接收/复制步骤相比,这是非常复杂的。

  • RTP:实时应用程序的传输协议
  • H.264视频的RTP有效载荷格式

将NALU发送到网络的最佳方法是通过RTP流。查看RFC 6184,以获取有关H.264的RTP包分组化的详细信息。我认为,只要您的媒体缓冲区足够大,可以安全地将Nalu传递给您的渲染器。