C#视频取帧图的比较靠谱方法
由于项目里页面有许多视频资料需要展示给用户查看,因此需要做一个视频列表,原设计是列表显示视频第一帧图,但实际上很多视频第一帧是纯黑底色。
于是想到用js利用canvas截图,最后发现由于浏览器跨域限制,这种方法只能取内部视频的帧图。问题是,现在谁还把大量视频资料放在自己的服务器上呢,那不是找死吗。。。。唉。。。。
没办法,只能再想招了,最后只能用c#后台逐个视频取对应帧图,然后跟视频路径一起存放到视频数据记录表里的办法。
本文只贴出C#后台取视频的帧图的代码。
首先,需要下载ffmpeg这个专业的视频处理工具,网上很地方都可以下,也可以点击这里去下载。实现本文功能,只需要包里的ffmpeg.exe这个可执行文件,将他复制一份到项目文件夹下——自己根据需要放一个合理的地方,本文是放在bin文件夹下。
然后就是代码咯:
/// <summary>/// 从视频画面中截取一帧画面为图片/// </summary>/// <param name="videoName">视频文件pic/guiyu.mov</param>/// <param name="widthAndHeight">图片的尺寸如:240*180</param>/// <param name="cutTimeFrame">开始截取的时间如:"1"</param>/// <returns></returns>public string GetPicFromVideo(string videoName, string widthAndHeight, string cutTimeFrame){var vdoName = videoName.Substring(videoName.LastIndexOf("/") + 1);var fileName = vdoName.Split('.')[0];var basePath = Server.MapPath("~");var ffmpeg = basePath + "bin\\ffmpeg.exe";var srcName = basePath + videoName.Replace("/","\\");var objName = basePath + "Images\\VideoCover\\" + 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;try{Process.Start(startInfo);return "/Images/VideoCover/" + fileName + ".jpg";}catch (Exception re){Log.WriteLog(re.Message);return "";}}//调用举例:
var re = GetPicFromVideo("video/MyTest.mov", "160*100", "1");
C#视频取帧图的比较靠谱方法相关推荐
- OpenCV的本地相机抓图和本地视频取帧
写在前面的话 这篇也是回顾总结自己使用opencv的一次经历,也是自己摸索学习的,内容有限,如果错误,欢迎更正. 1. python的opencv相机抓图 先放下demo: import cv2 as ...
- python把视频取帧_python按帧数提取视频为图片
1 场景 使用python,将视频按照帧数提取为图片. 2 版本 python:3.6.3 3 依赖 安装cv2依赖 pip install opencv-python 4 代码 4.1 引入依赖 i ...
- python做视频抽帧图_Python提取视频中图片的示例(按帧、按秒)
一.按帧提取 #coding=utf-8 import os import cv2 def save_img(): #提取视频中图片 按照每帧提取 video_path = r'd:\\test\\' ...
- python做视频抽帧图_python-opencv-视频截取帧图片
import cv2 #file_list = ['{}'.format(os.path.join(file_dir, dir, file_name)) for dir in os.listdir(f ...
- python把视频取帧_用Python提取视频帧
我想提取视频帧并保存为图像.import os, sys from PIL import Image a, b, c = os.popen3("ffmpeg -i test.avi" ...
- python把视频取帧_Python批量截取视频某一帧
该文讲了如何调用opencv这个包对一个视频的某段时间进行均匀截多张图图(当然也可以是多个时间,也可以是不均匀时间,也可以是单张图片-都是可以自己定的呀) 大家都是成熟的Python人了,所以很多细节 ...
- python做视频抽帧图_利用Python和ffmpeg从视频中抽帧,此方法比opencv抽帧法快。
原博文 2020-03-26 09:34 − import subprocess import os import subprocess import shutil #目录文件不存在则自动创建,存在则 ...
- 用ffmpeg视频抽帧小结
视频截取 QQ影音 -> 打开视频 -> 工具 -> 截取 视频取帧 ffmpeg -i video.mp4 frames_%05d.png 帧合并为视频 ffmpeg -i fra ...
- (无报错)Java截取视频生成Gif动图 视频转gif动态图 视频截帧取图 java实现方式
不废话直接上代码 1.maven坐标 <!-- 视频截图 --><dependency><groupId>org.bytedeco</groupId>& ...
最新文章
- 第十六届智能车竞赛广东省线上比赛第二波来袭
- ERROR: cannot launch node of type [robot_pose_publisher/robot_pose_publisher]: robot_pose_publisher
- Retrofit解析网页Json数据简单实例
- ORACLE 11G DATA GUARD主从切换
- iOS:苹果内购实践
- cesium入门示例-3dTiles加载
- c语言提取七位数讲解,输入一个七位数将这个数的奇位数重新组合成新的四位数并输出的编程怎么写 在线等急...
- 用户注册与登陆(验证和数据库)
- Automatic Updates服务无法启动
- redis数据类型之List入门练习
- YYKit 源码探究
- 如何优雅的在word打公式
- 轩小陌的Python笔记-day09 文件操作相关
- http保持状态的4种方法
- win7计算机资源管理器卡住,Win7电脑资源管理器一直卡住怎么办_Win7电脑资源管理器一直卡住的解决方法 - 系统家园...
- 求解矩阵特征值的QR算法
- dellR720运用U盘安装windows2008R2系统指导
- 武林外传手游怎么在电脑上玩,武林外传安卓模拟器电脑版教程
- 量子计算机没有热量,最新研究:量子气体不会带走热量
- 【luogu AGC035E】Develop(分类讨论)(DP)