Unity3D:视频文件兼容性
推荐:将NSDT场景编辑器加入你的3D工具链
3D工具集:NSDT简石数字孪生
视频文件兼容性
可将许多不同的视频文件格式导入 Unity 中。Unity 将导入的视频文件存储为 VideoClip) 资源。
为了让 Unity 正确预览视频文件,这些文件必须与平台(运行 Unity 编辑器的平台)兼容。文件还必须与目标构建平台兼容。Unity 提供了将文件转码为通常支持的格式的选项,但是您也可以自己管理兼容性。有关更多信息,请参阅下面的与目标平台的兼容性。
与 Editor 平台的兼容性
视频源文件必须使用编辑器平台支持的格式。每个平台都支持不同的视频文件格式。
扩展名 | Windows | macOS | Linux |
---|---|---|---|
.asf | ✓ | ||
.avi | ✓ | ||
.dv | ✓ | ✓ | |
.m4v | ✓ | ✓ | |
.mov | ✓ | ✓ | |
.mp4 | ✓ | ✓ | |
.mpg | ✓ | ✓ | |
.mpeg | ✓ | ✓ | |
.ogv | ✓ | ✓ | ✓ |
.vp8 | ✓ | ✓ | ✓ |
.webm | ✓ | ✓ | ✓ |
.wmv | ✓ |
视频文件轨道编码必须使用支持的编解码器。每个平台都支持特定的编解码器,这些编解码器可能随平台的每个版本而发生变化。
使用不受支持的编解码器的视频文件会在编辑器中触发错误消息,这些文件必须先使用兼容的编解码器进行转换,然后才能使用。
H.264 是大多数平台支持的最佳视频编解码器。它提供最佳的跨平台兼容性,但 Linux 编辑器不支持此编解码器。
对于 Linux,最佳编码是具有以下编解码器的 .webm 容器:
- 对于视频轨道,VP8。
- 对于音频,Vorbis。
有关编解码器支持的信息,请参阅编辑器的官方平台文档。有关 Windows 和 macOS 的编解码器兼容性的信息,请参阅以下链接:
- Windows 编解码器兼容性
- macOS 编解码器兼容性
视频剪辑导入器
视频剪辑导入器可以对您导入到 Unity 的视频文件进行转码。如果视频使用编辑器平台支持的编解码器,但文件与目标平台不兼容,这会很有用。
在编辑器中使用不受支持的视频文件
如果要使用的视频文件与目标平台兼容但与编辑器平台不兼容,请将这些视频文件设置为流媒体资源。例如,即使编辑器仅支持 VP8,您仍可能希望将 VP9 编解码器用于 Android 构建。
要将视频文件设置为流媒体资源,请将这些视频文件放置在项目的 StreamingAssets
文件夹中。使用 URL 属性将 Video Player 组件指向流媒体资源。
还可以使用 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
}
与目标平台的兼容性
Video Player 组件使用编辑器平台的原生音频和视频解码库在编辑器中播放视频文件。您必须确认这些文件也符合目标平台的要求。
编码建议
- 可用于硬件加速并且本机支持的最优视频编解码器是 H.264
- 当优先考虑跨平台支持时,VP8 是一个不错的选择。VP8 得到广泛支持并具有全面的功能集,但与硬件加速的编解码器(例如 H.264)相比,需要消耗更多的资源。
- 在支持 H.265 的设备上可以使用 H.265。有关更多信息,请参阅下文的 H.265 兼容性。
- Android 使用原生库支持 VP8,因此 VP8 在某些 Android 设备上也可能获得硬件辅助。
- Unity 编辑器支持 .ogv 格式,但其他平台并未广泛支持该格式。应根据目标平台,将 .ogv 文件转码为 .mp4 (H.264) 或 .webm (VP8)。
关键的编码值
下表列出了编码参数中需要的一些关键值:
参数 | 描述 | |
---|---|---|
Video Codec | H.264、H.265 或 VP8。 | |
Resolution | 显示器的分辨率。例如:1280 × 720。 | |
Profile | 配置文件是一组功能和约束;通常是由供应商指定,例如 Baseline 或 Main。适用于 H.264/H.265。参阅 H.264 或 H.265。 | |
Profile Level | 适用于 H.264/H.265。在一个给定的配置文件中,级别会指定性能要求,例如 Baseline 3.1。 | |
Audio Codec | AAC(适用于使用 H.264/H.265 的 mp4 视频)或 Vorbis(适用于使用 VP8 的 webm 视频)。 | |
Audio Channels | 取决于平台。请参阅适用于您平台的开发者指南。例如,关于 Android 支持的媒体格式的文章。 |
转码视频剪辑
视频剪辑导入器提供了将视频剪辑资源转码为以下视频编解码器之一的选项:
- H.264
- H.265
- VP8
转码后的视频剪辑自动使用适当的音频编解码器:
- AAC 使用 H.264 或 H.265 编码的视频
- Vorbis 使用 VP8 编码的视频
注意: |
---|
视频剪辑导入器仅提供了基本的转码选项。根据源文件的编码方式,使用导入器选项进行转码的剪辑可能无法提供最佳性能。在这种情况下,使用外部转码程序可能会获得更好的结果。 |
使用外部程序对视频剪辑进行编码
如果使用目标系统肯定支持的视频,可以禁用视频剪辑导入器的转码选项。如果禁用,Unity 不会修改文件。您可以使用外部程序来管理编码,从而可以进行更好的控制。
兼容性注意事项
本节提供有关视频兼容性的有用信息,以及指向外部资源的链接。
供应商针对媒体支持的建议
请遵循供应商就编解码器支持给出的建议。编解码器的选择在较旧的移动平台上是受限的。如果要将视频包含在要在多种设备上运行的游戏中,可能需要仔细检查并转换或者重新编码视频。
- Android:支持的媒体格式
- Windows:支持的媒体格式,H.265
- iPhone:比较 iPhone 型号
- UWP:支持的编解码器
H.265 兼容性
下表提供了 H.265 编解码器的特定于平台的要求和信息。
平台 | 要求 | 编码/解码 | 注意 |
---|---|---|---|
macOS | SDK 10.13+ | 硬件编码:第 6 代 Intel Core 处理器 软件编码:所有 Mac 机型 硬件解码:第 6 代 Intel Core 处理器 软件解码:所有 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+ |
由3D建模学习工作室整理翻译,转载请注明出处!