kristain

博客园 首页 新随笔 联系 订阅 管理

     转自:http://linux.cn/home-space-uid-3-do-blog-id-136.html

  在互联网上播放视频,有两种方式,一种是文件方式,即通过HTTP协议访问视频文件,这种方式的缺点是不能从特定的帧开始播放;另外一种就是采用专门的流媒体服务器,这种方式的缺点是要搭建复杂的流媒体服务器。不过,现在有了一种集合了以上两种方式优点的一种解决方案,即通过HTTP来实现伪流媒体。本文描述的就是这样的一种解决方案。

Flv播放器

首先,你需要有一个能够播放Flv视频的播放器,很显然,它还需要能够嵌入到网页中。目前比较流行的,功能上也还比较完善的一个Flv播放器就是 JW FLV Media Player(也称为 jwplayer)。它的网址是:http://www.longtailvideo.com/players/jw-flv-player/

将包中的player.swf(如果是带有Viral插件的,就是player-viral.swf)放到你的应用下。

接下来,将播放器嵌入到你的视频播放网页中。嵌入的方式有两种:

 直接嵌入,使用Object/Embed代码嵌入

<object id="player1" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" name="player1" width="328" height="200">
	<param name="movie" value="player.swf" />
	<param name="allowfullscreen" value="true" />
	<param name="allowscriptaccess" value="always" />
	<param name="flashvars" value="file=video.flv&image=preview.jpg&autostart=false&type=http&streamer=start" />
	<embed
		type="application/x-shockwave-flash"
		id="player2"
		name="player2"
		src="player.swf" 
		width="328" 
		height="200"
		allowscriptaccess="always" 
		allowfullscreen="true"
		flashvars="file=video.flv&image=preview.jpg&autostart=false&type=http&streamer=start" 
	/>
</object>

 使用swfobject来嵌入Flash:

  swfobject可以从此下载(只需要其中的swfobject.js文件): http://code.google.com/p/swfobject

<html>
<script type="text/JavaScript" src="swfobject.js"></script>
<head>
<script type="text/JavaScript">

/* <![CDATA[ */
function createPlayer() {
    var flashvars = {
        file:"video.flv",
        type:"http",
        image:"preview.jpg",
        autostart:"false",
        streamer:"start"
    }
    var params = {
        allowfullscreen:"true",
        allowscriptaccess:"always"
    }
    var attributes = {
        id:"player1",
        name:"player1"
    }
    swfobject.embedSWF("player.swf", "placeholder1", "320", "196", "9.0.115", false, flashvars, params, attributes);
        }
/* ]]> */
</script>

</head>
<body onload="createPlayer();">
    <div id="placeholder1"></div>
</body>
</html>

    在上述的两种代码中,有两个关键点

  • flashvars中的type参数的值应为“http”,这表明了该视频是通过http方式访问的。
  • falshvars中的streamer参数的值应为“start”,这个参数用于传递给服务器从特定的(关键)帧开始播放,没有这个参数,视频就不能拖到特定点播放。(lighttpd和nginx的Flv模块都支持这个start参数)

     此外,需要注意的是,如果一个Flv视频要能够被拖到特定点播放,该Flv需要在其metadata中有关键帧的信息。如果你的Flv视频制作的时候没有这些信息,也是不能拖放播放的。可以使用flvmdi来为你的视频加上关键帧信息,这是一个windows下的小程序,从此下载:http://www.buraks.com/flvmdi/

posted on 2012-10-09 13:10  kristain  阅读(251)  评论(0编辑  收藏  举报