使用C#/ C ++从iPhone电影获取矩阵(CGAffineTransform)信息

时间:2011-09-07 22:07:35

标签: c# iphone c++ ios quicktime

当iPhone录制视频时,它会将摄像机的数据直接放到磁盘上。告诉玩家如何重定向视频的是变换矩阵。它是一个数学结构,用于改变X,Y空间中像素的位置。

在iPhone和Macintosh中,我可以向视频询问它的变换是什么,然后我回来了一个带有b c d tx和ty的CGAffineTransform。 Apple描述了Transform Matrix here

通过这些信息,我可以确定视频布局应该是什么,并确定是否期望在显示之前旋转。

我可以在osx和ios环境中轻松获取此信息。我试图确定一种方法来获取与Windows相同的矩阵信息。首选C#但是如果我必须使用C ++那么就这样吧。 Active X解决方案完全不受欢迎,我希望用于Windows的Quicktime SDK有一些用处。否则,苹果公司为此做了什么?

如果有人知道如何从视频或任何地方获取变换矩阵,请指出正确的方向。

1 个答案:

答案 0 :(得分:2)

看起来CGAffineTransform需要直接从文件中拉出来。我使用了Quicktime文件格式规范pdf来了解文件以及在哪里获得CGAffineMatrix

这是指向包含Matrix数据的页面的链接

Quicktime File Format Specification Matrix Info

从这个片段可以看出,矩阵在Movie头部原子中。尊重'mvhd'类型。

总长度为36个字节,在'mvhd'原子类型名后总共为36个字节。

考虑到帧和轨道的文件格式规范,Matrix可以在整个视频播放过程中改变。但根据我的经验,这种方法不适用于从iphone输出的视频。

我想在不久的将来某个时候需要从每个帧中抓取矩阵,这可能是FFMpeg或其他视频格式应用程序可以在其帧抓取器和视频转换器中工作的东西。但由于我目前没有使用此矩阵信息的ffmpeg版本,我将创建一个简单的Movie header grabber,它将拉出矩阵并允许我相应地调整我的ffmpeg命令行参数,允许我适当地翻译我的视频..

如果我想出一个更好的主意,我会尝试将这篇文章包含在这些知识中。

Clip from the Quicktime File format

关于此答案之旅的旁注

对于那些因为你不知道我在谈论什么而弃用这个问题的人。要求澄清可能已经足够了。进入和低调,因为你不理解或不知道答案既不具有建设性,也不公平。这是一个非常具体的问题,这个答案不仅仅对我自己有帮助。

我相信有助于传播各种各样的知识以及那些认为对你有帮助的人,因为你对如何提供帮助没有任何线索。我希望这能让您更好地理解人们希望解决的问题。仅仅因为你不知道问题是什么并不意味着你应该对此嗤之以鼻,当然并不意味着你应该打折那些寻找你无法提供的答案的人。

我很高兴我能回答我的问题,并且肯定会对我给出的答案进一步批评。也许这个答案会引发更多关于这个问题的问题,我将能够学习并为将来有关它的讨论做出贡献

感谢StackOverflow恢复我的问题所以我可以适当地回答它。