IIS服务器配置flv格式视频处理程序实现进度条随意拖动
2016-12-12 13:23
323 查看
视频网站如果选用flv为视频格式,对于flv格式视频的进度条能够随意拖动和视频未加载完可以实现边加载边播放的实现还需要进行额外的处理。
一、实现条件
1、视频未加载完且能够边加载边播放的条件
a、视频的元数据信息(metadata信息)要放到视频开始的头部。
b、采用的网页播放器要支持边加载边播放。
2、视频进度条可以拖动到未加载部分的条件
a、播放器要支持
b、flv视频要有关键帧和meta信息
c、服务器端要支持
二、解决方案
1、播放器
网上能够免费使用的网页播放器还是比较多的,可以搜个只要支持视频进度条拖动设置的就可以。我这里用的ckplayer播放器,关于这个播放的下载和使用请百度。
2、给flv视频加入关键帧和meta信息
采用的是yamdi:补全meta信息的工具,地址:http://yamdi.sourceforge.net/有windows版本,下载了直接用就好。
3、使用一般处理程序对返回的视频参数进行处理,新建一个一般处理程序,代码如下
4、配置config文件,可以手动添加以下代码,也可以在IIS中设置(推荐)
a、手动配置
1、双击站点的处理程序映射。
2、点击添加托管处理程序。
3、请求路径:*.flv,类型:点击下拉按钮会显示已经编译好的一般处理程序(在使用此设置前需要先编译),名称:FLVStreaming(写一般处理程序的类名或自定义)
5、第四步配置完成后如果不能实现,可以按照以下配置步骤添加IIS中的MIME类型。
双击MIME类型,点击添加,文件扩展名:.flv,MIME类型:application/octet-stream
一、实现条件
1、视频未加载完且能够边加载边播放的条件
a、视频的元数据信息(metadata信息)要放到视频开始的头部。
b、采用的网页播放器要支持边加载边播放。
2、视频进度条可以拖动到未加载部分的条件
a、播放器要支持
b、flv视频要有关键帧和meta信息
c、服务器端要支持
二、解决方案
1、播放器
网上能够免费使用的网页播放器还是比较多的,可以搜个只要支持视频进度条拖动设置的就可以。我这里用的ckplayer播放器,关于这个播放的下载和使用请百度。
2、给flv视频加入关键帧和meta信息
采用的是yamdi:补全meta信息的工具,地址:http://yamdi.sourceforge.net/有windows版本,下载了直接用就好。
3、使用一般处理程序对返回的视频参数进行处理,新建一个一般处理程序,代码如下
using System; using System.IO; using System.Web; public class FLVStreaming : IHttpHandler { private static readonly byte[] _flvheader = HexToByte("464C5601010000000900000009"); public FLVStreaming() { } public void ProcessRequest(HttpContext context) { try { int pos; int length; // Check start parameter if present string filename = Path.GetFileName(context.Request.FilePath); using (FileStream fs = new FileStream(context.Server.MapPath(filename), FileMode.Open, FileAccess.Read, FileShare.Read)) { string qs = context.Request.Params["start"]; if (string.IsNullOrEmpty(qs)) { pos = 0; length = Convert.ToInt32(fs.Length); } else { pos = Convert.ToInt32(qs); length = Convert.ToInt32(fs.Length - pos) + _flvheader.Length; } // Add HTTP header stuff: cache, content type and length context.Response.Cache.SetCacheability(HttpCacheability.Public); context.Response.Cache.SetLastModified(DateTime.Now); context.Response.AppendHeader("Content-Type", "video/x-flv"); context.Response.AppendHeader("Content-Length", length.ToString()); // Append FLV header when sending partial file if (pos > 0) { context.Response.OutputStream.Write(_flvheader, 0, _flvheader.Length); fs.Position = pos; } // Read buffer and write stream to the response stream const int buffersize = 16384; byte[] buffer = new byte[buffersize]; int count = fs.Read(buffer, 0, buffersize); while (count > 0) { if (context.Response.IsClientConnected) { context.Response.OutputStream.Write(buffer, 0, count); //Starts sending to client right away context.Response.Flush(); count = fs.Read(buffer, 0, buffersize); } else { count = -1; } } } } catch (Exception ex) { System.Diagnostics.Debug.WriteLine(ex.ToString()); } } public bool IsReusable { get { return true; } } private static byte[] HexToByte(string hexString) { byte[] returnBytes = new byte[hexString.Length / 2]; for (int i = 0; i < returnBytes.Length; i++) returnBytes[i] = Convert.ToByte(hexString.Substring(i * 2, 2), 16); return returnBytes; } }
4、配置config文件,可以手动添加以下代码,也可以在IIS中设置(推荐)
a、手动配置
<?xml version="1.0" encoding="UTF-8"?> <configuration> <system.webServer> <handlers> <add name="FLVStreaming" path="*.flv" verb="*" type="FLVStreaming" resourceType="Unspecified" preCondition="integratedMode" /> </handlers> </system.webServer> </configuration>b、IIS中设置
1、双击站点的处理程序映射。
2、点击添加托管处理程序。
3、请求路径:*.flv,类型:点击下拉按钮会显示已经编译好的一般处理程序(在使用此设置前需要先编译),名称:FLVStreaming(写一般处理程序的类名或自定义)
5、第四步配置完成后如果不能实现,可以按照以下配置步骤添加IIS中的MIME类型。
双击MIME类型,点击添加,文件扩展名:.flv,MIME类型:application/octet-stream
相关文章推荐
- IIS虚拟目录内的视频文件访问出错:HTTP 错误 404.3 - Not Found 由于扩展配置问题而无法提供您请求的页面。如果该页面是脚本,请添加处理程序。如果应下载文件,请添加 MIME 映射。
- 视频支持拖动进度条播放的实现(基于nginx)
- IIS配置asp.net网站出现错误:请求的内容似乎是脚本,因而将无法由静态文件处理程序来处理
- iis win8由于扩展配置问题而无法提供您请求的页面。如果该页面是脚本,请添加处理程序
- FLV视频播放:对未缓冲进度条实现拖动
- 配置scut协议生成器的时候需要配置iis,出现常见错误——Win7中IIS出现“HTTP 错误 404.17 - Not Found 请求的内容似乎是脚本,因而将无法由静态文件处理程序来处理。
- Windows服务器环境下flv视频播放——对未缓冲进度条实现拖动
- IIS7.5配置IIS脚本映射实现Asp.Net的Http管道程序
- IIS7.5配置Asp.net项目出现HTTP 错误 404.17 - Not Found 请求的内容似乎是脚本,因而将无法由静态文件处理程序来处理。
- 把WCF服务部署服务器IIS异常(详细:处理程序“svc-Integrated”在其模块列表中有一个错误模块“ManagedPipelineHandler”)
- windows 2012(64位) IIS配置asp程序 500 - 内部服务器错误。您查找的资源存在问题,因而无法显示。
- windows2008下配置iis时出现错误“由于扩展配置问题而无法提供您请求的页面。如果该页面是脚本,请添加处理程序。如果应下载文件,请添加 MIME 映射。”
- IIS 报错500.13,服务器太忙,此时无法处理请求,通讯量超出网站的配置能力
- VS2013 利用msvsmon远程调试发布到服务器IIS上程序环境配置
- 处理WIN2003服务器IIS被挂马全过程(配置文件高级挂马)
- windows下IIS让flv视频网站进度条随意拖放[C#]
- apache配置视频随意拖动播放功能
- IIS配置遇到的问题—— 处理程序“PageHandlerFactory-Integrated”在其模块列表中有一个错误模块“ManagedPipelineHan
- 实现winfrom进度条及进度信息提示,winfrom程序假死处理
- html借助一般处理程序实现文件上传到服务器