我一直在疯狂搜索,无法找到mjpeg的任何文件格式规范。
标题应该是什么样的? 我只是在标题后附加一系列jpegs吗?
我知道它通常位于.avi容器中,是否有可能存在于其中的编解码器的标准化格式?
目标是在动作脚本3中制作它,但其他语言可以很好地移植。我试过看ffmpeg和mplayer但c不是我强大的一面(还)。
任何建议都将不胜感激!
答案 0 :(得分:11)
There isn't an official standard
实际上,在最简单的形式中,mjpeg只是jpeg文件的串联,在同一个文件中一个接一个。
ffmpeg使用-f mjpeg
或-vcodec mjpeg
开关支持此功能。
解码多个图像的JPEG解码器应记住并使用相同的jpeg表用于后续图像(如果这些图像无法提供替换)。 jpeg标准将其描述为“缩写的jpeg流”,libjpeg支持此功能。
所以mjpeg可能包含一个完整的jpeg图像,然后是后续的SOI..EOI块,它们没有指定那些与前一帧重复的标题。
答案 1 :(得分:9)
显然没有单一的说明。来自wikipedia:
批评
与国际标准中指定的视频格式不同 例如MPEG-2和格式 在JPEG静态图片中指定 编码标准,没有文件 它定义了一个确切的格式 这被普遍认为是一种 完整的“运动规范” JPEG“用于所有上下文。这个 提出兼容性问题 来自不同的文件输出 厂家。
答案 2 :(得分:3)
IETF的标准定义为RFC 2435。我不知道哪些编解码器会支持这个,但这似乎是数据规范。
答案 3 :(得分:2)
HTTP上的MJPEG至少有一个非常标准的实现。它作为多部分HTTP响应返回。
维基百科的文章讨论了确切的机制:
答案 4 :(得分:1)
没有单一的官方规范。但是有些公司制定了自己的规范:
QuickTime文件格式规范(https://developer.apple.com/library/content/documentation/QuickTime/QTFF/QTFFPreface/qtffPreface.html)
Motion JPEG格式,QuickTime M-JPEG规范(http://staticky.com/dl/ftp.apple.com/developer/Development_Kits/QuickTime/Programming_Stuff/Documentation/QuickTime-JPEGSpec.pdf)
Microsoft OpenDML AVI文件格式扩展名(http://www.morgan-multimedia.com/download/odmlff2.pdf)
答案 5 :(得分:0)
在Motion JPEG中,数字视频序列的每个视频帧或隔行扫描场都作为JPEG图像单独压缩。因此,存储在It's Header中的每个帧的规范(例如品质因数)。换句话说,你的问题简化为:“如何读取视频中帧的标题?”
也许你可以使用Phil Sallee的JPEG Toolbax。请注意,它具有读取/写入jpeg图像的功能,还有一些用于显示DCT矩阵,品质因数,霍夫曼编码表等。
如果您发现如何在视频中使用此功能和/或如何阅读MJPEG视频的规格,请与我们分享
答案 6 :(得分:0)
经过多天的互联网搜索,我找不到完整的文档,也找不到文件协议的二进制示例。
对于迄今为止我发现的信息量最大的资源,请参阅 http://www.digitalpreservation.gov/formats/fdd/fdd000127.shtml (Motion JPEG 2000文件格式 - 最后有许多“有用的参考URL”,包括“Motion JPEG2000概述”,它至少在某种程度上回答了这个问题)。
你会发现Apple MOV PDF比比皆是,显然包含了Motion JPEG,但需要数周时间才能解读。我只能向其他人建议上述网址是进一步研究的良好起点。
答案 7 :(得分:0)
您可以在网络上的其他位置找到此文档,但我不知道哪一个是权威来源: http://www.cajunbot.com/wiki/images/7/71/USB_Video_Payload_MJPEG_1.1.pdf