1. 程式人生 > >生成視訊任意幀的縮圖

生成視訊任意幀的縮圖

        /******************************************
         * 根據ffmpeg生成視訊的縮圖
         * ffmpeg的下載地址:http://download.csdn.net/detail/chao88552828/9249353
         *****************************************/
        /// <summary>
        /// 生成視訊縮圖
        /// </summary>
        private void GenThupImage()
        {
            string ffmpegPath = @"C:\Users\Administrator\Desktop\ffmpeg\ffmpeg\bin\ffmpeg.exe";//為ffmpeg的全路徑
            string oriVideoPath = @"E:\8_Ent\速度Y激情7_bd.mp4";//為視訊的全路徑
            int frameIndex = 10;//為幀處在的秒數
            int thubWidth = 80;//為縮圖的寬度
            int thubHeight = 80; //為縮圖的高度
            string thubImagePath = @"E:\2\2.jpg";//為生成的縮圖所在的路徑
            string command = string.Format("\"{0}\" -i \"{1}\" -ss {2} -vframes 1 -r 1 -ac 1 -ab 2 -s {3}*{4} -f image2 \"{5}\"", ffmpegPath, oriVideoPath, frameIndex, thubWidth, thubHeight, thubImagePath);
            Execute(command);
        }
        /// <summary>
        /// 呼叫cmd命令
        /// </summary>
        /// <param name="str"></param>
        private void Execute(string str)
        {

            System.Diagnostics.Process p = new System.Diagnostics.Process();
            p.StartInfo.FileName = "cmd.exe";
            p.StartInfo.UseShellExecute = false;    //是否使用作業系統shell啟動
            p.StartInfo.RedirectStandardInput = true;//接受來自呼叫程式的輸入資訊
            p.StartInfo.RedirectStandardOutput = true;//由呼叫程式獲取輸出資訊
            p.StartInfo.RedirectStandardError = true;//重定向標準錯誤輸出
            p.StartInfo.CreateNoWindow = true;//不顯示程式視窗
            p.Start();//啟動程式

            //向cmd視窗傳送輸入資訊
            p.StandardInput.WriteLine(str + "&exit");
            p.StandardInput.AutoFlush = true;
            //獲取cmd視窗的輸出資訊
            string output = p.StandardOutput.ReadToEnd();
            p.WaitForExit();//等待程式執行完退出程序
            p.Close();

        }