gpt4 book ai didi

c# - 使用 C# 和 .NET 2.0 从 mp4 中逐帧获取数据

转载 作者:太空宇宙 更新时间:2023-11-03 12:55:53 25 4
gpt4 key购买 nike

我目前正在使用 Unity 3D 进行开发,但我的背景是 Apple 开发。在 iOS/OSX 开发中,我可以使用 AVFoundation 加载 mp4 并在它以 BGRA 格式播放时逐帧获取数据。

我想知道这对于 .NET(Unity 使用 .NET 2.0)的等价物是什么?

我知道可以从 unity 调用 Objective-C++ 文件中的函数,但我需要一种在任何平台上执行此操作的方法,而不仅仅是 iOS。

最佳答案

据我所知,在 Unity 中在移动设备上 没有内置的方法来访问视频帧数据。在移动设备上使用 Unity 播放视频简直令人难过。他们开箱即用的是this这基本上只适用于全屏视频,例如剪辑场景。

如果你想做更复杂的事情,比如将视频传输到纹理,你有两个选择:

注意: Assets 商店中有更多可用资源,但我们使用的是这两个。

最佳选择?..

简单的电影纹理

我们为我们的 VR 应用程序(Gear VR 和 Cardboard)使用 Easy Movie Texture。我们在 S6 上解码了多达 4k 的视频。

对于立体视频,我们使用插件附带的组件 VideoCopyTexture,它将纹理数据从视频复制到 Material 中(以避免重复解码和渲染)。它引用返回 Unity Texture2DMediaPlayerCtrl.GetVideoTexture() ,因此您应该可以从那里访问所需的所有数据!

不是很好的选择,但我们有点用到它,所以我想无论如何我都会提到它......

手机电影质感

移动电影纹理仅适用于 ogg 编码视频。 我认为它不能让您访问原始帧数据,我建议您直接联系开发人员或查看文档。

但这可以被“黑客攻击”。您可以使用渲染纹理,一个单独的相机,它看着一个平面/四边形,上面播放着视频。然后获取该纹理的位图数据。这并不理想,但应该可以解决问题。

长话短说,我在 Unity 中使用类似的渲染到纹理机制将视频数据通过管道传输到 Scaleform,并且没有发现任何性能损失。 Mobile Movie Texture 并不是最快的开始,在我们的例子中甚至可以在某些设备上的软件中解码。但它无处不在。所以我们只将它用于小视频。

干杯,

J.

关于c# - 使用 C# 和 .NET 2.0 从 mp4 中逐帧获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33855005/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com