视频格式、AVFoundation 和 UTI

Posted

技术标签:

【中文标题】视频格式、AVFoundation 和 UTI【英文标题】:Video formats, AVFoundation, and UTIs 【发布时间】:2010-12-29 20:06:26 【问题描述】:

我正在创建一个可以处理视频文件的 iPhone 应用程序。我正在使用 AVFoundation 类(例如 AVAsset)。我刚刚将我的应用程序注册为符合 public.movi​​e 的所有文件的处理程序(通过 CFBundleDocumentTypes)。但是,现在我的应用程序在 .avi 文件的“打开方式”菜单中列出,即使我认为 ios 不能播放 AVI 电影(快速查看预览会尝试,但失败)。

有没有更好的注册打开电影的方法?我还需要支持文件共享,所以我还需要区分 Documents 文件夹中的哪些文件是有效电影,尽管我还没有弄清楚如何检查文件的 UTI。 iOS Technology Overview 说:

iOS 中的视频技术支持播放具有 .mov、.mp4、.m4v 和 .3gp 文件扩展名并使用以下压缩标准的电影文件:

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 格式的立体声音频文件格式 多种音频格式,包括“音频技术”中列出的格式

提前感谢您提供的任何提示。

【问题讨论】:

【参考方案1】:

仅对于视频,在 Info.plist 中指定以下 UTI 应该可以工作:

com.apple.m4v-video (.m4v) com.apple.quicktime-movie (.qt, .mov) public.mpeg-4 (.mp4)

您可以在 AVMediaFormat.h 中找到 AVFoundation 支持的 UTI: https://developer.apple.com/library/mac/#documentation/AVFoundation/Reference/AVFoundation_Constants/Reference/reference.html%23//apple_ref/doc/uid/TP40009539-CH4g-DontLinkElementID_48

【讨论】:

【参考方案2】:

我已决定处理此问题的最佳方法是使用 UT* 函数从文件扩展名中获取 UTI 来确定文件的 UTI。不幸的是,这意味着仍然会导入 AVI 文件,因为即使无法播放,操作系统也知道它们是电影,但这似乎不会造成太多问题。

【讨论】:

以上是关于视频格式、AVFoundation 和 UTI的主要内容,如果未能解决你的问题,请参考以下文章

AVFoundation学习笔记: 媒体捕捉读取及写入

使用 AVFoundation 在 iOS 上录制音频样本

使用 AVFoundation 混合图像和视频

iOS开发进阶 - 用AVFoundation自定义视频录制功能

AVFoundation -> 用动画覆盖记录相机视频

Swift IOS 使用 AVFoundation 录制视频和音频