【问题标题】:How to pick proper video dimension based on device resolution如何根据设备分辨率选择合适的视频尺寸
【发布时间】:2017-05-16 11:40:57
【问题描述】:

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

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

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

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

【问题讨论】:

  • 视频是在设备上还是从服务器流式传输的?
  • 在设备上是本地的。

标签: ios ipad video screen-resolution


【解决方案1】:

如果您确实可以选择从服务器流式传输,则 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 的 AAC-LC 音频,48 kHz,立体声音频输入.m4v、.mp4 和 .mov 文件格式
  • H.264 视频,最高 768 Kbps,320 x 240 像素,每秒 30 帧,Baseline Profile 最高 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 为例:

电视和视频

  • 通过基座连接器转 VGA 适配器支持 1024 x 768 像素; 576p 和 480p,带 Apple 分量 AV 电缆; 576i 和 480i 与 Apple 复合 AV 电缆
  • H.264 视频,最高 720p,每秒 30 帧,Main Profile 级别 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 文件格式的立体声音频; Motion JPEG (M-JPEG) 高达 35 Mbps,1280 x 720 像素,每秒 30 帧,音频为 ulaw,PCM 立体声音频为 .avi 文件格式

对于第 5 代 iPad,它显示:

电视和视频

  • AirPlay 镜像、照片、音频和视频输出到 Apple TV(第 2 代或更高版本)
  • 视频镜像和视频输出支持:通过闪电数字 AV 适配器和闪电转 VGA 适配器(适配器单独出售)最高可达 1080p
  • 支持的视频格式:H.264 视频,最高 4K,每秒 30 帧,High Profile level 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 文件格式的音频; Motion JPEG (M‑JPEG) 高达 35 Mbps,1280 x 720 像素,每秒 30 帧,音频为 ulaw,PCM 立体声音频为 .avi 文件格式

要实际检测设备,似乎围绕最佳方法进行了一些讨论,但似乎有人在这里或多或少地保持这种方法是最新的:https://stackoverflow.com/a/10481095/334402(它包括 iPad 4 和 iPhone 6,位于写作时间)

【讨论】:

  • 我无法找到屏幕分辨率和支持的视频格式之间的关系。例如:iPad pro (12.9) 2732 x 2048 分辨率支持 4k 视频,但 iPad pro (9.7) 2048 x 1536 也支持 4k 视频。那么我们在这里放什么样的逻辑呢?
  • 更新了答案以包括如何查找不同的设备功能。
  • 所以无论设备分辨率如何,我都必须找到我当前使用的设备,对吧?
  • 严格来说是的,但是如果您查看设备规格,最大支持的视频分辨率(忽略帧速率、编解码器等)通常与显示分辨率匹配。
  • 我对此表示怀疑,因为 iPad pro 的分辨率为 2732 x 2048,但它最高支持 4k。
【解决方案2】:

我通过在 PNG 中嵌入 m4v 视频数据,然后在设备上的 tmp 目录中解码和重新保存 .m4v 文件,为这个问题创建了一个可行的解决方案。请查看此 SO 答案以了解详细信息:https://stackoverflow.com/a/56383999/763355

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-12
    • 1970-01-01
    • 2014-03-31
    • 1970-01-01
    • 2012-01-13
    • 2015-07-30
    相关资源
    最近更新 更多