独上高楼网站
  •    你所在位置:首页 VS.netASP.net开发〉Asp.net FMS 开发视频网站
  • Asp.net FMS 开发视频网站
  • 作者:佚名  文章来源:http://www.knowsky.com/developer.asp  发布日期:2007-08-25  浏览次数:1130
  • 打印这篇文章
  •      昨天看到利用FMS(Flash Media Server)做在线视频录制的资料,地址:http://www.cincn.com/article.asp?id=15,还有播放流式FLV文件的资料,地址:http://blogs.ugidotnet.org/kfra/archive/2006/10/04/50003.aspx,很好,把我高兴坏了,所以有了FMS架设视频服务器的想法, ,主要内容如下:

    asp.netFMS.jpg

    开发步骤:
    1。下载FMS http://blogs.ugidotnet.org/kfra/archive/2006/10/04/50003.aspx,安装配置。
    2。使用flash制作FMS视频采集的控件。
    3。aspx页面嵌入FMS采集控件,运行采集数据上传到FMS服务器,修改数据库的视频文件存放地址。
    4。页面嵌入Flash播放控件,加入FLV处理流代码:

     1using System;
     2using System.IO;
     3using System.Web;
     4
     5
     6/// 
     7/// Summary description for FLVStreaming
     8/// 

     9public class FLVStreaming : IHttpHandler
    10{
    11    private static readonly byte[] _flvheader = HexToByte("464C5601010000000900000009"); //"FLV\x1\x1\0\0\0\x9\0\0\0\x9"
    12
    13    public FLVStreaming()
    14    {
    15    }

    16
    17    public void ProcessRequest(HttpContext context)
    18    {
    19        try
    20        {
    21            int pos;
    22            int length;
    23
    24            // Check start parameter if present
    25            string filename = Path.GetFileName(context.Request.FilePath);
    26
    27            using (FileStream fs = new FileStream(context.Server.MapPath(filename), FileMode.Open, FileAccess.Read, FileShare.Read))
    28            {
    29                string qs = context.Request.Params["start"];
    30
    31                if (string.IsNullOrEmpty(qs))
    32                {
    33                    pos = 0;
    34                    length = Convert.ToInt32(fs.Length);
    35                }

    36                else
    37                {
    38                    pos = Convert.ToInt32(qs);
    39                    length = Convert.ToInt32(fs.Length - pos) + _flvheader.Length;
    40                }

    41
    42                // Add HTTP header stuff: cache, content type and length        
    43                context.Response.Cache.SetCacheability(HttpCacheability.Public);
    44                context.Response.Cache.SetLastModified(DateTime.Now);
    45
    46                context.Response.AppendHeader("Content-Type""video/x-flv");
    47                context.Response.AppendHeader("Content-Length", length.ToString());
    48
    49                // Append FLV header when sending partial file
    50                if (pos > 0)
    51                {
    52                    context.Response.OutputStream.Write(_flvheader, 0, _flvheader.Length);
    53                    fs.Position = pos;
    54                }

    55
    56                // Read buffer and write stream to the response stream
    57                const int buffersize = 16384;
    58                byte[] buffer = new byte[buffersize];
    59                
    60                int count = fs.Read(buffer, 0, buffersize);
    61                while (count > 0)
    62                {
    63                    if (context.Response.IsClientConnected)
    64                    {
    65                        context.Response.OutputStream.Write(buffer, 0, count);
    66                        count = fs.Read(buffer, 0, buffersize);
    67                    }

    68                    else
    69                    {
    70                        count = -1;
    71                    }

    72                }

    73            }

    74        }

    75        catch (Exception ex)
    76        {
    77            System.Diagnostics.Debug.WriteLine(ex.ToString());
    78        }

    79    }

    80
    81    public bool IsReusable
    82    {
    83        get return true; }
    84    }

    85
    86    private static byte[] HexToByte(string hexString)
    87    {
    88        byte[] returnBytes = new byte[hexString.Length / 2];
    89        for (int i = 0; i < returnBytes.Length; i++)
    90            returnBytes[i] = Convert.ToByte(hexString.Substring(i * 22), 16);
    91        return returnBytes;
    92    }

    93
    94}

    95
    修改配置文件,运行页面即可调出视频,播放速度很不错。虽说轻描淡写但已经给出应用Asp.net开发视频网站的思路。如果有兴趣可以联系我。如转载请注明来源、作者及出处,谢谢 。
    posted on 2007-06-13 14:59 秀才 阅读(2737) 评论(21)  编辑 收藏 引用 网摘

    评论

    # re: Asp.net FMS 开发视频网站 2007-06-13 15:25 wang.seraph
    有考虑到把常用的视频格式转换为flv吗?
    我觉得应该加入这个处理流程  回复  更多评论
      

    # re: Asp.net FMS 开发视频网站 2007-06-13 15:49 城市
    "FMS研究社"
    讨论与FMS/Red5(视频/MUG)以及Socket通讯相关技术,为增强群专注性入群须回答问题请谅
    Q群号: 38663927 期待你的加入:)
      回复  更多评论
      

    # re: Asp.net FMS 开发视频网站 2007-06-13 16:48 ruanyp
    也可以用silverlight  回复  更多评论
      

    # re: Asp.net FMS 开发视频网站 2007-06-13 17:06 wuhouci
    应该加入这个处理流程,可以解决上传格式不同的问题  回复  更多评论
      

    # re: Asp.net FMS 开发视频网站[未登录] 2007-06-13 17:25 overred
    沙发应该是我,被删拉,好失望


    有考虑到把常用的视频格式转换为flv吗?
    以前做在服务器端使用msmq转换到flv,支持多格式  回复  更多评论
      

    # re: Asp.net FMS 开发视频网站 2007-06-13 17:43 秀才
    明天还有续集,拭目以待吧  回复  更多评论
      

    # re: Asp.net FMS 开发视频网站[未登录] 2007-06-13 19:40 KEN
    你这的确太粗略了。
      回复  更多评论
      

    # re: Asp.net FMS 开发视频网站 2007-06-13 20:27 Phinecos(洞庭散人)
    常用的视频格式转换为flv,对这个感兴趣  回复  更多评论
      

    # re: Asp.net FMS 开发视频网站 2007-06-13 20:44 摄狼
    Flash Media Server?这个咚咚好像很不便宜阿!你打算自己用还是放到网上?Flash Media Server可以做在线视频录制,除了这个,单独的播放不需要的吧!  回复  更多评论
      

    # re: Asp.net FMS 开发视频网站 2007-06-13 22:13 YAO.NET℡
    fms太贵了,建议采用red5
      回复  更多评论
      

    # re: Asp.net FMS 开发视频网站 2007-06-13 22:19 YAO.NET℡
    另外,采用输出流的形式不适合用在视频这种大数据量的输出上.你上几百号人访问你的服务器试试,你自己一个人访问快没用.
    Flash播放flv有常见二种方式,一种是http的传统文件下载方式.一种还是利用fms服务器做为播放源,地址会是"rtmp://ip/file.flv"这种格式.
      回复  更多评论
      

    # re: Asp.net FMS 开发视频网站 2007-06-14 09:21 秀才
    谢谢大家跟贴,对于常用的视频格式转换为flv,我这里有一种处理方式稍后介绍给大家。  回复  更多评论
      

    # re: Asp.net FMS 开发视频网站 2007-06-14 09:47 秀才
    对于FMS免费的很多了,找破解版的吧
      回复  更多评论
      

    # re: Asp.net FMS 开发视频网站[未登录] 2007-06-14 13:05 路人甲
    曾经研究过,带宽是问题~~~  回复  更多评论
      

    # re: Asp.net FMS 开发视频网站 2007-06-14 20:57 YAO.NET℡
    找破解是很容易的事,但是要商业应用,用破解不可取,除非你一开始就没想过做大.不过话说回来,现在再做视频也很难做大.


      回复  更多评论
      

    # 视频格式转化为FLV (C#)[TrackBack] 2007-06-19 14:42 mbskys
    在上次随笔Asp.netFMS开发视频网站中,好多朋友提到其他视频格式转化成FLV格式的问题,经过网上搜索资料研习整理,现经我的一点思路分享给大家:
    [引用提示]mbskys引用了该文章, 地址: http://www.cnblogs.com/mbskys/archive/2007/06/19/789025.html  回复  更多评论
      

    # re: Asp.net FMS 开发视频网站 2007-06-19 16:53 mesou
    我以前也是在线转换rm rmvb wmv 后来用软件直接从别的网站down

    自己干,手里没有片源,很郁闷  回复  更多评论
      

    # re: Asp.net FMS 开发视频网站 2007-07-03 09:49 冰凝
    有做好的实例吗,照着做还是有问题啊  回复  更多评论
      

    # 视频格式转化为FLV (C#) [TrackBack] 2007-07-18 18:23 赵国亮
    [引用提示]赵国亮引用了该文章, 地址: http://www.cnblogs.com/hszfzjd/archive/2007/07/18/822892.html  回复  更多评论
      

    # re: Asp.net FMS 开发视频网站[未登录] 2007-07-30 10:27 aa
    好东西 ,顶以下  回复  更多评论
      

    # re: Asp.net FMS 开发视频网站 2007-08-17 15:18 yiliu
    我想实现FLASH视频直播,
    FMS要安在服务器上吧?
    我现在能把本机的摄像头视频内容抓到FLASH中,
    在本地机演示可以,
    本地的局网也可以
    但放到公网上,怎么做,就不会了,
    正在找资料,
    我的功能要求较简单
    只要把摄像头的视频内容公开到网上,
    这样我每天在做什么,家人都可以看到了。  回复  更多评论
  • 打印这篇文章
  • 与本文主题相关的文章
  • 返回首页