X264 Nalus序列化和处理
x264 NALUs serialization and handling
我有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传递给您的渲染器。
- 如何在C++中序列化结构数据
- 序列化,没有库的整数,得到奇怪的结果
- 如何知道QDataStream不能反序列化某些内容
- 如何使用Python从C++中读取谷物序列化数据
- 如何使用boost::具有嵌套结构和最小代码更改的序列化
- 带有Protobuf序列化的C++Hazelcast:字符串不是UTF-8格式的
- 自定义对象的dlib序列化在gcc中失败
- C++boost序列化多态性问题
- 增强基于 XML class_id的反序列化
- 提升反序列化对象具有 nan 或 -nan 值
- 在 cpp 中的平面缓冲区中序列化对象
- 每次进行继承时都需要提升::序列化::base_object吗?
- 在处理网络、二进制数据和序列化时应使用流或容器
- 如何使用自定义对象的序列化在 c++ 中编写自定义二进制文件处理程序
- 如何将 boost::beast 中的序列化数据转换为字符串,以便我可以以 FIFO 方式处理它?
- 我在处理序列化时是否应该硬码变量大小?C
- X264 Nalus序列化和处理
- 如何处理类结构的变化,并与使用 boost 序列化的数据/对象向后兼容
- 处理可能的空指针的类的增强序列化
- 处理从boost序列化中删除的变量