【发布时间】:2010-07-15 15:39:36
【问题描述】:
哪些视频格式与 iPhone 的资源库兼容?
换句话说,ALAssetsLibrary 的 videoAtPathIsCompatibleWithSavedPhotosAlbum 对于哪些视频格式会返回 YES?
我似乎无法在 iPhone 参考库中找到任何相关信息。
【问题讨论】:
标签: iphone video-encoding
哪些视频格式与 iPhone 的资源库兼容?
换句话说,ALAssetsLibrary 的 videoAtPathIsCompatibleWithSavedPhotosAlbum 对于哪些视频格式会返回 YES?
我似乎无法在 iPhone 参考库中找到任何相关信息。
【问题讨论】:
标签: iphone video-encoding
目前还没有人提到这一点,但这取决于 iPhone / iOS 设备。在制作一个试图将 Flickr 视频复制到相册的应用程序时,当我在 writeVideoAtPathToSavedPhotosAlbum 上不断收到无效数据结果时,我感到很沮丧:调用非 Retina iPhone。
按照这个问题的要求,我对各种大小的 Flickr 视频进行了一些 videoAtPathIsCompatibleWithSavedPhotosAlbum 测试。
iPhone iPhone iPad (非视网膜)(视网膜) 6119419764_orig.mov H.264, 1,920 x 1,080 否 否 否 线性 PCM,16 位 小端签名 整数,48000赫兹, 立体声(左/右) 35.33 兆比特/秒 6119419764_hd.mp4 AVC 编码,1,280 x 720 否 是 是 AAC,44100 赫兹,立体声 (L R) 2.15 兆比特/秒 6119419764_site.mp4 AVC 编码,640 x 360 否 是 是 AAC,44100 赫兹,立体声 (L R) 833.71 千比特/秒 6119419764_mobile.mp4 AVC 编码,568 x 320 是 是 是 AAC,32000 赫兹,单声道 775.14 千比特/秒 6121206003_orig.mov (用 iPhone 3Gs 拍摄) H.264、480 x 360 是 是 是 AAC,44100 赫兹,单声道 865.94 千比特/秒 30 帧/秒 6110638568_reformat.mov H.264、640 x 360 是 是 是 AAC,44100 赫兹,单声道 3.57 兆比特/秒根据这个有限的测试,对于给定的格式和设备,看起来尺寸最重要。 (对于当前的 Flickr 编码方法和 url scheme、mobile 视频适用于所有 iOS 设备相册,而 hd 和 site 视频仅适用于 Retina iPhone 和 iPad。)
一个有趣的旁注是高清视频将播放非视网膜 iPhone 与 MPMoviePlayerController - 你只是不能将它们保存到相册。
【讨论】:
如果您需要支持的音频/视频技术列表,请阅读 iOS 技术概述,尤其是 Media Layer(向下滚动到显示“视频技术”的位置)。
iOS 支持的视频技术 播放电影文件 .mov、.mp4、.m4v 和 .3gp 文件名 扩展并使用以下 压缩标准:
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 文件格式
多种音频格式,包括“音频 技术”
这是 iOS 中媒体框架的参考信息。
【讨论】:
我最近在我的超快相机应用 SnappyCam Pro 中添加了用于静态照片连拍的视频导出功能。
为了同时满足新旧设备的需求,我最终创建了一些 MPEG-4“探测”视频,每个视频都有一个黑色帧,分辨率为各种 4:3:
四个视频文件仅向 App Bundle 添加了 12KB。
然后使用 -[ALAssetsLibrary videoAtPathIsCompatibleWithSavedPhotosAlbum:] 遍历每个选项,然后我能够确定哪些选项对最终的“相机胶卷”视频导出有效。
【讨论】:
如果我不得不猜测,我可能会使用 iPhone's own specifications 作为测试指南:
支持的视频格式:H.264 视频,最高 720p,每秒 30 帧,Main Profile level 3.1,AAC-LC 音频最高 160 Kbps,48kHz,.m4v、.mp4 和 .m4v 立体声音频。 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,PCM 立体声音频为 .avi 文件格式
【讨论】:
似乎没有记录的方式来查询哪些格式会让videoAtPathIsCompatibleWithSavedPhotosAlbum 高兴,并且设备可以解码某种格式的事实并不意味着 AssetLibrary 会接受它。 但是,您会期望配备相机的设备将始终能够将相机的最高分辨率输出保存到相机胶卷。
如果您可以接受这个假设,那么您所要做的就是枚举AVCaptureDevices 并使用supportsAVCaptureSessionPreset 查询各种预设。
Victor 的测试表明像素区域似乎最重要,所以一旦您查询
AVCaptureSessionPreset1920x1080, AVCaptureSessionPreset1280x720, AVCaptureSessionPreset640x480 你应该可以选择一个尺寸,让videoAtPathIsCompatibleWithSavedPhotosAlbum 说是。
我不知道您如何为没有摄像头的设备计算它。
【讨论】: