萨博价格:android mediaplayer 播放 视频

来源:百度文库 编辑:九乡新闻网 时间:2024/05/02 08:05:57

android mediaplayer 播放 视频 【转】

移动开发 2010-11-05 00:56:41 阅读198 评论0   字号: 订阅

留着,当时,对这个 没有搞清楚的。。。

 

这两天在android上面捣弄它的mediaplayer,结果发现它果然挑食无比,非常的难伺候,其成熟程度跟iphone完全不在同一个level的。放在http server上面的m4v在iphone上面只要用MPMoviePlayerController,放上url就可以播放了。但是呢,android上的MediaPlayer却不吃这套。

首先,android模拟器上面无论是本地video还是服务器上面的video都一概播放不出,google了一下据说是模拟器的limit。这个。。人家iphone上面的模拟器不是做得好好的么。其次,在G1上面播放本地的视频是没问题了,可是呢,播放远程的video就会跑出来 Command PLAYER_INIT completed with an error or info PVMFFailure 的错误。关于这个错误网上也有不少人在问,但是答案或者资料却非常少。在android sdk上面只有一句话是提到这个的,

Note: If you’re passing a URL to an online media file, the file must be capable of progressive download.

所以到这地步就只能怀疑server上面的video到底是不是progressive download的呢?

于是开始了另外一轮google,看看什么叫做progressive download。结果在这里找到了一些关于视频流的定义。

Streaming Methods
There are two ways to view media on the internet (such as video, audio, animations, etc): Downloading and streaming.

Downloading
…..

Streaming
Streaming media works a bit differently — the end user can start watching the file almost as soon as it begins downloading. In effect, the file is sent to the user in a (more or less) constant stream, and the user watches it as it arrives. The obvious advantage with this method is that no waiting is involved. Streaming media has additional advantages such as being able to broadcast live events (sometimes referred to as a webcast or netcast).

True streaming video must be delivered from a specialized streaming server.

Progressive Downloading
There is also a hybrid method known as progressive download. In this method the video clip is downloaded but begins playing as soon as a portion of the file has been received. This simulates true streaming, but doesn’t have all the advantages.

这段引用的结论是progressive download其实是影片一边下载一边播放,以此来模拟视频流。嗯。。所以我还是不知道怎样将服务器上面的video变成能让android一边下载一边播放的格式 -_-b。然后继续找,终于找到一篇疑似跟我的问题相关的帖子,并且有回复提到了

… your video file may not be set up for progressive download, which is required for HTTP streaming. On Linux, you can patch up MP4 videos for progressive download by installing MP4Box and running MP4Box -hint .

这可是说到重点了。原来要在服务器的video上面加上hint,标示一下它们是hint track,是用来stream的,android的播放器才能知道怎么去播放。至于里面那个MP4Box的-hint命令,就是在video文件上面加上RTP/RTSP的标示了。

 

下面对IIS市直hint 可能  有用

 

【原文地址】IIS 7.0 Bit Rate Throttling Module Released
【原文发表日期】Tuesday, March 18, 2008 12:43 AM

网上的视频现在是每个用户都认为是理所当然的常见场景之一,逐渐地,每个大网站都在以某种形式采用视频(产品录像,培训录像,更丰富的广告场景,用户生成的内容,客户的见证等等)。

但在网站上加视频的一个挑战是,如何以一种不太昂贵的方式提供这样的功能。网络带宽要花费很大一笔钱,使用高质量的视频的费用很快就会累加起来。

贴子下面的内容将对可为你用来减小发布视频费用的一些选项提供一个简短概述,讨论一个可以免费下载的新软件,IIS 7.0 比特率节流模块(Bit Rate Throttling Module)。这模块是几天前才刚发布的,允许你在从IIS web服务器使用任何视频技术(包括Silverlight, Windows Media Player,甚至Flash)提供视频时可以轻松地省钱。

第一个选项:使用视频主机服务

减小视频带宽费用的一个方式是,使用象YouTube或免费的微软Silverlight Streaming服务这样的视频主机服务。这允许你使用别人的网络来发布视频内容,避免自己支付带宽费用。

如果你不熟悉Silverlight Streaming服务的话,它允许你免费上传达10G的视频和每个月5个Terabytes(即5千GB)的视频内容(比特率最大达1.4 Mbps)。你可以建造你想要的任何定制的Silverlight客户端播放器应用,可以在其中内嵌入视频。这意味着,不需要任何特定的视频播放器观感,播放视频也没有服务的图标或水印。这允许你把视频完全地整合到你的网站之上,使用你想要的任何用户界面来主持它。

第二个选项:在你自己的服务器上提供视频服务

有时,使用一个视频主机服务没有意义,例如,你要使用自定义的认证来允许/拒绝用户访问,或你要播放非常长的视频片段,或者你想要在视频里播放定制的广告。这样你也许想要从自己的服务器上提供视频,对之有完全的控制。

一般来说,有2个选项,你可以用来从自己的服务器上发布视频: 使用streaming方式或渐进式(progressive)视频下载方式:

Streaming服务器场景

在Streaming场景中,一个客户端(象Silverlight, Windows Media Player, Flash 或Real Networks)连接到一个streaming 服务器。streaming 服务器然后把视频流式传过来让你观看,一般地会允许用户动态地向前或向后跳著看,暂停,或中止视频流。当用户关闭浏览器或从网页转到别处去时,视频流会自动中止传输。

Windows Media Services (WMS) 是可用于Windows的可以免费下载的streaming服务器,可以将视频流式传输到Windows Media Player和跨平台的Silverlight浏览器客户端。它一般被认为是在网上发布流式视频,服务器扩缩性最好,成本效率最好的方式,它可以同时处理按需文件streaming场景(例如,流式传输一个.wmv 文件),以及实况streaming的场景(例如,象奥林匹克运动会这样实时进行的体育比赛)。

Windows Media Services 可以在任何版本的Windows服务器上使用,包括新的Windows Server 2008 Web Server 版本(只要$469,支持上至4个CPU和32G的RAM,支持IIS, ASP.NET, SharePoint, 和Windows Media Services)。

渐进式(Progressive)下载场景

在渐进式下载场景下,一个客户端(象Flash 或 Silverlight)直接从web服务器上下载视频,一旦有足够平稳播放的视频就开始播放。

使用渐进式下载方式的好处是,在web服务器上配置极其容易。只要把视频拷贝或ftp到web服务器上,取得一个指向它的URL,你就可以将其连接到视频客户端播放器上。要启用它,不需要任何定制的web服务器配置,也不要求安装有streaming服务器。

但使用渐进式视频下载方式的缺点是,web服务器,在默认情形下是设计来尽可能快地下载文件的。所以,当一个用户在你网站上点击观看一个视频时,你的web服务器会尝试尽可能快地将其传输到客户端。如果用户决定观看整个视频的话,这没什么问题。但如果用户看到一半就中止的话(或者转到不同的网页上去),你下载了一堆不会被观看的视频内容。

如果剩下的没被观看的视频内容大小是几个M的话(甚至几十个M),你到头来在带宽上花了许多许多 钱,却完全没有给你的业务/网站带来好处。。。

IIS 7.0 比特率节流模块(Bit Rate Throttling Module)

 

下载 :http://www.microsoft.com/downloads/en/details.aspx?FamilyID=c6ad1417-36e6-4a0f-a5f6-d0cbf31c35fb

这个地址有效

上个星期,IIS开发团队发布了一个新的免费IIS 7.0 比特率节流模块 (bit-rate throttling module),可以使得渐进式视频场景极大地减小花费。

这个比特率节流模块允许你为从IIS web服务器上下载的任何类型的媒体内容(包括WMV, .MOV, .FLV 和 .MP3文件)配置带宽节流规则。

原装的比特率节流模块在文件被请求后,就会让IIS很快地发送一拨起始的媒体内容。在默认情形下,规则是设置来查看文件的MIME类型和比特率编码,然后尽快地发送可以播放20秒钟的媒体文件。在视频客户端有可播放20秒钟的媒体后,IIS比特率节流模块然后就会将传输率减小到文件的编码比特率。然后它会监测客户端的视频播放器是否关闭或者转到了不同的视频上,如果用户离开了,就会自动中止发送文件剩下的部分。

例如,你在播放一个35M的视频文件,是以500 Kbps的比特率编码的,IIS会尽可能快地发送20秒的视频(20 秒 x 500Kbps == 1.25MB的内容),让视频客户端开始播放,然后就只以500 Kbps 的下载率来下载剩下的视频(这样用户总是有20秒钟的视频缓存在客户端,而不是缓冲视频)。

如果在一分钟之后,用户厌烦了,要么中止视频,或者转到一个新网页上时,IIS会检测到他们离开了,就会中止传输35M文件剩下的部分。因为IIS在这个场景中,总共只下载了80秒的视频(用户观看了的60秒 + 缓存的20秒),最后只用了5M,而不是35M的网络带宽。30M的带宽节省,每天重复几百,几千次的话,就可以很容易转换成每年成千上万美金的带宽节省。。。

IIS 7.0 比特率节流模块的下载和安装

你可以在这里下载IIS 7.0 比特率节流模块以及了解相关详情。

在安装之后,你可以在IIS管理工具上点击“比特率节流”节点:

然后在每个文件或每个文件类型的基础上配置你想要的任何比特率节流规则:

下面的白皮书更详细地描述如何启用和使用它:

  • Bit Rate Throttling Module Setup
  • Bit Rate Throttling Configuration Walkthrough
  • Bit Rate Throttling Extensibility

也参阅Mike 这里的贴子,和Vishal这里这里的贴子以了解更多的细节。

希望本文能帮你提高视频场景的成本效率,

Scott

标签: .NET, IIS7, Community News, Silverlight