Android目前支持两种不同的网络视频传输协议
1.HTTP
首先是通过标准的HTTP传输媒体。由于HTTP在网络上得到了广泛的支持,通常不会遭遇与其他流式协议一样的防火墙问题,因此大量的媒体以这种方式可用。通过HTTP传输的媒体通常以称为累进式的方式下载。
Android支持MPEG-4和3GP文件中的点播媒体,这些文件通过HTTP从标准Web服务器上传输。目前,它不支持使用任何现在由Apple、Microsoft或Adobe等公司使用的新技术来通过HTTP传输在线视频。
当准备通过累进式下载传输视频时,需要铭记几件事情。首先,必须使用编解码器及Android支持的格式对媒体进行编码(参见第9章以查看Android支持的格式和编解码器的详细内容)。
有许多免费工具和商业工具,可用来为通过HTTP累进式下载传输而准备媒体。其中包括QuickTime X、Adobe Media Encorder、HandBrake和VLC(无先后顺序)。QuickTime X已经对iPhone编码进行了预设、而且他们也能用于Android。Adobe Media Encorder已经为iPod进行了预设,其似乎也同样能在Android上工作。一般而言,如果一款软件已经为iPhone进行了预设,那么他们很有可能也能用于Android设备上。
其次,视频的比特率应在携带视频的网络所能够传输的范围之内。例如,GPRS的带宽可能会低到20kbps,因此在编码音频和视频的应该考虑到这一点。一般而言,当通过HTTP传输时,媒体将在设备上缓冲,当已经下载了足够的内容时才开始播放,此时应该能够播放到文件结束,而不用停下来等待下载更多的媒体。如果媒体的传输只有20kbps,而媒体以400kbps的比特率编码,那么着意味着对于每秒钟的视频,用户必须持续下载20秒。这可能不会很理想。
然而,如果用户在WIFI上传输,那么400kbps可能会比较好,与编码成20kbps的视频相比,它将提供效果更佳的视频。一般而言,待时用的网络速度必须根据视频的质量进行权衡。使用HTTP累进式下载的优势在于:媒体不必与RTSP一样实时传输,我们将在后面讨论这一点。
最后,为了在视频正在下载时播放他,必须以允许这么做的方式进行编码。具体而言,这意味着结果文件应该在文件的开头包含称为“moov原子”的内容。“moov原子”包含一个关于文件内容及组织方式的索引。为了使视频播放软件能够开始播放该视频,它需要知道这个信息。如果“moov原子”位于文件的末尾,那么播放软件只有在下载整个文件之后才能启动播放,因为此时他才可以得到“moov原子”。
但是,一些视频捕获和编码工具不会自动的执行这个步骤。在某些情况下,它只是一个配置设置,在其他的情况下,你可能需要手动执行该步骤。一个称为qt-faststart的命令行应用程序已经被开发和移植到不同的操作系统,同时形成了几个GUI应用程序的基础。可以在http://multimedia.cx/eggs/improving-qt-faststart/上读取和下载该应用程序。
2.RTSP
Android支持的第二个网络视频传输协议是RTSP。RTSP是指实时流协议(Real Time Streaming Protocol),从技术上将,它不是一个媒体传输协议;相反,它是一个用于支持媒体传输的控制协议。在Android中通过RTSP支持的媒体传输形式是RTP(实时传输协议,Real Time Transport Protocol),但是它只有在于RTSP一起使用时才有效。换句话说,Android上的RTP不能独立于RTSP工作。
RTSP和RTP是特定于实时数据流的。这完全不同于HTTP累进式下载,因为它可以在通过网络接受媒体时对其进行播放。
该协议还意味着要求使用一种特殊的服务器来传输媒体。市面上有几个不同的RTSP服务器:Apple公司的开源达尔文流媒体服务器、RealNetwork的Helix服务器以及几个Wowza媒体服务器。但是,设置和使用服务器超出了本书的覆盖范围。幸好,存在一个非常可靠的通过RTSP供应媒体的服务,可以利用它来进行测试(YouTube的移动站点http://m.youtube.com)。
与采用累进式下载一样,当准备通过RTSP传输媒体时,也需要铭记几件事件。首先,需要使用编解码器及Android支持的格式对媒体进行编码,并且其可通过RTSP服务器流媒体化。虽然支持其他的编解码器(H.264)和容器(MP4),但是一般会将移动设备的流媒体编码为在3GP容器中的MP4视频和ACC音频。
最后,媒体的比特率必须可以实时传输给最终用户,这取决于他或她的网络连接。根据网络类型,这些速度会有很大的不同。第二代网络(GPRS)提供的数据速度最高在50~100kbps的范围内。为了将视频编码成可在这种类型的网络上实时的传输,需要将视频编码在30kbps的范围内,以考虑额外系统开销和不同的连接质量,向上升级到EDGE网络将允许在50kbps的范围内可靠的传输视频,当前3G网络的保守比特率将在100kbps的范围内,而许多网络能够支持显著较高的比特率。
与HTTP累进式下载不同,RTSP同样可用于在线流式媒体。这是其超过传统HTTP传输方式的主要优点之一。RTSP还支持在点播媒体中定位。这意味着用户可以定位到视频中的特定点,而不必下载所有媒体直到包括这一点。服务器只需要将该文件特定位置的媒体提供给播放器。