ASP.NET 视频截图功能的C#代码
前公司在制作播客系统(Web程序)中,用到从视频截图功能.
下边是截图CatchImg方法,可从大多数的视频文件中截图成功,大家可测试;
如果截图不成功,大多是因为视频本身的问题,如编码标准或加了密.
但从在线录制的视频Flv文件中截图,还未发现截图失败;
/// @从视频文件截图,生成在视频文件所在文件夹
/// 在Web.Config 中需要两个前置配置项:
/// 1.ffmpeg.exe文件的路径
/// <add key="ffmpeg" value="E:\ffmpeg\ffmpeg.exe" />
/// 2.截图的尺寸大小
/// <add key="CatchFlvImgSize" value="240x180" />
/// 3.视频处理程序ffmpeg.exe
/// </summary>
/// <param name="vFileName">视频文件地址,如:/Web/FlvFile/User1/00001.Flv</param>
/// <returns>成功:返回图片虚拟地址; 失败:返回空字符串</returns>
public string CatchImg(string vFileName)
{
//取得ffmpeg.exe的路径,路径配置在Web.Config中,如:<add key="ffmpeg" value="E:\ffmpeg\ffmpeg.exe" />
string ffmpeg=System.Configuration.ConfigurationSettings.AppSettings["ffmpeg"];
if ( (!System.IO.File.Exists(ffmpeg)) || (!System.IO.File.Exists(vFileName)) )
{
return "";
}
//获得图片相对路径/最后存储到数据库的路径,如:/Web/FlvFile/User1/00001.jpg
string flv_img = System.IO.Path.ChangeExtension(vFileName,".jpg") ;
//图片绝对路径,如:D:\Video\Web\FlvFile\User1\0001.jpg
string flv_img_p = HttpContext.Current.Server.MapPath(flv_img);
//截图的尺寸大小,配置在Web.Config中,如:<add key="CatchFlvImgSize" value="240x180" />
string FlvImgSize=System.Configuration.ConfigurationSettings.AppSettings["CatchFlvImgSize"];
System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo(ffmpeg);
startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
//此处组合成ffmpeg.exe文件需要的参数即可,此处命令在ffmpeg 0.4.9调试通过
startInfo.Arguments = " -i " vFileName " -y -f image2 -t 0.001 -s " FlvImgSize " " flv_img_p ;
try
{
System.Diagnostics.Process.Start(startInfo);
}
catch
{
return "";
}
///注意:图片截取成功后,数据由内存缓存写到磁盘需要时间较长,大概在3,4秒甚至更长;
///这儿需要延时后再检测,我服务器延时8秒,即如果超过8秒图片仍不存在,认为截图失败;
///此处略去延时代码.如有那位知道如何捕捉ffmpeg.exe截图失败消息,请告知,先谢过!
if ( System.IO.File.Exists(flv_img_p))
{
return flv_img;
}//51aspx
return "";
}
顺便也探讨个问题,就是我无法从ffmpeg.exe捕捉截图失败消息~
不知大家可否有办法取得,我目前只能通过检测图片是否生成来判断成功与否,但时间较慢,因为这个检测程序就让用户要多等大概4,5秒时间.
转载于:https://www.cnblogs.com/top5/archive/2009/12/02/1615767.html
ASP.NET 视频截图功能的C#代码相关推荐
- 视频截图html,canvas与html5实现视频截图功能(示例代码)
这段时间一直在研究canvas,突发奇想想做一个可以截屏视频的功能,然后把图片拉去做表情包,哈哈哈哈哈哈~~ 制作方法: 1.在页面中加载视频 在使用canvas制作这个截图功能时,首先必须保证页面上 ...
- js截屏 video_canvas与html5实现视频截图功能
这段时间一直在研究canvas,突发奇想想做一个可以截屏视频的功能,然后把图片拉去做表情包,哈哈哈哈哈哈~~ 制作方法: 1.在页面中加载视频 在使用canvas制作这个截图功能时,首先必须保证页面上 ...
- android easyplayer截屏,EasyWasmPlayer H265播放器是如何实现视频截图功能的?
在我们做视频开发的过程中,会遇到不少需求,其中视频截图就是一个比较常见的需求,因此TSINGSEE青犀视频不管是在设计视频平台还是视频播放器的时候,我们都会在原有开发的基础上对视频截图进行一些功能拓展 ...
- html中图片切割视频,canvas与html5实现视频截图功能示例
这段时间一直在研究canvas,突发奇想想做一个可以截屏视频的功能,然后把图片拉去做表情包,哈哈哈哈哈哈~~ 制作方法: 1.在页面中加载视频 在使用canvas制作这个截图功能时,首先必须保证页面上 ...
- 模仿优酷视频截图功能
转自:http://blog.csdn.net/lmj623565791/article/details/31883587 一般的视频网站对于用户上传的视频,在用户上传完成后,可以对播放的视频进行截图 ...
- 基于Vue+canvas实现视频截图功能
开发过程中遇到一个实际问题,上传的视频需要提供视频封面(视频封面必填).封面可以自己制作并上传,但是这样需要脱离网站,用其他方式制作封面,使用体验并不友好,因此第一个想到的方案是:上传视频时,若人员未 ...
- php实现试看功能,据说是视频试看功能的js代码,共享给大家,POSCMS,CodeIgniter技术文档,PHP开发文档,迅睿CMS框架官方教程...
var watchTime=0; var setT=null; function ckmarqueeadv(){return '{a target="_blank" href=&q ...
- android videoview截屏,获取视频截图
最近在搞一个视频截图的功能,自己在探索过程中,看到很多各种各样的解法,走了很多弯路,为了避免做相同功能的朋友们走很多弯路,我把自己解决方案,及探索过程遇到的Bug记录下来,目前已经适配大部分机型,对于 ...
- pyQT 视频播放器(三) 实现视频截图、获取每一帧数据
pyQT 视频播放器(三) 实现视频截图.获取每一帧数据 背景 方法调研 详细代码说明 最终效果 总结: 参考资料 背景 在 "PyQt5 实现视频播放器(二) ,详细版本 ,适合新手入门& ...
最新文章
- java流的写法_java IO-过滤流类的写法
- spring-cloud:熔断监控Hystrix Dashboard和Turbine的示例
- 序列号生成的另一种玩法
- mybatis使用注解替代xml配置,动态生成Sql
- get event by http request via CL_HTMLB_MANAGER
- idea怎么更改推到github的路径_IDEA 拉取、上传、更新 项目到 Gitee+GitHub_超详细超简单版...
- ajax 数据 有序号,在ajax中添加序列号
- 我比领导小15岁,互相有好感,为什么每次路过我办公室都叹气?
- 高中计算机上册知识总结怎么写,高中计算机总结范文
- 学物理考研计算机,专业选择:物理学专业考研方向总结
- 使用Python绘制热图的库 pyHeatMap 使用Python绘制热图的库 pyHeatMap
- PHP源码 京东联盟API接口,转链+cha询订单,cha询推广位
- maya之坐标轴与模型显示状态
- “无法访问此网站”的一些原因
- FPGA图像工程师的六脉神剑——“选扫掌仿习练”
- 如何合理选择压力传感器
- 雅思口语-Part1练习
- (30)Verilog实现倍频【方法一】
- 魔幻矩阵全解(有全部代码说明)
- DBMS 数据库管理系统的三级模式架构《ClickHouse 实战:企业级大数据分析引擎》...
热门文章
- 后端:最受欢迎Java数据库访问框架(DAO层)
- STM32中断优先级的管理(NVIC)
- mp3 pcm java_Java mp3文件转pcm文件
- Java IO 节点流与处理流类型
- Table.Rows.Remove(dr)和Table.Delete()的区别
- network中的请求信息,headers中的每一项分别是什么意义?
- Elasticsearch学习笔记-04.3批处理
- Maven组件通过命令上传本地和私有仓库
- Java学习优秀网站
- 【转帖】Reporting Service rdl报表,在aspx页面显示一张完整的RDL报表