我正从相机收到MJPEG Stream。当我用十六进制编辑器查看视频数据时,似乎它不包含任何流信息。我只看到一个接一个的原始JPEG,但没有关于帧速率的信息等。
MJPEG是否缺少任何元信息,或者它只与我正在使用的相机有关?如果没有关于流的信息,玩家怎么知道播放视频的速度有多快?
答案 0 :(得分:8)
缺少元数据是正常的。 IP摄像机通常只发送MJPEG,一个接一个的JPEG图像作为流。这是最基本的有效MJPEG文件。如果你要采取一堆jpeg,将它们拼凑成一个巨大的巨型文件,并将其提供给ffmpeg,它会将其视为有效的mjpeg格式文件。有些相机会添加一个额外的标题来包含音频数据,但不需要将其视为有效的动作jpeg。
当最初发送流时,许多摄像机将在HTTP标头中包含类似X-Framerate的标头,或者您可以将其设置为摄像机配置的一部分。但是,当摄像机仅发送jpeg时,无法从流本身告知帧速率是什么。
答案 1 :(得分:4)
MJPEG是否缺少任何元信息,或者它只与我正在使用的相机有关?如果没有关于流的信息,玩家怎么知道播放视频的速度有多快?
要添加已经回答的内容,IP摄像机是一个实时视频源,帧通常会在从摄像机到达时立即显示。罕见的IP摄像机附加额外的每帧信息除了名称大小(有些甚至不做!他们只发送数据和分隔符)。还有一些会附加时间戳和额外的数据,如运动检测状态。
大多数IP摄像机不能保持恒定的帧速率。也就是说,帧速率可能会有所不同,尤其是在低光照条件下降低。当将数据多路复用到容器格式时,接收方有责任附加每帧时间戳。时间戳可以从元数据(很少存在)中恢复,或者 - 更频繁地 - 接收器标记具有本地接收时间的帧。
这是播放器以适当的速率播放视频序列的方式。实时馈送通常以“尽快显示收到的帧”为基础。
答案 2 :(得分:0)
通常,MJPEG数据在流媒体包装器(如AVI或MOV)(快速时间)内发送。包装器格式将包含帧速率和有关可选音频数据的信息。