6

我正在尝试充分了解 H.264、RTP、RTSP 和封装文件格式来开发视频录制应用程序。

具体来说,我应该阅读什么来理解这个问题?

我希望能够回答以下问题:

  • 我可以将 H.264 数据包或 NAL(根据 RFC 6184)保存到文件中吗?
  • 我可以将单个有效负载保存为文件吗?
  • 我可以简单地通过连接它们来加入 RTP 有效负载吗?
  • 在 MP4 容器中保存几秒钟的 H.264 视频需要什么转换。
  • 以后必须做什么才能加入这些 MP4 文件,或者任意拆分它们,或者将它们作为新的 RTSP 演示文稿提供?

我希望能够在相当低的层次上回答这些问题,这样我就可以实现执行某些过程的软件(捕获 RTP 流、重播加入 MP4)。

背景

目标是将来自网络摄像机的视频记录到磁盘上。摄像机有一个 RTSP 服务器,它提供 H.264 编码流,它通过 RTP 发送到播放器。我已经使用 VLC 成功播放了流,但想自定义流程。

4

2 回答 2

5

根据 H.264 规范,“原始”视频流是 NAL 单元的序列。无论是在 RTSP 上,还是在 MP4 文件上,您都“按原样”拥有此流。

在 RTSP 连接上,您通常会收到分段的 NAL 单元,您需要将它们拆包(不,您不能简单地连接):

MP4 文件是一个容器格式的文件,并且有自己的结构(框)。因此,您不能简单地将 NAL 流式传输到此类文件中,而必须执行所谓的多路复用。

于 2013-06-21T07:47:45.220 回答
0

只需安装 rtmpdump 以及 rtmpsrv 和 rtmpsuck ...

这将完成所有工作

在一个终端打开 rtmpsrv 并在另一个打开 rtmpdump -r "RTMP URL"

这会将流保存在 mystream.flv

于 2013-06-21T07:32:15.200 回答