日期:2014-05-18 浏览次数:21195 次
using System;
using System.Collections.Generic;
using System.Text;
using System.ComponentModel;
using System.Runtime.CompilerServices;
using System.IO;
using System.Web;
namespace AUV5.Common
{
public class FormatConverter
{
//FFmpeg配置信息
private string ffmpegpath = "/FFmpeg/ffmpeg.exe";//FFmpeg的服务器路径
private string imgsize = "400*300"; //视频截图大小
private string videosize = "480*360"; //视频大小
#region 也可将信息添加到配置文件中
//public static string ffmpegpath = ConfigurationManager.AppSettings["ffmpeg"];
//public static string imgsize = ConfigurationManager.AppSettings["imgsize"];
//public static string videosize = ConfigurationManager.AppSettings["videoize"];
#endregion
private string destVideo = "";
/// <summary>
/// 视频路径
/// </summary>
public string DestVideo
{
get { return destVideo; }
set { destVideo = value; }
}
private string destImage = "";
/// <summary>
/// 图片路径
/// </summary>
public string DestImage
{
get { return destImage; }
set { destImage = value; }
}
/// <summary>
/// 视频长度
/// </summary>
public string VideoLength { get; set; }
//文件类型
public enum VideoType
{
[Description(".avi")]
AVI,
[Description(".mov")]
MOV,
[Description(".mpg")]
MPG,
[Description(".mp4")]
MP4,
[Description(".flv")]
FLV
}
/// <summary>
/// 返回枚举类型的描述信息
/// </summary>
/// <param name="myEnum"></param>
/// <returns></returns>
private string GetDiscription(System.Enum myEnum)
{
System.Reflection.FieldInfo fieldInfo = myEnum.GetType().GetField(myEnum.ToString());
object[] attrs = fieldInfo.GetCustomAttributes(typeof(DescriptionAttribute), true);
if (attrs != null && attrs.Length > 0)
{
DescriptionAttribute desc = attrs[0] as DescriptionAttribute;
if (desc != null)
{
return desc.Description.ToLower();
}
}
return myEnum.ToString();
}
//将GetDesCription定义为扩展方法,需.net3.5
//public static string Description(this Enum myEnum)
//{
// return GetDiscription(myEnum);
//}
//构造函数
//创建目录
public FormatConverter()
{
}
#region 使用FFmpeg进行格式转换
/// <summary>
/// 运行格式转换
/// </summary>
/// <param name="sourceFile">要转换文件绝对路径</param>
/// <param name="destPath">转换结果存储的相对路径</param>
/// <param name="videotype">要转换成的文件类型</param>
/// <param name="createImage">是否生成截图</param>
/// <returns>
/// 执行成功返回空,否则返回错误信息
/// </returns>
public string Convert(string sourceFile, string destPath,string uniquename, VideoType videotype, bool createImage,bool getDuration)
{
//取得ffmpeg.exe的物理路径
string ffmpeg = System.Web.HttpContext.Current.Server.MapPath(ffmpegpath);
if (!File.Exists(ffmpeg))
{
return "找不到格式转换程序!";
}