zoukankan      html  css  js  c++  java
  • Nginx下搭建flv视频服务器且支持视频拖动进度条播放

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

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

    首先配置nginx服务支持flv模块功能

    ⑴查看你的nginx是否已支持flv功能模块

    [root@localhost ~]# /usr/local/nginx/sbin/nginx -V  //查看nginx服务支持

    结果:

    nginx version: nginx/0.8.24

    built by gcc 4.4.4 20100726 (Red Hat 4.4.4-13) (GCC) 

    configure arguments: --prefix=/usr/local/nginx --with-http_flv_module --with-http_gzip_static_module --with-http_stub_status_module

    分析:我的nginx版本0.8.24http_flv_module已经开启,支持flv服务

    ⑵安装支持flv模块的nginx服务器:

    #tar zxvf nginx-0.8.24.tar.gz

    #cd nginx-0.8.24

    #./configure --prefix=/usr/local/nginx  --with-http_flv_module --with-http_gzip_static_module --with-http_stub_status_module //开启flv模块

    #make && make install

    #/usr/local/nginx/sbin/nginx       //启Nginx

    ⑶nginx服务器配置(nginx.conf文件)

    server

      {

    listen       80;

    server_name  localhost;   

    charset utf-8;

     location / {

                root   html;

                index  index.php index.html index.htm;

            }

      location ~ \.flv {

                flv;

       limit_rate_after 10m;

       limit_conn one 1;   

       limit_rate 85k;

            }

      }

    使用location 将 .flv的文件指向flv模块即可。

    以上使用了limit_rate 是为了限速,当 flv视频下载超过10M,则限速到85K只允许用户开1个进程,也就是先快速缓存可以播放,后面的慢慢下载。

    ⑷安装支持flv拖放进度条的播放器

    上面三步都是安装支持nginx服务支持flv功能的,现在需要支持flv拖放进度条的播放器.

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

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

    这个播放器支持视频加入广告和视频节目单功能,

    下载包里面有很全的实例和使用方式,

    将包中的player.swf(如果是带有Viral插件的,就是player-viral.swf)放到你的网站内,这就是用来提供视频播放的播放器。至于包中其它的文件,都可以不要。

    接下来,将播放器嵌入到你的视频播放网页中:

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

    <embed  

            type="application/x-shockwave-flash"  

            id="player2"  

            name="player2"  

            src="player.swf"   

            width="328"   

            height="200"  

            allowscriptaccess="always"   

            allowfullscreen="true"  

            flashvars="file=http://192.168.40.135/test.flv&image=http://192.168.40.135/preview.jpg&autostart=false&type=http&streamer=start"   

        >  </embed>

    file:"video.flv", // FLV视频地址

    type:"http",        // 数据类型,本文是基于http模式的,这个必须写滴

    image:"preview.jpg",// 开始播放之前的预览图

    autostart:"false",  // 是否自动播放

    streamer:"start",   // 参数为 start,这个参数用于传递给服务器从特定的关键帧开始播放,nginx编译了 flv 模块 所以是支持的。。

    ⑸添加关键帧

    如果一个Flv视频要能够被拖到特定点播放,该Flv需要在其metadata中有关键帧的信息。如果你的Flv视频制作的时候没有这些信息,也是不能拖放播放的。可以使用yamdi来为你的视频加上关键帧信息 :

    安装:

    1 [root@localhost ~]#wget http://sourceforge.net/projects/yamdi/files/yamdi/1.4/yamdi-1.4.tar.gz/download

    2 [root@localhost ~]#tar zxvf yamdi-1.4.tar.gz

    3 [root@localhost ~]#cd yamdi-1.4/

    4 [root@localhost yamdi-1.4]#make && make install

    使用方法:

    yamdi -i source.flv -o dest.flv //原视频 输出视频

  • 相关阅读:
    黑马程序员——【Java基础】——Java IO流
    黑马程序员——【Java基础】——泛型、Utilities工具类、其他对象API
    黑马程序员——【Java基础】——集合框架
    nodeJs与elementUI实现上图片
    NodeJS连接mysql数据库
    nodeJs实现跨域
    将Express生成器下的pug修改为html
    git使用总结
    使用vue+elementUI组件实现表格自动完成
    nginx配置thinkphp5
  • 原文地址:https://www.cnblogs.com/y0umer/p/2809525.html
Copyright © 2011-2022 走看看