MJPEG流信息

7

我从摄像头接收到了一个MJPEG流。当我使用十六进制编辑器查看视频数据时,似乎没有包含任何流信息。我只看到一个原始的JPEG紧跟着另一个,但没有关于帧速率等的任何信息。

缺乏任何元信息对于MJPEG来说是正常的吗?还是只与我使用的相机有关?如果没有关于流的信息,播放器如何知道以多快的速度播放视频?

3个回答

10

缺少元数据是正常的。IP摄像机通常将MJPEG作为一个流发送,每个图像都作为一个JPEG文件发送。这是最基本的有效MJPEG文件。如果你将一堆JPEG文件连接起来成为一个大文件,并将其输入给ffmpeg,它会将其视为有效的mjpeg格式文件。一些摄像机会添加额外的头部以包含音频数据,但不需要被视为有效的动态JPEG。

许多摄像机在流最初发送时将在HTTP头中包含诸如X-Framerate之类的头文件,或者您可以将其设置为摄像机配置的一部分。然而,当摄像机仅发送JPEG文件时,无法从流本身中了解帧速率。


6
缺少元信息对于MJPEG来说是正常的吗?还是只与我正在使用的相机有关?如果流中没有任何信息,播放器如何知道以多快的速度播放视频?
补充一下已经回答的问题,IP摄像头是实时视频源,帧通常在从相机接收到后立即呈现。很少有IP摄像头除了 fame size 之外附加每帧额外信息(有些甚至不会发送这个!它们只发送数据和分隔符)。仍然有一些会附加时间戳和额外数据,例如运动检测状态。
大多数IP摄像头不具备恒定的帧率。也就是说,帧率可能会变化,尤其是在低光条件下。接收端的责任是,在将数据复合成容器格式时为每一帧附加时间戳。时间戳可以从元数据中恢复(这很少存在),或者更常见的是,接收方使用本地接收时间为帧打时间戳。
这是播放器以适当速率播放视频序列的方式。实时视频通常基于“尽快显示接收到的帧”的原则呈现。

0
通常,MJPEG数据会被发送在流媒体封装器中,例如AVI或MOV(QuickTime)。封装格式将包含帧率和可选音频数据的信息。

你是否检查了JPEG流中的元数据(例如APPxx标记)以获取信息?发一个样本帧,我会分析它。 - BitBank

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接