我们设计团队提供的演示视频有三种不同的尺寸(1024 * 768),(2048 * 1536)和(2732,2048)。我试图根据当前的设备分辨率(支持的格式)选择合适的视频。
例如:如果它的第一代iPad的分辨率是(1024 * 768)它可以播放的视频格式比不播放的视频格式多720p,同样iPad3(Retina)的分辨率是(2048 * 1536)但它可以播放高达1080p的视频格式。类似iPad专业版我想它会播放高达4k的视频。
如果我们将图像命名为1x,2x或3x(如图像中所示),我恐怕系统不会选择适当的视频。
如果我们将高维视频传递到低分辨率设备,则无法播放。那么iOS中根据其支持格式选择适当视频的一般方法是什么呢。
答案 0 :(得分:0)
如果您确实可以选择从服务器流式传输,那么HLS流媒体和媒体播放器将负责为设备和当前网络条件选择最佳比特率。
如果不是,那么据我所知,iOS不支持不同的视频分辨率,就像你上面提到的那样。
您仍然可以通过查询设备分辨率并根据结果在运行时选择适当的视频来自行完成此操作。要查询屏幕大小:
CGRect screenRect = [[UIScreen mainScreen] bounds];
CGFloat screenWidth = screenRect.size.width;
CGFloat screenHeight = screenRect.size.height;
请参阅此处了解上述内容以及处理分屏模式:https://stackoverflow.com/a/5678199/334402
您必须包含多个版本的视频,这会增加您的捆绑尺寸,但是,如果您可以流式传输,则可以避免这种情况。
要查找特定设备功能需要花费一些精力。
首先,您会看到引用Apple提供的一般iOS视频支持信息:
iOS支持许多行业标准视频格式和压缩标准,包括以下内容:
- H.264视频,高达1.5 Mbps,640 x 480像素,每秒30帧,H.264基线配置文件的低复杂度版本,AAC-LC音频高达160 Kbps,48 kHz,立体声音频输入.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文件格式
- 多种音频格式,包括Audio Technologies
中列出的格式
然而,正如您所指出的,这不是完整的故事,因为不同的设备具有不同的功能。要查找特定设备支持的视频,您需要查看设备技术规格页面上的信息:https://support.apple.com/specs/
例如,对于第一代iPad,它显示:
电视和视频
- 使用Dock Connector to VGA Adapter支持1024 x 768像素;带Apple Component AV线的576p和480p;带Apple Wire 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帧,简单配置文件,AAC-LC音频高达160 Kbps,48kHz,立体声音频,.m4v,.mp4和.mov文件格式; Motion JPEG(M-JPEG)高达35 Mbps,1280 x 720像素,每秒30帧,ulaw音频,.avi文件格式的PCM立体声音频
对于iPad第5代,它显示:
电视和视频
- AirPlay镜像,照片,音频和视频输出到Apple TV(第2代或更高版本)
- 视频镜像和视频输出支持:通过Lightning数字AV适配器和Lightning转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,立体声音频或Dolby Audio,最高1008 Kbps,48kHz,立体声或多声道音频,.m4v,.mp4和.mov文件格式; Motion JPEG(M-JPEG)高达35 Mbps,1280 x 720像素,每秒30帧,ulaw音频,.avi文件格式的PCM立体声音频
为了实际检测设备,似乎有一些关于最佳方式的讨论,但看起来有人在这里或多或少保持这种方法是最新的:https://stackoverflow.com/a/10481095/334402(它包括iPad 4和iPhone在撰写本文时为6)
答案 1 :(得分:-1)
我通过将m4v视频数据嵌入PNG中,然后将.m4v文件解码并重新保存到设备上的tmp目录中,从而创建了解决此问题的可行方案。请查看此SO答案以获取详细信息:https://stackoverflow.com/a/56383999/763355