如何根据设备分辨率选择合适的视频尺寸



我们有一个由设计团队提供的演示视频,具有三个不同的维度(1024 * 768),(2048 * 1536)和(2732,2048)。我正在尝试根据当前设备分辨率(支持的格式)选择合适的视频。

例如:如果是第一代iPad,则分辨率为(1024 * 768),它可以播放高达720p的视频格式,而不是无法播放的视频格式,同样iPad3(视网膜)分辨率为(2048 * 1536),但它可以播放高达1080p的视频格式。 类似的iPad pro,我想它最多可以播放4k视频。

我担心如果我们将其命名为 1x、2x 或 3x,系统不会自行选择合适的视频,就像图像中一样。

如果我们将高维视频传递到低分辨率设备,则它无法播放。那么,iOS中根据其支持格式选择合适的视频的一般方法是什么。

如果您确实可以选择从服务器流式传输,则 HLS 流式传输和媒体播放器将负责为设备和当前网络条件选择最佳比特率。

如果没有,那么据我所知,iOS不支持不同的视频分辨率,就像您上面提到的图像一样。

您仍可以通过查询设备分辨率并在运行时根据结果选择适当的视频来自行执行此操作。要查询屏幕尺寸:

CGRect screenRect = [[UIScreen mainScreen] bounds];
CGFloat screenWidth = screenRect.size.width;
CGFloat screenHeight = screenRect.size.height;

有关上述内容的来源和处理分屏模式,请参阅此处:https://stackoverflow.com/a/5678199/334402

您将不得不包含视频的多个版本,这将增加您的捆绑包大小,但是,同样,如果您可以流式传输,则可以避免这种情况。

要找到特定的设备功能需要一点努力。

首先,您通常会看到苹果提供的引用的一般iOS视频支持信息:

iOS 支持许多行业标准的视频格式和压缩标准,包括:

  • H.264 视频,高达 1.5 Mbps,640 x 480 像素,每秒 30 帧,H.264 基线配置文件的低复杂度版本,具有高达 160 Kbps、48 kHz 的 AAC-LC 音频,.m4v、.mp4和.mov文件格式的立体声音频
  • H.264 视频,高达 768 Kbps,320 x 240 像素,每秒 30 帧,基线配置文件高达 1.3 级,AAC-LC 音频高达 160 Kbps,48 kHz,.m4v、.mp4 和.mov文件格式的立体声音频
  • MPEG-4 视频,高达 2.5 Mbps,640 x 480 像素,每秒 30 帧,简单配置文件,AAC-LC 音频高达 160 Kbps,48 kHz,.m4v、.mp4 和 .mov 文件格式的立体声音频
  • 多种音频格式,包括音频技术中列出的格式

但是,正如您所指出的,这并不是全部,因为不同的设备具有不同的功能。要查找特定设备支持的视频,您需要在此处查看设备技术规格页面上的信息:https://support.apple.com/specs/

例如,对于第一代iPad,它显示:

电视和视频

  • 使用 Dock Connector to VGA 适配器支持 1024 x 768 像素;使用 Apple 分量 AV 线缆支持 576p 和 480p;使用 Apple 复合 AV 线缆支持 576i 和 480i
  • H.264 视频高达 720p,每秒 30 帧,主配置文件级别 3.1,AAC-LC 音频每通道高达 160 Kbps,48kHz,.m4v、.mp4 和 .mov 文件格式的立体声音频;MPEG-4 视频,高达 2.5 Mbps,640 x 480 像素,每秒 30 帧,具有高达 160 Kbps、48kHz 的 AAC-LC 音频的简单配置文件,.m4v、.mp4和.mov文件格式的立体声音频;运动 JPEG (M-JPEG) 高达 35 Mbps,1280 x 720 像素,每秒 30 帧,ULAW 音频,.avi文件格式的 PCM 立体声音频

对于第 5 代 iPad,它显示:

电视和视频

  • "隔空播放镜像"、照片、音频和视频输出到 Apple TV(第 2 代或更新机型)
  • 视频
  • 镜像和视频输出支持:通过闪电数字AV适配器和闪电转VGA适配器(适配器单独出售)高达1080p。
  • 支持的视频格式:H.264 视频高达 4K、每秒 30 帧、高调级别 4.2,AAC-LC 音频高达 160 Kbps、48kHz,立体声音频或杜比音频高达 1008 Kbps、48kHz、立体声或多声道音频,.m4v、.mp4 和 .mov 文件格式;MPEG-4 视频高达 2.5 Mbps,640 x 480 像素,每秒 30 帧,简单配置文件,AAC-LC 音频每通道高达 160 Kbps,48kHz,立体声音频或杜比音频高达 1008 Kbps、48kHz、立体声或多声道音频,.m4v、.mp4 和.mov文件格式;运动 JPEG (M-JPEG) 高达 35 Mbps,1280 x 720 像素,每秒 30 帧,ULAW 音频,.avi文件格式的 PCM 立体声音频

为了实际检测设备,似乎有一些关于最佳方法的讨论,但看起来有人在这里或多或少地保持这种方法是最新的:https://stackoverflow.com/a/10481095/334402(在撰写本文时,它最多包括iPad 4和iPhone 6)

我通过在PNG中嵌入m4v视频数据,然后将.m4v文件解码并重新保存在设备上的tmp dir中,从而为此问题创建了一个有效的解决方案。请看一下这个SO答案以获取详细信息:https://stackoverflow.com/a/56383999/763355

最新更新