`

搭建一个Flv视频播放服务器

阅读更多

经过一天的努力,查了好多资料,终于搞定了Flv视频服务器。本来这个事情没那么复杂的,无奈网上的很多资料都是错漏百出,内容脱节的,包括一些官方站也是,实在让人郁闷不已。为了让大家能避免被错误的文档误导,写个简短文章给大家做参考。

目前,由于Flash的流行,网络上绝大多数的微视频网站都采用了Flv格式来播放视频。

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

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

http://www.longtailvideo.com/players/jw-flv-player/

本文写作时,jwplayer的最新版本是4.6。它对于非商业使用是免费。

从上述网址下载jwplayer,输入邮件地址即可下载一个压缩包。

可以考虑下载使用带有 Viral 插件的版本,Viral插件会在视频播放完后,弹出一个窗口,可供浏览者将该视频嵌入到其他网页、发布该视频的URL和推荐该视频,对于推广视频比较有用。

将包中的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ℑ=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ℑ=preview.jpg&autostart=false&type=http&streamer=start"
/>
</object>
上面代码中,你需要将video.flv和preview.jpg替换成你的视频文件及其预览图。

基本上这种直接代码嵌入的方式在各种浏览器中都是兼容的。但是,以上代码在IE7+的某些安全设置下,播放Flash时会弹出安全提示,需要手动许可。所以,还有一种更好方式来嵌入,

使用swfobject来嵌入Flash:

swfobject是一个很小的JavaScript脚本(10k),该脚本引入了一个swfobject对象,用于在网页内嵌入Flash,并避免了上述的安全提示。swfobject已经得到了广泛的使用和好评。

swfobject在jwplayer包中也包含了一个,不过是很旧的1.5版,建议使用最新的版本。本文写作时,最新的版本是2.2。swfobject可以从此下载(只需要其中的swfobject.js文件):

http://code.google.com/p/swfobject/

使用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>
上述代码中,首先引入swfobject.js,然后将实例化播放器的代码放到head中;在body内放一个空的div用来为播放器占位,该div的ID(上例中是placeholder1)会被传递给swfobject.embedSWF()函数,swfobject会在该div内生成播放器;最后在body的onload事件中进行播放器的创建。

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

flashvars中的type参数的值应为“http”,这表明了该视频是通过http方式访问的。
falshvars中的streamer参数的值应为“start”,这个参数用于传递给服务器从特定的(关键)帧开始播放,没有这个参数,视频就不能拖到特定点播放。(lighttpd和nginx的Flv模块都支持这个start参数)
此外,需要注意的是,如果一个Flv视频要能够被拖到特定点播放,该Flv需要在其metadata中有关键帧的信息。如果你的Flv视频制作的时候没有这些信息,也是不能拖放播放的。可以使用flvmdi来为你的视频加上关键帧信息,这是一个windows下的小程序,从此下载:

http://www.buraks.com/flvmdi/

完成了以上工作,那么客户端的播放器的显示就可以工作了。接下来我们搭建用来提供Flv文件访问的HTTPD服务器。

Flv视频服务器
搭建Flv视频服务器,建议采用轻量级的HTTP服务器,毕竟Flv文件只是静态文件。轻量级的HTTP服务器有两种选择:lighttpd和nginx。选择任何一个都可以,在提供Flv服务方面,两者相差不多。

nginx
从nginx的网站下载最新的稳定版,本文写作时的最新稳定版的版本是0.7.63:

http://nginx.net/

下载后进行编译,要将“ --with-http_flv_module ” 加上,这个是用来专门提供Flv服务的模块。nginx的编译的其他选项及配置这里就不多说了,只说明一下在配置中如何激活flv模块:

在server配置中,加入如下语句,表明所有的flv文件由flv模块进行处理:

location ~ \.flv { flv; }
lighttpd
从lighttpd下载最新的稳定版,本文写作时的最新稳定版的版本是1.4.24:

http://www.lighttpd.net/

下载后编译不需要特定选项,flv模块是默认编译进去的,但是在配置文件中并无此模块,需要手动添加:

在server.modules区块中加入如下语句来激活flv模块(如果不是插入到最后一行,记得末尾的逗号):

"mod_flv_streaming",
然后在配置文件中增加如下行来说明所有的Flv文件都由flv模块处理:

flv-streaming.extensions = ( ".flv" )


说明:在以上两种HTTP服务器中,flv模块实际上会接收通过拖放播出而传递的类似 “?start=1030435” 这样的参数,并根据该参数传递从特定位置开始的视频数据。

这样,Flv视频服务器就安装好了。你可以试试播放Flv视频,也可以看看拖放是否工作。

如果你需要播放mp4视频,基本原理如上,只是需要额外的处理mp4文件的模块,在此就不赘述了。
分享到:
评论

相关推荐

    nginx搭建流媒体服务器(flv,mp4视频播放网站).zip

    1. "nginx搭建flv、mp4流媒体服务器.docx":这是一个文档,详细介绍了如何配置Nginx以支持这两种视频格式的流媒体服务,可能包括Nginx的安装、配置文件修改以及特定模块的启用等步骤。 2. "1.安装nginx.txt":这份...

    Nginx下搭建flv视频服务器且支持视频拖动进度条播放.docx

    一个常用的解决方案是JW FLV Media Player(jwplayer),它是一个功能丰富的Flash播放器,支持在网页中嵌入FLV视频,并且可以处理视频的拖动播放。从官方网址下载播放器包,将`player.swf`文件上传到服务器,并在...

    在Centos系统搭建Ostube2.6开源flv流媒体服务器

    在Centos系统上搭建Ostube2.6开源FLV流媒体服务器,是一项涉及软件配置...通过本文的详细介绍,相信读者能够对Ostube2.6的安装和配置有一个全面的了解,从而能够独立完成在自己的系统上部署和管理流媒体服务器的工作。

    Docker搭建SRS视频服务器

    SRS 是一个高性能、易于扩展的实时流媒体服务器,支持 RTMP、WebRTC、HLS、HTTP-FLV 等多种流媒体协议。 搭建步骤简述如下: 拉取官方镜像:通过 docker pull ossrs/srs:&lt;version&gt; 命令从 Docker Hub 获取指定版本...

    Nginx搭建流媒体FLV视频服务器配置示例

    本文主要介绍如何使用Nginx搭建流媒体FLV视频服务器,并提供一个配置示例。 首先,需要了解FLV视频文件的两种发布方式:普通的HTTP方式和流媒体方式。传统的HTTP方式是将视频文件作为静态文件存储在服务器上,用户...

    流媒体服务器,window和linux版本,用于搭建视频流媒体服务

    在这个场景中,我们有两个版本的流媒体服务器软件:一个适用于Windows系统(MediaServer_windows64.zip),另一个适用于Linux系统,特别是CentOS 6.8版本(MediaServer_centos6.8.zip)。这些服务器软件能够帮助用户...

    flv视频播放器asp web开发

    总的来说,这个“flv视频播放器asp web开发”项目为开发者提供了一个灵活的工具,可以用来搭建自己的在线视频平台,同时具备高度的个性化和扩展性。对于熟悉ASP和Flash技术的开发者来说,这是一个理想的起点,可以...

    hls流视频服务器搭建(linux)

    为了满足用户对高质量视频点播的需求,我们需要搭建一个高性能的流视频服务器。本文将讲述如何使用ffmpeg和nginx搭建流视频服务器,实现高质量的视频点播服务。 31.1、hls 协议 HLS(HTTP Live Streaming)是一种...

    流媒体服务器搭建及其转码

    这个命令中有两个URL,一个是RTSP视频流的地址,另外一个是接收RTMP流的流媒体服务器地址。 3. 前端页面选用合适的播放器进行播放 前端页面选用合适的播放器进行播放是指将流媒体服务器推送的流播放到前端页面的...

    flv视频播放器asp源码

    1. **视频播放器界面**:通常包含一个Flash对象,用于在用户浏览器中播放FLV视频。源码会定义如何嵌入Flash播放器,设置播放器的大小、样式以及播放控制(如播放、暂停、停止、音量调节等)。 2. **视频文件管理**...

    http-flv视频流配置文件

    在这个配置文件中,我们将深入探讨如何利用Nginx服务器搭建一个支持HTTP-FLV的视频流服务,并结合flv.js库在网页上播放视频。同时,我们还将提及FFmpeg作为推荐的推流工具。 首先,让我们了解Nginx的RTMP模块。...

    flvplayer-WEB端播放-Tomcat下发布.rar

    - 将这些文件复制到Tomcat的webapps目录下,创建一个新的应用目录,如“flvplayer”。 - 重启Tomcat服务器,让其加载新的应用。 3. 访问与测试: - 在浏览器中输入`http://localhost:8080/flvplayer/`(默认情况...

    IIS6配置Flv播放

    在探讨“IIS6配置Flv播放”的过程中,我们首先需要理解几个关键概念:IIS6、Flv格式、MIME类型以及如何在IIS6环境下正确配置这些元素以实现Flv视频的顺利播放。 ### IIS6与Flv格式 IIS6(Internet Information ...

    Ubuntu RTMP视频服务器搭建教程

    本教程将指导你如何在Ubuntu操作系统上搭建一个简单的RTMP服务器,以便与编码器对接。我们将使用Nginx,一个流行的高性能HTTP和反向代理服务器,通过添加nginx-rtmp-module来支持RTMP功能。 首先,让我们详细分解...

    ffmpeg+nginx-rtmp-module+flv监控视频web展示

    FFmpeg、Nginx-RTMP-Module 和 FLV 监控视频Web展示是一个整合了实时流媒体处理、传输和播放的技术方案。这个方案适用于在Web端实现监控视频的实时展示,尤其对于需要构建远程监控系统或者直播平台的场景非常实用。...

    flv视频播放器asp后台添加版

    【标题】"flv视频播放器asp后台添加版"是一个基于ASP编程语言的视频播放解决方案,专门用于播放FLV格式的视频文件。...了解这些知识点,可以帮助我们有效地搭建、维护和优化一个基于ASP的FLV视频播放平台。

    nginx-1.19.3【集成nginx-http-flv-module】.zip

    4. **Windows版Nginx部署**:压缩包内包含了一个适用于Windows操作系统的Nginx部署包,这意味着即使在非Linux环境下,也可以轻松搭建视频直播服务。 5. **安装手册.pdf**:这个文档提供了详细的部署和配置指南,...

    linux下支持FLV格式视频的流媒体服务搭建过程和源码

    2. RTMP模块:Nginx的一个扩展,用于处理Real-Time Messaging Protocol(RTMP)协议,这是传输FLV视频流的常用协议。 3. FFmpeg:一套强大的多媒体处理工具,可以用于转换、编码和推流。 二、安装步骤 1. 安装...

    搭建ffmpeg+nginx+yasm 流媒体服务器低延迟,最低延迟两三秒

    nginx是一个轻量级的Web服务器软件,可以用于流媒体服务器的搭建。nginx提供了丰富的模块,可以扩展其功能以支持流媒体服务器的需求。在本文中,我们将使用nginx的RTMP模块来支持流媒体服务器的功能。 四、yasm概念...

Global site tag (gtag.js) - Google Analytics