您可以将许多视频文件格式导入 Unity。Unity 将导入的视频文件存储为VideoClip 资源。
为了让 Unity 预览视频文件,这些文件必须与您运行 Unity 编辑器的平台兼容。您的文件还必须与目标构建平台兼容。Unity 提供了将文件转码为常用支持格式的选项,但您也可以自行管理兼容性。有关更多信息,请参阅下面的目标平台的兼容性。
视频源文件必须使用编辑器平台支持的格式。每个平台支持不同的视频文件格式。
扩展名 | Windows | macOS | Linux |
---|---|---|---|
.asf | ✓ | ||
.avi | ✓ | ||
.dv | ✓ | ✓ | |
.m4v | ✓ | ✓ | |
.mov | ✓ | ✓ | |
.mp4 | ✓ | ✓ | |
.mpg | ✓ | ✓ | |
.mpeg | ✓ | ✓ | |
.ogv | ✓ | ✓ | ✓ |
.vp8 | ✓ | ✓ | ✓ |
.webm | ✓ | ✓ | ✓ |
.wmv | ✓ |
视频文件轨道的编码必须使用支持的编解码器。每个平台支持特定的编解码器,这些编解码器会随着平台的每个版本而发生变化。
使用不受支持的编解码器的视频文件会在编辑器中触发错误消息,您必须将其转换为兼容的编解码器才能使用它们。
H.264 是大多数平台的最佳支持视频编解码器。它提供了最佳的跨平台兼容性,但 Linux 编辑器不支持此编解码器。
对于 Linux,最佳编码是具有以下编解码器的 .webm 容器
有关编解码器支持的信息,请参阅您的编辑器的官方平台文档。请参阅下面的链接以了解 Windows 和 macOS 的编解码器兼容性
视频剪辑导入器 可以转码您导入 Unity 的视频文件。当您的视频使用编辑器平台支持的编解码器但文件与目标平台不兼容时,这很有用。
要使用与目标平台兼容但与编辑器平台不兼容的视频文件,请将其设置为流式资产。例如,您可能希望对 Android 构建使用 VP9 编解码器,即使编辑器仅支持 VP8。
要将视频文件设置为流式资产,请将其放置在项目的 StreamingAssets
文件夹中。使用 URL 属性将视频播放器 组件指向流式资产。
您还可以使用Application.streamingAssetsPath 通过脚本一段代码,允许您创建自己的组件、触发游戏事件、随时间推移修改组件属性并以任何您喜欢的方式响应用户输入。 更多信息
参见词汇表访问流式资产的特定于平台的路径。您无法在编辑器中预览这些路径。
如果您希望拥有与您的编辑器兼容的占位符版本,但在目标平台上使用不同的版本,则可以在您的项目中包含这两个版本,使用与编辑器兼容的版本作为占位符,并在运行时决定使用哪个版本。
下面的示例演示了如何为不同的平台使用不同的视频 URL。有关更多信息,请参阅有关平台相关编译的文档。
void SetupMovieFile(VideoPlayer vp)
{
#if UNITY_EDITOR || UNITY_LINUX
vp.url = pathToMyVp8File;
#elif UNITY_ANDROID
vp.url = pathToMyVp9File;
#elif UNITY_STANDALONE_WIN
vp.url = pathToMyWmvFile;
#else
vp.url = pathToMyMp4File;
#endif
}
视频播放器 组件使用编辑器平台的原生音频和视频解码库在编辑器中播放视频文件。您必须确认这些文件也满足目标平台的要求。
用于硬件加速的最佳原生支持视频编解码器是H.264
当跨平台支持是重中之重时,VP8 是一个不错的选择。它得到广泛支持,并具有全面的功能集一个功能集是您可以用来在 Unity 编辑器中获得特定结果的相关包的集合。您可以直接在 Unity 的包管理器中管理功能集。 更多信息
参见词汇表,但它消耗的资源比 H.264 等硬件加速编解码器更多。
Android 使用原生库支持 VP8,因此 VP8 也可能在某些 Android 设备上获得硬件辅助。
Unity 编辑器支持 .ogv 格式,但它在其他平台上并不被广泛支持。根据目标平台,将 .ogv 文件转码为 .mp4 (H.264) 或 .webm (VP8)。
下表列出了您在编码参数中需要查找的关键值
参数 | 描述 |
---|---|
视频编解码器 | H.264、H.265 或VP8。 |
分辨率 | 显示器的分辨率。例如:1280 × 720。 |
配置文件 | 配置文件是一组功能和约束,通常由供应商指定,例如基线或主线。适用于 H.264/H.265。请参阅H.264 或H.265。 |
配置文件级别 | 适用于 H.264/H.265。在给定的配置文件中,级别指定性能要求,例如基线 3.1。 |
音频编解码器 | AAC(用于使用 H.264/H.265 的 mp4 视频)或Vorbis(用于使用 VP8 的 webm 视频)。 |
音频通道 | 取决于平台。请参阅平台的开发者指南。例如,有关 Android 的支持的媒体格式文章。 |
视频剪辑导入器 提供了将 VideoClip 资源转码为以下视频编解码器之一的选项
转码的 VideoClip 会自动使用相应的音频编解码器
注意:视频剪辑导入器 仅提供基本的转码选项。根据源文件的编码方式,您可能无法从使用导入器选项转码的剪辑获得最佳性能。在这种情况下,使用外部转码程序可能会获得更好的结果。
如果您使用目标系统绝对支持的视频,则可以禁用视频剪辑导入器 的转码选项。如果禁用,Unity 不会修改文件。您可以使用外部程序管理编码,这允许更精细的控制。
本节提供了有关视频兼容性的有用信息,以及指向外部资源的链接。
遵循供应商对编解码器支持的建议。在较旧的移动平台上,编解码器的选择有限。您可能需要检查和转换或重新编码打算包含在运行在多个设备上的游戏中视频。
下表提供了 H.265 编解码器的特定于平台的要求和信息。
平台 | 要求 | 编码/解码 | 备注 |
---|---|---|---|
macOS | SDK 10.13+ |
硬件编码: 第 6 代英特尔酷睿处理器 软件编码: 所有 Mac 硬件解码: 第 6 代英特尔酷睿处理器 软件解码: 所有 Mac |
|
Windows | Windows 10 + HEVC 扩展 |
编码器 解码器 |
HEVC 扩展(仅限硬件) HEVC 扩展(硬件 + 软件支持) |
iOS | SDK 11.0+ |
硬件解码: A9 芯片 软件解码: 所有 iOS 设备 |
|
tvOS | SDK 11.0+ | ||
UWP | Windows 10+ | 如果设备列出了对 H.265 的支持,则可能不适用于设备系列中的所有设备。 | |
Android | 5.0+ |
2019 年 5 月 7 日 页面修订
Unity 5.6 中的新功能