哪些视频格式与资产库兼容?

Posted

技术标签:

【中文标题】哪些视频格式与资产库兼容?【英文标题】:What video formats are compatible with the assets library? 【发布时间】:2010-07-15 15:39:36 【问题描述】:

哪些视频格式与 iPhone 的资源库兼容?

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

我似乎无法在 iPhone 参考库中找到任何相关信息。

【问题讨论】:

【参考方案1】:

目前还没有人提到这一点,但这取决于 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 设备相册,而 hdsite 视频仅适用于 Retina iPhone 和 iPad。)

一个有趣的旁注是高清视频将播放非视网膜 iPhone 与 MPMoviePlayerController - 你只是不能将它们保存到相册。

【讨论】:

好详细的图表!有趣的是,我还没有发现 MPMoviePlayerController 会播放无法进入 CameraRoll 的高分辨率视频的情况——尤其是使用 Galaxy S5 拍摄的视频(不确定是什么设置,要求 QA 尽可能使用最高质量)获胜'即使在 iPhone 5C 上也不能玩(没试过 5S)。但我没有你在这里提供的关于视频特征的详细程度。【参考方案2】:

如果您需要支持的音频/视频技术列表,请阅读 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 中媒体框架的参考信息。

【讨论】:

【参考方案3】:

我最近在我的超快相机应用 SnappyCam Pro 中添加了用于静态照片连拍的视频导出功能。

为了同时满足新旧设备的需求,我最终创建了一些 MPEG-4“探测”视频,每个视频都有一个黑色帧,分辨率为各种 4:3:

    320x240 像素 640x480像素 960x720像素 1440x1080 像素

四个视频文件仅向 App Bundle 添加了 12KB。

然后使用 -[ALAssetsLibrary videoAtPathIsCompatibleWithSavedPhotosAlbum:] 遍历每个选项,然后我能够确定哪些选项对最终的“相机胶卷”视频导出有效。

【讨论】:

不错!我喜欢这种方法【参考方案4】:

如果我不得不猜测,我可能会使用 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 文件格式

【讨论】:

感谢您的猜测,但我想有一个更明确的答案。有人愿意做一些测试来验证这一点吗? Apple 自己的规范有错误会很奇怪,你不觉得吗? 仅仅因为 iPhone 支持给定的视频格式,并不一定意味着相关 API 接受它。虽然我没有任何信息可以建议,但我希望有人可以确认它确实支持这些格式中的每一种。 您不能将规范用作指导方针,例如iPhone3GS可以播放720p,但是videoAtPathIsCompatibleWithSavedPhotosAlbum返回不接受。 这就是开发人员进行大量测试的原因。【参考方案5】:

似乎没有记录的方式来查询哪些格式会让videoAtPathIsCompatibleWithSavedPhotosAlbum 高兴,并且设备可以解码某种格式的事实并不意味着 AssetLibrary 会接受它。 但是,您会期望配备相机的设备将始终能够将相机的最高分辨率输出保存到相机胶卷。

如果您可以接受这个假设,那么您所要做的就是枚举AVCaptureDevices 并使用supportsAVCaptureSessionPreset 查询各种预设。

Victor 的测试表明像素区域似乎最重要,所以一旦您查询 AVCaptureSessionPreset1920x1080, AVCaptureSessionPreset1280x720, AVCaptureSessionPreset640x480 你应该可以选择一个尺寸,让videoAtPathIsCompatibleWithSavedPhotosAlbum 说是。

我不知道您如何为没有摄像头的设备计算它。

【讨论】:

以上是关于哪些视频格式与资产库兼容?的主要内容,如果未能解决你的问题,请参考以下文章

videojs兼容flv等格式视频

HTML5里video标签支持哪些格式的视频文件?

常见的视频格式都有哪些?

走进音视频的世界——RGB与YUV格式

Python中常用的音频处理库都有哪些

html5的视频插件支持哪些视频格式