使用ffmpeg截取视频第一帧当做背景图

1、在官网下载ffmpeg,http://ffmpeg.org/download.html

我下载的是Windows 64的,如系统是Windows 32,请下载Windows 32-bit

下载完成后解压,得到如下图文件:

打开bin文件:

把bin文件夹所有.dll和.exe文件复制到项目bin文件夹下。

如果想通过cmd命令截取,需要将ffmpeg.exe的路径配置到环境变量里的Path里,可参考https://www.cnblogs.com/hbtmwangjin/articles/9519848.html  。

我这里是通过代码截取第一帧图片,保存到后台,并把图片路径保存到数据库中,没有配置环境变量也可以操作。

截取图片方法:

/// <summary>
        /// 从视频画面中截取一帧画面为图片
        /// </summary>
        /// <param name="videoName">视频文件路径pic/123.MP4</param>
        /// <param name="widthAndHeight">图片的尺寸如:240*180</param>
        /// <param name="cutTimeFrame">开始截取的时间如:"1s"</param>
        /// <returns>返回图片保存路径</returns>
        public static string GetPicFromVideo(string videoName, string widthAndHeight, string cutTimeFrame)
        {
            var vdoName = videoName.Substring(videoName.LastIndexOf("/") + 1);
            var fileName = vdoName.Split(‘.‘)[0];
            var dtime = DateTime.Now.ToString("yyyy-MM-dd");
            var basePath = System.Web.HttpContext.Current.Server.MapPath("~");
            var ImgPath = basePath + "upload\\Images\\" + dtime;
            //ffmpeg.exe路径
            var ffmpeg = basePath + "bin\\ffmpeg.exe";
            var srcName = basePath + videoName.Replace("/", "\\");

            if (!Directory.Exists(ImgPath))
            {
                Directory.CreateDirectory(ImgPath);
            }
            //保存截取图片后路径
            var objName = " "+ ImgPath + "\\"+  fileName + ".jpg";
            var startInfo = new ProcessStartInfo(ffmpeg);
            startInfo.WindowStyle = ProcessWindowStyle.Hidden;
            startInfo.Arguments = " -i " + srcName + " -y -f image2 -ss " + cutTimeFrame + " -t 0.001 -s " + widthAndHeight + " " + objName;
            //startInfo.UseShellExecute = false;
            //startInfo.CreateNoWindow = true;
            try
            {
                Process.Start(startInfo);
                //返回图片保存路径
                return "/upload/Images/" + dtime+"/" + fileName + ".jpg";
            }
            catch (Exception re)
            {
                //Log.WriteLog(re.Message);
                return "";
            }
        }

调用:

var  gb_img_scr = PicFromVideo.GetPicFromVideo(src, "160*300", "1");

原文地址:https://www.cnblogs.com/xinbaba/p/11363224.html

时间: 2024-10-05 18:46:34

使用ffmpeg截取视频第一帧当做背景图的相关文章

通过 ffmpeg 获取视频第一帧(指定时间)图片

最近做一个上传教学视频的方法,上传视频的同时需要上传视频缩略图,为了避免用户上传的缩略图与视频内容不符,经理要求直接从上传的视频中截图视频的某一帧作为缩略图,并给我推荐了FFMPEG.FFMPEG 功能很强大,做视频必备的软件. FFMPEG下载地址:https://ffmpeg.org/download.html 1.VideoThumbTaker.java 获取视频指定播放时间的图片 package video;import java.io.IOException;import java.i

截取视频第一帧作为预览图片

<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>capture screen</title> </head> <body> <video id="video" controls="controls"> <source src="123.MP4"

Android -- 获取视频第一帧缩略图

干货 从API 8开始,新增了一个类: android.media.ThumbnailUtils这个类提供了3个静态方法一个用来获取视频第一帧得到的Bitmap,2个对图片进行缩略处理. public static Bitmap createVideoThumbnail (String filePath, int kind) 第一个参数是视频文件的路径,第二个参数是指定图片的大小,有两种选择Thumbnails.MINI_KIND与Thumbnails.MICRO_KIND. 第一种文档上说大小

Android视频处理 --处理视频第一帧缩略图

从API 8开始,新增了一个类: android.media.ThumbnailUtils这个类提供了3个静态方法一个用来获取视频第一帧得到的Bitmap,2个对图片进行缩略处理. ? 1 public static Bitmap createVideoThumbnail (String filePath, int kind) 第一个参数是视频文件的路径,第二个参数是指定图片的大小,有两种选择Thumbnails.MINI_KIND与Thumbnails.MICRO_KIND. 第一种文档上说大

Android之使用ThumbnailUtils类来获取视频第一帧缩略图

一.首先,来介绍ThumbnailUtils类,此类位于android.media包下,此类有一个公有的无参构造函数,有三个静态的公有方法,一个用来获取视频第一帧得到的Bitmap,另外两个方法用来对图片进行缩略处理. 1.无参的构造函数:ThumbnailUtils() 2.三个静态的公有方法: (1).创建一个视频缩略图的方法: public static Bitmap createVideoThumbnail(String filePath, int kind) 第一个参数为视频文件的

Android之使用MediaMetadataRetriever类获取视频第一帧

一.首先,来介绍一下MediaMetadataRetriever类,此类位于android.media包下,这里,先附上可查看此类的API地址:MediaMetadataRetriever类.大家能够自行查看. 1.MediaMetadataRetriever类概述:MediaMetadataRetriever class provides a unified interface for retrieving frame and meta data from an input media fil

Java截取视频首帧并旋转正向

package test; import java.awt.Dimension; import java.awt.Graphics2D; import java.awt.Image; import java.awt.Rectangle; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.

关于video标签移动端开发遇到的问题,获取视频第一帧,全屏,自动播放,自适应等问题

最近一直在处理video标签在IOS和Android端的兼容问题,其中遇到不少坑,绝大多数问题已经解决,下面是处理问题经验的总结: 1.获取视频的第一帧作为背景图: 技术:canvas绘图 window.onload = function(){ var video = document.getElementById('video'); //使用严格模式 'use strict'; //第一帧图片与原视频的比例 var scal = 0.8; //监听页面加载事件 video.addEventLi

java获取视频第一帧工具类

java获取视频文件第一帧,为了防止黑画面,此例取第五帧,本例子采用maven形式 1. pom.xml 添加引用jar包 jdk采用1.8,日志自行添加即可,这里使用的是log4j2 <!-- log4j2 --> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-core</artifactId> <version>2.