什么视频格式与资产库兼容?

12

什么视频格式与iPhone的资源库兼容?

换句话说,哪些视频格式会使ALAssetsLibrary的videoAtPathIsCompatibleWithSavedPhotosAlbum返回YES?

我无法在iPhone参考库中找到任何关于此的信息。

5个回答

14
没有人提到这一点,但这取决于iPhone/iOS设备。在制作一个试图将Flickr视频复制到相册的应用程序时,我对非视网膜iPhone上的writeVideoAtPathToSavedPhotosAlbum:调用不断出现无效数据结果感到沮丧。
我进行了一些videoAtPathIsCompatibleWithSavedPhotosAlbum测试,以检查各种大小的Flickr视频,如此问题所请求。
iPhone(非Retina):6119419764_orig.mov H.264、1,920 x 1,080 NO NO NO Linear PCM、16位小端签名整数、48,000 Hz、立体声(L R)35.33 Mbit/s
iPhone(Retina):6119419764_hd.mp4 AVC编码、1,280 x 720 NO YES YES AAC、44100 Hz、立体声(L R)2.15 Mbit/s
iPad:6119419764_site.mp4 AVC编码、640 x 360 NO YES YES AAC、44100 Hz、立体声(L R)833.71 kbit/s
iPhone(移动版):6119419764_mobile.mp4 AVC编码、568 x 320 YES YES YES AAC、32000 Hz、单声道775.14 kbit/s
(Taken with iPhone 3Gs):6121206003_orig.mov H.264、480 x 360 YES YES YES AAC、44100 Hz、单声道865.94 kbit/s 30 fps
6110638568_reformat.mov H.264、640 x 360 YES YES YES AAC、44100 Hz、单声道3.57 Mbit/s
基于这个有限的测试,对于给定的格式和设备来说,尺寸似乎最重要。(对于当前的Flickr编码方法和url schememobile视频可以在所有iOS设备的照片库中使用,而hdsite视频只能在Retina版的iPhone和iPad上使用。)
有趣的是,使用MPMoviePlayerController,HD视频可以在非Retina版的iPhone上播放,但无法保存到照片库中。

1
不错的详细图表!据传,我还没有发现过MPMoviePlayerController播放高分辨率视频但不能将其保存到相册中的情况 - 特别是使用Galaxy S5拍摄的视频(不确定设置,已要求QA使用尽可能高的质量)即使在iPhone 5C上也无法播放(未尝试5S)。但是,我没有像您这里提供的有关视频特征的详细信息。 - Andy Weinstein

4
如果您想要支持的音频/视频技术列表,请阅读iOS技术概述,特别是媒体层(向下滚动到“视频技术”处)。
iOS中的视频技术支持播放以下压缩标准的.mov、.mp4、.m4v和.3gp文件名扩展名的电影文件: - H.264视频,高达1.5 Mbps,640 x 480像素,每秒30帧, 使用AAC-LC音频的H.264基本配置文件低复杂度版本,高达160 Kbps,48 kHz,立体声音频在.m4v、.mp4和.mov文件格式中。 - H.264视频,高达768 Kbps,320 x 240像素,每秒30帧, 使用AAC-LC音频的基本配置文件高达Level 1.3,高达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文件格式中。 - 许多音频格式,包括“音频技术”中列出的格式。
这是iOS中媒体框架的参考信息。

3
我最近为我的超快相机应用SnappyCam Pro添加了一个静止照片生动爆发的视频导出功能。为了满足新旧设备的需求,我创建了几个MPEG-4“探测”视频,每个视频都有一个黑色帧,并具有多种4:3分辨率:
  1. 320x240px
  2. 640x480px
  3. 960x720px
  4. 1440x1080px
这四个视频文件只增加了12KB的应用程序包大小。然后通过使用-[ALAssetsLibrary videoAtPathIsCompatibleWithSavedPhotosAlbum:]来迭代每个视频,我能够确定哪些选项对于最终的相机胶卷视频导出是有效的。

不错!我喜欢这种方法。 - Ben Gotow

2
如果我要猜测,我可能会使用iPhone自己的规格作为测试的指导方针:
支持的视频格式: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文件格式中提供立体声音频;运动JPEG(M-JPEG)高达35 Mbps,1280 x 720像素,每秒30帧,在AVI文件格式中提供ulaw、PCM立体声音频。

谢谢你的猜测,但我想要一个更明确的答案。有人愿意进行一些测试来验证这个吗? - Avalanchis
苹果自己的规格说明出错了,这不是很奇怪吗? - Alex Reynolds
仅仅因为iPhone支持某种视频格式,并不意味着相关的API也接受它。虽然我没有任何信息表明相反,但我希望有人能够确认它确实支持这些格式中的每一种。 - Avalanchis
1
你不能将规格说明作为指南,例如iPhone3GS可以播放720p,但videoAtPathIsCompatibleWithSavedPhotosAlbum返回值将不予接受。 - Rhythmic Fistman
这就是为什么开发人员要进行大量测试的原因。 - Alex Reynolds

0

似乎没有记录的方法可以查询哪些格式能够让videoAtPathIsCompatibleWithSavedPhotosAlbum正常工作,而设备能够解码某种格式并不意味着AssetLibrary会接受它。然而,你会期望一个配备相机的设备总是能够将相机的最高分辨率输出保存到相机胶卷中。

如果你可以接受这个假设,那么你只需要枚举AVCaptureDevices并使用supportsAVCaptureSessionPreset查询各种预设即可。

Victor的测试表明像素面积似乎最为重要,因此一旦你查询了AVCaptureSessionPreset1920x1080、AVCaptureSessionPreset1280x720、AVCaptureSessionPreset640x480,你应该能够选择一个大小使得videoAtPathIsCompatibleWithSavedPhotosAlbum返回YES。

我不知道如何为没有相机的设备确定它。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接