如何在不丢失时间信息的情况下将H264 / RTP流转储到文件中?

时间:2014-01-31 10:40:34

标签: ffmpeg h.264 rtp x264

我编写了一个应用程序,用于通过TCP(没有数据包丢失)从硬件摄像头接收RTP数据包,并将其H264数据包转储到文件中,以便我可以使用MPlayer或VLC播放视频。这已经有效了,我几乎完成了here所描述的步骤。播放视频的命令为mplayer -fps 24 -demuxer h264es foobar.h264vlc foobar.h264

当我播放视频时,问题就出现了。摄像机频繁更改FPS,因为在写入H264文件时丢弃RTP信息,每帧的时间戳丢失。我的问题是:我需要做些什么来修复帧频?我应该创建空/空白P帧(如果可能的话)?如果是这样,我该怎么做?

任何使用Linux兼容工具或库(如ffmpeg,libx264,libavcodec)使用shell,C / C ++或Python的解决方案都非常受欢迎。

PS:我几乎没有视频编码和RTP的经验。

1 个答案:

答案 0 :(得分:5)

原始h.264流中没有计时信息。需要将流放入MP4或FLV等容器中,您可以使用PTS / DTS标记每个帧。