HTTP方式播放FLV/mp4 :nginx+Yamdi/MP4BOX
【导语】chrome浏览器确实很强,直接支持MP4拖动播放,对于其他播放器,可以使用以下方法来支持拖动播放。拖动的关键在于生成关键帧等元数据信息,便于服务器和播放器支持拖动。
另外,nginx web服务器体验起来,也是很有前途的一个web服务器,值得研究。
flv 视频可以采用两种方式发布:
一、普通的 HTTP 下载方式
二、基于 Flash Media Server 或 Red5 服务器的 rtmp/rtmpt 流媒体方式。
多数知名视频网站都采用的是前一种方式。
两种方式对比如下:
| Http | Rtmp/rtmpt |
| 生成关键帧后可拖动播放 | 任意拖动播放 |
| 下载完成后不再消耗服务器资源 | 无缓存,每次播放都会消耗服务器资源 |
这里说一下怎么用nginx 搭建http 方式的视频点播服务器,主要分为三步:
一、 nginx 安装及配置
1. 下载nginx 最新win32 版本解压到任意目录
2. 打开cmd 进入nginx 目录,使用命令start nginx 启动nginx (默认使用\conf\nginx.conf 配置,可用-c 选项指定要使用的配置文件,更多参数可使用nginx –h 查看)
二、 nginx 对flv 的支持
1. 编辑配置文件\conf\nginx.conf ,加入如下配置:
在http 块加入启动gzip 的配置
gzip on;
gzip_min_length 1100;
gzip_buffers 4 8k;
gzip_types text/plain;
在server 块中加入启用flv 的配置:
limit_rate_after 1m; # 下载1M 后开始限速
limit_rate 100k; # 将速度限制为100k/s
location ~ \.flv {
flv;
}
2. 使用命令nginx –s reload 重新加载配置文件
三、 客户端播放器
1. 下载开源的flash 播放器jwplayer
2. 将文件解压到nginx 下的html 目录
3. 访问http://localhost:8080/player.swf?type=http&file=1.flv即可播放视频
注意:现在视频能播放了,但并不支持拖动功能,因为没有给flv 文件添加“关键帧”,可以的工具有“yamdi” 和“flvtool”,以yamdi win32 版为例,下载解压后进入cmd 执行:
yamdi –i src.flv –o dst.flv
意思是将src.flv 添加关键帧,并输出为dst.flv 。
OK ,这时我们再访问http://localhost:8080/player.swf?type=http&file=dst.flv即可自由拖动播放了。
=========================================================================================
This post is a comparison of the performance of different tools available to tag FLV and MP4 containers with specific metadata (e.g. title, keyframes, generator or other custom fields…). For FLV containers flvtool2, flvtool++ and yamdi are compared. For the MP4 container MP4box, AtomicParsley and ffmpeg are compared.
Here are the IMO three most important FLV taggers tested on a 125MB FLV:
| Name | Duration | Large Files | In Memory | Custom Tags | Command |
|---|---|---|---|---|---|
| flvtool2 1.0.6 | 3min 11s | no | no | yes | flvtool2 -UP -band:Test -user:Test -date:1995 -genres:pop test.flv |
| flvtool++ 1.2.1 | 3s | no | yes | yes | flvtool++ test.flv -tag band “Test” -tag user “Test” -tag date “1995″ -tag genres “pop” test2.flv |
| yamdi 1.6 | 1.5s | yes | no | no | yamdi -i test.flv -o test2.flv -c “Test” |
The performance of flvtool2 is horrendous. For films of 120min it will take hours to process. Therefore: Do not use it! Use Facebooks flvtool++ instead. I guess the bad performance results from it being built in Ruby. Also notice the “Large File” column indicating large file support which officially only yamdi support (by adding compile flag -D_FILE_OFFSET_BITS=64). Another important point is the “In Memory” column indicating that flvtool++ loads the entire file into memory when tagging, which is problematic when tagging large files. Given this results only yamdi should be used for FLV tagging!
Now for the MP4 tagging. Here you can select between a lot of tools from the net, but only a few of them are command line based and available for Unix. The MP4 test file used is 100MB large.
| Name | Duration | Command |
|---|---|---|
| AtomicParsely | 0.6s | AtomicParsley test.mp4 –artist “Test” –genre “Test” –year “1995″ |
| mp4box | 0.6s | MP4Box -itags Name=Test:Artist=Me:disk=95/100 test.mp4 |
| ffmpeg 0.6 | 0.8s | ffmpeg -i test.mp4 -metadata title=”Test” -metadata artist=”Test” -metadata date=”1995″ -acodec copy -vcodec copy test2.mp4 |
Given that recent ffmpeg brings the tagging for MP4 out of the box (it doesn’t for FLV though) you do not even need an external tool to add the metadata
自:http://www.aojie.biz/1030
HTTP方式播放FLV/mp4 :nginx+Yamdi/MP4BOX的更多相关文章
- Nginx搭建flv mp4流媒体服务器[转]
Nginx搭建flv mp4流媒体服务器 作者:二蛋 时间:December 1, 2014 分类:Note 环境:Centos 6.4 32bit 一.安装依赖包 1.安装zlib wget htt ...
- rtmp和http方式在播放flv方面的各自优势和劣势
下面是查的一点资料,比较一下用fms的rtmp和web的http播放flv的差别: 1. 区别 用HTTP方式:先通过IIS 将FLV下载到本地缓存,然后再通过NetConnection的本地连接来播 ...
- videojs 播放无法通过URI确定格式的视频源(flv/mp4)
前言 前人坑我千百遍我待前人如初恋.最近公司开源节流搬机房,需要把原来的服务迁移,然后屁颠屁颠的把一个跑了几年没人管的视频网站(知道这个网站的人都走了)迁移到新的机房去. 结果跑起来发现原来里面同时存 ...
- Car-eye-http-flv-module 实现nginx-rtmp-mudule HTTP方式的FLV直播功能
nginx-rtmp-mudule RTMP 是一款优秀的Car-eye-http-flv-module 是在nginx-rtmp-mudule RTMP基础上修改的流媒体服务器,除了支持flash播 ...
- centos 6.4 Apache 配置 flv mp4.h264 流媒体拖动
http://blog.csdn.net/xst686/article/details/9763995 加入流媒体扩展后要重启 httpd flv 流媒体 <textarea style=&qu ...
- HTTP协议下可拖动时间轴播放FLV的实现(伪流媒体)
HTTP协议下实现FLV的播放其实并不复杂,当初实现的原理是使用了flowPlayer插件实现的,效果还不错.但仍有两大问题影响着客户的访问情绪: 1.预加载时页面卡死,似乎没有边下边播. 2.偶尔边 ...
- IIS中asp网站播放flv视频技术
播放flv视频文件需要使用flvplayer.swf程序(32K). HTML嵌入代码: <div id="FlashFile"> <object type=&q ...
- 利用开源jPlayer播放.flv视频文件
最近工作中用到视频播放,在网上搜索对比了好几款开源播放插件后,觉得 jPlayer 是比较不错的,故作此记录! 接下来先快速的展示一下 利用jPlayer播放.flv视频的效果: <!DOCTY ...
- FluorineFx 播放FLV 时堆棧溢出解决 FluorineFx NetStream.play 并发时,无法全部连接成功的解决办法
http://25swf.blogbus.com/tag/FluorineFx/ http://www.doc88.com/p-7002019966618.html 基于Red5的视频监控系统的研究 ...
随机推荐
- PHP 数组使用之道
本文首发于 PHP 数组使用之道,转载请注明出处. 这个教程我将通过一些实用的实例和最佳实践的方式列举出 PHP 中常用的数组函数.每个 PHP 工程师都应该掌握它们的使用方法,以及如何通过组合使用来 ...
- 关于 <customErrors> 标记的“mode”属性设置为“Off”的问题的解决方案
用 权限问题 <customErrors> 标记的“mode”属性设置为“Off”. 权限问题标记的“mode”属性设置为“Off”.说明: 服务器上出现应用程序错误.此应用程序的当前自定 ...
- Flask(1):基本示例、配置文件、路由、请求和响应、模板渲染
Flask的特点: - pip install flask - 短小精悍.可扩展性强的 web框架 注意:上下文管理机制 - 依赖 wsgi:werkzeug Flask的简单示例: from fla ...
- 【IntelliJ】IntelliJ IDEA的安装破解及使用
结合两位大牛CV的,写的很全面,仅供自己使用 转载地:http://www.jianshu.com/p/ad3830095fb3 https://www.cnblogs.com/kangjianwei ...
- 51 nod 1007 正整数分组 (简单01背包) && csu 1547: Rectangle
http://www.51nod.com/onlineJudge/questionCode.html#problemId=1007¬iceId=15020 求出n个数的和sum,然后用s ...
- UVA 140_Bandwidth
题意: 定义一个结点的带宽是其距离所有相连结点的最远距离,一个图的带宽是图中所有结点带宽的最小值.给出一个图中各个结点的相邻情况,要求写出一个结点的排列,使得其所构成的图带宽最小. 分析: 枚举全排列 ...
- 第一个Spring程序(DI的实现)
一,依赖注入:Dependency Injection(DI)与控制反转(IoC),不同角度但是同一个概念.首先我们理解一点在传统方式中我们使用new的方式来创建一个对象,这会造成对象与被实例化的对象 ...
- Redis集群方案收集
说明: 如果不考虑客户端分片去实现集群,那么市面上基本可以说就三种方案最成熟,它们分别如下所示: 系统 贡献者 是否官方Redis实现 编程语言 Twemproxy Twitter 是 C Redis ...
- Servlet的HTTP状态码
以下内容引用自http://wiki.jikexueyuan.com/project/servlet/http-status-codes.html: HTTP请求的格式和HTTP响应消息的格式是相似的 ...
- Sqlserver数据库发送邮件
目录 1. Sqlserver数据库发送邮件 1.1. 概念了解 1.2. 配置 1.3. 测试发送邮件 1.3.1. 代码测试 1.3.2. 工具测试 1.4. 查看邮件日志 1. Sqlserve ...