Your Ad Here
首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 编程语言 > .NET > C#.NET > 截取视频文件第一桢的图片和转换视频格式文件为flv
【标  题】:截取视频文件第一桢的图片和转换视频格式文件为flv
【关键字】:flv
【来  源】:http://blog.csdn.net/kbh1983/archive/2007/04/17/1567417.aspx

截取视频文件第一桢的图片和转换视频格式文件为flv

Your Ad Here
支持文件格式:asf,avi,mpg,flv,3gp,mov,wmv
 

public class CatchFlv
{
    public CatchFlv()
    {
    }
    /**/
    /// <summary>
    /// @从视频文件截图,生成在视频文件所在文件夹
    /// 支持文件格式:asf,avi,mpg,flv,3gp,mov,wmv
    /// 在Web.Config 中需要两个前置配置项:
    /// 1.ffmpeg.exe文件的路径
    /// <add key="ffmpeg" value="\thread\ffmpeg\ffmpeg.exe" />
    /// 2.截图的尺寸大小
    /// <add key="CatchFlvImgSize" value="140x110" />
    /// 3.视频处理程序ffmpeg.exe
    /// </summary>
    /// <param name="vFileName">视频文件绝对或相对地址,如:(..)/Web/FlvFile/User1/001.avi</param>
    /// <returns>成功:返回图片绝对/相对地址; 失败:返回空字符串</returns>
    public static string CatchImg(string vFileName)
    {
        try
        {
            string ffmpeg = System.Configuration.ConfigurationSettings.AppSettings["ffmpeg"];
            ffmpeg = HttpContext.Current.Server.MapPath(ffmpeg);

            if ((!System.IO.File.Exists(ffmpeg)) || (!System.IO.File.Exists(System.Web.HttpContext.Current.Server.MapPath(vFileName))))
            {
                return "";
            }

            //获得图片相对路径/最后存储到数据库的路径,如:/Web/FlvFile/User1/00001.jpg
            string flv_img = System.IO.Path.ChangeExtension(vFileName, ".jpg");

            //图片绝对路径,如:D:\Video\Web\FlvFile\User1\0001.jpg
            string flv_img_p = HttpContext.Current.Server.MapPath(flv_img);

            //截图的尺寸大小,配置在Web.Config中,如:<add key="CatchFlvImgSize" value="140x110" />
            string FlvImgSize = System.Configuration.ConfigurationSettings.AppSettings["CatchFlvImgSize"];

            System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo(ffmpeg);
            startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Normal;

            //此处组合成ffmpeg.exe文件需要的参数即可,此处命令在ffmpeg 0.4.9调试通过
            startInfo.Arguments = " -i " + System.Web.HttpContext.Current.Server.MapPath(vFileName) + " -y -f image2 -t 0.001 -s " + FlvImgSize + " " + flv_img_p;
            try
            {
                System.Diagnostics.Process.Start(startInfo);
            }
            catch
            {
                return "";
            }
            System.Threading.Thread.Sleep(4000);
            /**/
            ///注意:图片截取成功后,数据由内存缓存写到磁盘需要时间较长,大概在3,4秒甚至更长;
            if (System.IO.File.Exists(flv_img_p))
            {
                return flv_img;
            }
            return "";
        }
        catch
        {
            return "";
        }

    }

    /**/
    /// <summary>
    /// @视频文件格式转换,生成在视频文件所在文件夹
    /// 支持文件格式:asf,avi,mpg,flv,3gp,mov,wmv
    /// 在Web.Config 中需要两个前置配置项:
    /// 1.ffmpeg.exe文件的路径
    /// <add key="ffmpeg" value="\thread\ffmpeg\ffmpeg.exe" />
    /// 2.截图的尺寸大小
    /// <add key="CatchFlvSize" value="240x180" />
    /// 3.视频处理程序ffmpeg.exe
    /// </summary>
    /// <param name="vFileName">视频文件绝对或相对地址,如:(..)/Web/FlvFile/User1/001.avi</param>
    /// <returns>成功:返回flv文件绝对/相对地址; 失败:返回空字符串</returns>
    public static string ChangeMediaFormat(string vFileName)
    {
        try
        {
            string ffmpeg = System.Configuration.ConfigurationSettings.AppSettings["ffmpeg"];
            string wks_url = System.Configuration.ConfigurationSettings.AppSettings["wks_local"];
            ffmpeg = wks_url + ffmpeg;
            if ((!System.IO.File.Exists(ffmpeg)) || (!System.IO.File.Exists(wks_url + vFileName)))
            {
                return "";
            }

            string flv_fot = System.IO.Path.ChangeExtension(vFileName, ".flv");
            string flv_fot_p = wks_url + flv_fot;

            //尺寸大小,配置在Web.Config中,如:<add key="CatchFlvSize" value="240x180" />
            string FlvImgSize = System.Configuration.ConfigurationSettings.AppSettings["CatchFlvSize"];

            System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo(ffmpeg);
            startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Normal;

            //此处组合成ffmpeg.exe文件需要的参数即可,此处命令在ffmpeg 0.4.9调试通过
            startInfo.Arguments = " -i " + wks_url + vFileName + " -ab 56 -ar 22050 -b 500 -r 15 -s  " + FlvImgSize + " " + flv_fot_p;

            try
            {
                System.Diagnostics.Process.Start(startInfo);
            }
            catch
            {
                return "";
            }

            /**/
            ///注意:文件格式转换成功后,数据由内存缓存写到磁盘需要时间较长,大概在3,4秒甚至更长;
            System.Threading.Thread.Sleep(6000);
            if (System.IO.File.Exists(flv_fot_p))
            {
                WKS.Common.ImagesSet.DeleteOleImg(wks_url + vFileName);
                return flv_fot;
            }

            return "";
        }
        catch
        {
            return "";
        }
    }
}

但是,这种方法不知道ffmpeg什么时候生成结果,生成什么样的结果,因此也存在一定局限性.

 
ASP.NET 验证码:【上一篇】
XP中重新安装Outlook Express:【下一篇】
【相关文章】
  • [发布]猫岛FLV智能转换服务器系统[视频分享网站后台服务]
  • flv文件中data packet的size含义。
  • 关于其他视频文件向.flv文件转换的问题
  • 截取视频文件第一桢的图片和转换视频格式文件为flv(支持文件格式:asf,avi,mpg,flv,3gp,mov,wmv)
  • php与视频播放flv全接触
  • Flash MX 2004 FLV视频处理
  • 【随机文章】
  • C#中多重委托(Multicast Delegate)的例子
  • tru64 unix 多用户登陆lic
  • [转载]GBIC 说明
  • 编写可复用性更好的C++代码——Band对象和COMToys(六)
  • Apache下的虚拟主机设置
  • 在线程中访问UI控件
  • JavaScript隐藏Script代码
  • list的深入学习
  • REHL AS4 下安装 CVS
  • 主板识别
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 bbb软讯网络 All Rigths Reserved.