1

视频的路径(extension.wmv,.avi)存储在 SQL Server 中。我必须创建缩略图并将其显示在 ASPX 页面上。

如果有人知道这一点,请分享它的代码。

提前致谢

4

2 回答 2

0

我有一些用于生成缩略图视频的代码。

为此,您需要免费提供名为“ffmpeg.exe”的第三方 exe。你可以从 这里下载

现在我在下面创建了从原始视频生成缩略图视频的功能。您可以根据您的要求更改变量。

private bool SaveVideo(FileUpload fupload)
{

    string VideoResolutionWidth = "400" ; //define video res. width
    string VideoResolutionHeight = "280";  //define video res. height
    string VideoThumbWidth = "100";//define jpg res. width
    string VideoThumbHeight = "100"; //define jpg res. height

    string VideoLocation = HttpContext.Current.Server.MapPath("~/ConverterFolder/Video/");
    string ConverterPath = HttpContext.Current.Server.MapPath("~/ConverterFolder/");
    String LargeFileName = "TestVideo.wmv"; // Thumb Video file name
    string ThumbFileName= "Testvideo.jpg";

    // Save Original video file first

    if (fupload.PostedFile.FileName != "")
    {
        fupload.PostedFile.SaveAs(ConverterPath + "\\" + System.IO.Path.GetFileName(fupload.PostedFile.FileName.Replace(" ", "_")));
    }

    if (System.IO.File.Exists(ConverterPath + "\\" + System.IO.Path.GetFileName(fupload.PostedFile.FileName.Replace(" ", "_"))))
    {
        string inipath = ConverterPath;
        string flvCMD, flvArg;
        string a_res_width, a_res_height, a_audioRate, a_frameRate, i_res_width, i_res_height;

        a_res_width = VideoResolutionWidth;
        a_res_height = VideoResolutionHeight;
          i_res_width = VideoThumbWidth;
        i_res_height = VideoThumbHeight;

        a_audioRate = "22050";
        a_frameRate = "15";

        string VideoThumbResolution = i_res_width + "x" + i_res_height;
        string VideoResolution = a_res_width + "x" + a_res_height;           
        String videoPATH = VideoLocation +  "\\" + LargeFileName.Replace(" ", "_");

        flvCMD = ConverterPath + "ffmpeg.exe";
        flvArg = "-i " + ConverterPath + "\\" + System.IO.Path.GetFileName(fupload.PostedFile.FileName.Replace(" ", "_")) + " -s " + VideoResolution + " -r " + a_frameRate + " -b 7500000 -ar " + a_audioRate + "  -ab 48 " + videoPATH;


        try
        {
            Process process = new Process();
            process.StartInfo.UseShellExecute = false;
            process.StartInfo.RedirectStandardOutput = true;
            process.StartInfo.RedirectStandardError = true;
            process.StartInfo.CreateNoWindow = true;
            process.StartInfo.FileName = flvCMD;
            process.StartInfo.Arguments = flvArg;
            process.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;

            process.Start();
            string output = process.StandardOutput.ReadToEnd();
            process.Close();
            process.Dispose();

            if (System.IO.File.Exists(videoPATH))
            {

                Process process1 = new Process();
                process1.StartInfo.UseShellExecute = false;
                process1.StartInfo.RedirectStandardOutput = true;
                process1.StartInfo.RedirectStandardError = true;
                process1.StartInfo.CreateNoWindow = true;
                process1.StartInfo.FileName = flvCMD;
                process1.StartInfo.Arguments = "-i " + ConverterPath + "\\" + System.IO.Path.GetFileName(fupload.PostedFile.FileName.Replace(" ", "_")) + " -an -ss 00:00:01 -r 1 -vframes 1 -s " + VideoThumbResolution + " -f mjpeg -y " + VideoLocation "\\" + ThumbFileName;
                process1.Start();
                string outputMeta1 = process1.StandardOutput.ReadToEnd();
                process1.Close();
                process1.Dispose();
            }
            else
            {
                return false;
            }
        }
        catch (Exception)
        {

        }


    }
    return true;
}

希望这会帮助你。快乐的编码......

于 2012-04-04T12:12:52.043 回答
0

对于 AVI,您可以使用以下代码项目

http://www.codeproject.com/Articles/7388/A-Simple-C-Wrapper-for-the-AviFile-Library

对于其他人尝试

http://sourceforge.net/projects/directshownet/

http://code.google.com/p/slimdx/

于 2012-04-04T11:29:39.903 回答