![](/img/trans.png)
[英]Media Foundation - How to change frame-size in MFT (Media Foundation Transform)
[英]How to change Media Foundation Transform output frame(video) size?
我正在编写一个变换,并且想要更改帧和视频的输出大小。 我检查了样本并找出了函数调用的顺序:
SetInputType
SetOutputType
GetInputCurrentType
SetInputType
UpdateFormatInfo
GetOutputCurrentType
SetOutputType
GetOutputStreamInfo
SetProperties
ProcessOutput (THROW NEED INPUT)
ProcessInput
ProcessOutput
ProcessOutput (THROW
....
.... repeat until done
我需要在哪一步中修改输出大小以及如何修改?
示例:输入640x480视频,输出480x480视频,不进行拉伸。
在MFT中,有2个步骤可以“更改输出大小”。
1)您需要修改SetOutputType和GetOutputAvailableType例程:
2)您需要修改ProcessInput / ProcessOutput样品的处理,以实际做调整大小。 仅更改媒体类型不会执行任何自动调整大小的操作。 更改尺寸的方式取决于视频数据的实际格式(您未提供),以及如何调整大小的详细信息。 您是否只想剪掉多余的线? 从顶部还是底部? 您还需要支持裁切宽度吗?
我有一个c ++类,该类处理创建MFT的所有开销,以及许多示例MFT,这些示例MFT显示了如何使用该类, 网址为http://www.LimeGreenSocks.com/MFT 。 在撰写本文时,它仍处于测试阶段,但应该可以给您一些想法。
您尝试做的最接近的样本可能是“旋转”。 旋转时,800x600视频可以变成600x800视频。 旋转甚至允许在流传输时更改旋转(请参见异步MFT下的格式更改 )。 c ++旋转mft的注释很长,大约为350行。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.