【发布时间】:2014-09-26 11:23:47
【问题描述】:
我正在使用NVENC SDK 编码 OpenGL 帧并通过 RTSP 流式传输它们。 NVENC 以几个 NAL 单元的形式给我编码数据。为了使用 Live555 流式传输它们,我需要找到 start code (0x00 0x00 0x01) 并将其删除。我想避免这个操作。
NVENC 有一个 sliceOffset 属性,我可以参考,但它表示切片,而不是 NAL 单元。它仅指向 SPS 和 PPS 标头的结尾,实际数据从这里开始。我知道切片不等于 NAL(如果我错了,请纠正我)。我已经对编码数据强制使用单个切片。
以下是否有可能?
- 强制 NVENC 对单个 NAL 单元进行编码
- 强制 NVENC 指示每个编码数据块中 NAL 单元的位置
- 让 Live555 接受流式传输的序列参数
【问题讨论】:
-
我正在尝试做你已经实现的,使用 NVEnc 发送 OpenGL 帧。您使用的是 CUDA 互操作,还是有更好的方法?感谢您的任何指点!
-
最好的方法是 CUDA 互操作,但我还没有这样做。我只是渲染到 FBO,将数据传递到 RAM,然后再传递到 NVENC 表面。在 CUDA 示例中应该有关于如何直接从 FBO 发送它们的资源。
-
谢谢@chuckleplant,我去看看。到目前为止,我唯一拥有的就是在奥斯陆大学完成的这篇非常有趣的论文:heim.ifi.uio.no/paalh/students/MartinAlexanderWilhelmsen.pdf
标签: h.264 nvidia rtsp video-encoding live555