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

Fer*_*ira 1 ffmpeg rtp h.264 x264

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

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

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

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

sza*_*ary 5

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