ffmpeg 視訊截圖
阿新 • • 發佈:2021-07-08
(1)https://bbs.huaweicloud.com/blogs/243409 可以根據此地址來下載ffmpeg
(2)程式碼實現
/// <summary> /// 藉助ffmpeg生成縮圖 /// </summary> /// <param name="originalFilePath">原始檔</param> public string GenerateThumbnail(string originalFilePath) { try {//判斷系統型別 //如果是windows,直接使用ffmpeg.exe //如果是linux,則使用安裝的ffmpeg(需要提前安裝) /* Linux工具呼叫:ffmpeg -i 333.jpg -q:v 31 -frames:v 1 -y image.jpg windows: ffmpeg.exe -i 333.jpg -q:v 31 -frames:v 1 -y image.jpg -i 333.jpg 是輸入檔案 -q:v 31 是質量,值區間是2-31 -frames:v 1 是提取幀必要引數 -y 是遇到同名檔案則覆蓋 image.jpg 輸出檔名 還可以加 -s 160*100 表示輸出寬高比為160*100*/ string imgName = DateTime.Now.Ticks.ToString("x"); string flv_img_p = System.Web.HttpContext.Current.Server.MapPath(imgName + ".jpg"); string cmdPath = "ffmpeg.exe";//ffmpeg工具物件 //截圖的尺寸大小 string FlvImgSize = ConfigurationManager.AppSettings["CatchFlvImgSize"]; string cmdParams = $" -i {originalFilePath} -q:v 31 -frames:v 1 -y {flv_img_p} ";//命令引數 //if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) //{ // cmdPath = "ffmpeg.exe";//根據實際的ffmpeg.exe檔案路徑來 //} //else if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux)) //{ // cmdPath = "ffmpeg";//安裝ffmpeg工具 //} //else //{ // throw new Exception("當前作業系統不支援!"); //} using (System.Diagnostics.Process ffmpegProcess = new System.Diagnostics.Process()) { StreamReader errorReader; ffmpegProcess.StartInfo.UseShellExecute = false; ffmpegProcess.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden; ffmpegProcess.StartInfo.RedirectStandardError = true; ffmpegProcess.StartInfo.FileName = cmdPath; ffmpegProcess.StartInfo.Arguments = cmdParams; ffmpegProcess.Start(); errorReader = ffmpegProcess.StandardError; ffmpegProcess.WaitForExit(); } return flv_img_p; } catch (Exception ex) { throw new Exception("生成視訊截圖出錯!", ex); } }