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 Foundation Framework 中的 AVCaptureSession 类。

上传

您可以通过应用程序将视频及其元数据上传到 YouTube,操作方法为:向用户的 YouTube 帐户所关联的指定电子邮件地址发送电子邮件,或者使用下列三种 API 方法之一,即基于浏览器的上传、直接上传和直接断点续传。对于移动应用程序,直接断点续传是最可靠的方式,因为它可确保应用程序在出现连接故障时能从容地从连接故障中恢复,并从断点处继续上传。YouTube 的断点续传协议利用 HTTP 1.1 Content-Range/Range 机制分段传输视频,出现中断时可以识别已成功传输的字节数。

尽管实际视频内容是最重要的上传内容,但是视频元数据也是该过程不可或缺的组成部分,因为元数据可让用户在搜索结果中找到视频,还可以实现本文章后文中介绍的功能。除了类别、描述和标题等常规元素外,移动应用程序还可以轻松集成手机的 GPS 设备中的地理定位数据。这些数据可让用户基于位置搜索或在地图上标示视频位置。要想尽可能减少用户与视频上传应用程序的交互操作,可以不上传元数据。有关此方法的详细信息,可以通过此 Google I/O 会话了解。


分享

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

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

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

播放

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

  • 大多数先进的移动平台都预装了 YouTube 播放器应用程序,可以快速集成 YouTube。如果您的平台没有预装 YouTube 播放器应用程序,可以下载此应用程序。移动应用程序可以使用平台服务启动播放器。例如,Android 上的应用程序使用 ACTION_VIEW intent 启动播放器,iPhone 上的应用程序使用 UIApplication 类的 openURL 方法启动播放器(这在博文中进行了介绍)。
  • 访问 YouTube 移动网站 http://m.youtube.com,可以轻松地在网络应用程序中集成视频播放功能。
  • 要想更精确地控制播放功能,可以在启用 Adobe Flash 的平台上为应用程序扩展 AS3 YouTube 播放器,从而获得更高品质的播放体验。

如果您对本文章有任何问题或评论,或者有好的建议供 YouTube 移动应用程序的开发人员借鉴,请在 YouTube API 开发人员论坛中发帖提出。