关于使用 YouTube 进行移动开发的实用资源

Jarek Wilkiewicz,YouTube API 小组
2010 年 9 月

简介

开发人员如果希望在自己的移动应用程序中集成视频录制、上传、分享和播放功能,可以借助 YouTube 平台简化工作流程,提高最终产品的质量。本文章重点介绍了在应用程序开发过程中可能会用到的几项技术。

正在录制

视频录制过程可通过基础移动平台实施。例如,您的应用可以在 Android 上发出 VIDEO_CAPTURE intent:

Intent i = new Intent();
i.setAction(MediaStore.VIDEO_CAPTURE);
startActivityForResult(i, CAPTURE_RETURN);

或者在 iPhone iOS 上启动 UIImagePickerController

IImagePickerController *imagePicker = [[[UIImagePickerController alloc] init] autorelease];
imagePicker.delegate = self;
imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera;
imagePicker.mediaTypes = [NSArray arrayWithObject:(NSString *)kUTTypeMovie];
[self presentModalViewController:imagePicker animated:YES];

如需在 iOS 4 及更高版本上使用更高级的录制选项,您还可以使用 AV 基础框架中的 AVCaptureSession 类。 

正在上传

您的应用可以通过以下任一方式将视频及其元数据上传到 YouTube:向与用户的 YouTube 账号关联的特殊电子邮件地址发送电子邮件,或者使用三种 API 方法之一:基于浏览器的上传、直接上传或直接可恢复上传。对于移动应用,直接可续传上传是最可靠的选择,因为它可让应用从连接故障中正常恢复,并从故障点恢复上传。YouTube 的可恢复上传协议利用 HTTP 1.1 Content-Range/Range 机制以分块传输视频,并在发生中断时确定成功传输的字节数。

尽管实际视频内容是最重要的上传内容,但是视频元数据也是该过程不可或缺的组成部分,因为元数据可让用户在搜索结果中找到视频,还可以实现本文章后文中介绍的功能。除了类别、说明和标题等常用元素外,移动应用还可以轻松添加来自手机 GPS 设备的地理定位数据。借助这些数据,您可以提供基于位置的搜索,或在地图上标出视频的位置。 对于力求尽可能减少用户互动的视频上传应用,另一种选择是零元数据上传。有关这方面的详情,请观看此 Google I/O 讲座

共享

YouTube Data API 还为视频分享活动提供了丰富的功能。与其他 Google 数据 API 一样,YouTube API 使用一种受 REST 启发的协议,该协议支持 AtomJSONJSON-C 数据表示法。JSON-C 的简洁型 API 响应非常适合在资源通常有限的移动环境中使用。该 API 具有灵活的视频搜索功能,可以对视频添加评论或进行评分,可以访问订阅内容、收藏的视频、播放列表和推荐引擎,可以托管社区功能以帮助您将视频集成到社交应用程序中。

您可以使用特定于编程语言的客户端库,或通过 HTTP 直接与 YouTube 的 API 服务器交互,将所有这些函数纳入移动应用中。前一种方式保留了协议的大部分复杂性,需要占用大量应用程序内存。后一种方式让您可以自己控制与应用程序所用的特定 API 服务的交互操作。最终,采用哪种方式因应用程序不同而异。要开始使用,请参阅适用于 Android 的 Java GData 库或适用于 iPhone 的 Objective-C GData 库。与服务器后端集成在一起,对于比较复杂的视频应用程序来说可能比较有优势。YouTube Direct 就是这样一款应用(图 1),它采用了预先配置为在 Google App Engine 上运行的开源服务器代码,以及适用于 Android(ytd-android,如图 1 所示)和 iPhone (ytd-iphone) 视频的参考客户端实现。

YouTube Direct Android 应用程序
图 1:YouTube Direct Android 应用

安全

安全和身份验证是 YouTube 移动应用程序开发要考虑的重要方面。尽管某些 API 操作可以在未通过验证的客户端上执行,但还有许多请求需要授权,而授权要在 API 请求中提交身份验证令牌才能实现。此类操作包括视频上传以及其他任何修改或写入数据或者访问用户隐私信息的操作。

该 API 支持三种身份验证方法:AuthSub、OAuth 和 ClientLogin。ClientLogin 是适用于移动应用的最简单方法,在 Android 上,您可以使用 AccountManager 轻松获取身份验证令牌。但是,如果应用程序集成了一个移动客户端和多个网络后端,则应考虑使用 Oauth(这是首选开放标准),或者使用专门针对 Google 的 AuthSub。有关在 Android 上实现 OAuth 身份验证的示例,请参阅此应用;有关在 iPhone iOS 上实现的示例,请参阅 GDataOAuthViewControllerTouch。 

播放

归根结底,视频的作用就是让用户观看。而 YouTube 平台则提供了视频展示平台。

  • 大多数先进的移动平台都预装了 YouTube 播放器应用程序,可以快速集成 YouTube。如果您的平台未安装 YouTube 播放器应用,可以下载一个。移动应用程序可以使用平台服务启动播放器。例如,在 Android 上,应用使用 ACTION_VIEW intent;在 iPhone 上,应用可以使用 UIApplication 类的 openURL 方法启动播放器(如博文中所述)。
  • 借助 YouTube 移动网站 http://m.youtube.com,您可以轻松在 Web 应用中集成视频播放功能。
  • 如需更精细地控制播放体验,支持 Adobe Flash 的平台上的应用可以扩展 AS3 YouTube 播放器,从而提供更高质量的播放体验。