我编写了一个应用程序,用于通过TCP(没有数据包丢失)从硬件摄像头接收RTP数据包,并将其H264数据包转储到文件中,以便我可以使用MPlayer或VLC播放视频。这已经有效了,我几乎完成了here所描述的步骤。播放视频的命令为mplayer -fps 24 -demuxer h264es foobar.h264
和vlc foobar.h264
。
当我播放视频时,问题就出现了。摄像机频繁更改FPS,因为在写入H264文件时丢弃RTP信息,每帧的时间戳丢失。我的问题是:我需要做些什么来修复帧频?我应该创建空/空白P帧(如果可能的话)?如果是这样,我该怎么做?
任何使用Linux兼容工具或库(如ffmpeg,libx264,libavcodec)使用shell,C / C ++或Python的解决方案都非常受欢迎。
PS:我几乎没有视频编码和RTP的经验。
答案 0 :(得分:5)
原始h.264流中没有计时信息。需要将流放入MP4或FLV等容器中,您可以使用PTS / DTS标记每个帧。