从 VideoPlayer 源 URL 访问维度 (width/height)

Accessing dimensions (width/height) from a VideoPlayer source URL

我正在处理一个 Unity 项目,该项目要求我下载一个视频文件(mp4 格式)并使用 VideoPlayer 组件播放它。因为该文件是在运行时下载的,所以我实际上必须通过 url 将其 "stream" 到其下载位置,而不是将其作为 VideoClip 加载。

为了准确调整视频将播放到的目标 RenderTexture 和 GameObject 的大小,我需要视频文件本身的尺寸。因为它不是我不能使用的视频剪辑:

VideoClip clip = videoPlayer.clip;
float videoWidth = clip.width;
float videoHeight = clip.height;

因为我使用的是源 URL 而不是 VideoClip,所以这 return 无效。

我可以通过某种方式直接从文件中获取视频尺寸吗?

您可以从 VideoPlayer 构造的 Texture 中检索这些信息。

获取视频播放器

VideoPlayer videoPlayer = GetComponent<VideoPlayer>();

获取纹理视频播放器

Texture vidTex = videoPlayer.texture;

获取视频播放器维度width/height

float videoWidth = vidTex.width;
float videoHeight = vidTex.height;

确保只获取videoPlayer.isPrepared之后的纹理true。有关如何播放视频并使其显示在 RawImage 组件上的完整代码,请参阅我的 答案。