前公司在制作播客系统(Web程序)中,用到从视频截图功能.下边是截图CatchImg方法,可从大多数的视频文件中截图成功,大家可测试;如果截图不成功,大多是因为视频本身的问题,如编码标准或加了密.但从在线录制的视频Flv文
前公司在制作播客系统(Web程序)中,用到从视频截图功能.
下边是截图CatchImg方法,可从大多数的视频文件中截图成功,大家可测试;
如果截图不成功,大多是因为视频本身的问题,如编码标准或加了密.
但从在线录制的视频Flv文件中截图,还未发现截图失败;

/// <summary>
/// @从视频文件截图,生成在视频文件所在文件夹
/// 在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#代码相关推荐

  1. 视频截图html,canvas与html5实现视频截图功能(示例代码)

    这段时间一直在研究canvas,突发奇想想做一个可以截屏视频的功能,然后把图片拉去做表情包,哈哈哈哈哈哈~~ 制作方法: 1.在页面中加载视频 在使用canvas制作这个截图功能时,首先必须保证页面上 ...

  2. js截屏 video_canvas与html5实现视频截图功能

    这段时间一直在研究canvas,突发奇想想做一个可以截屏视频的功能,然后把图片拉去做表情包,哈哈哈哈哈哈~~ 制作方法: 1.在页面中加载视频 在使用canvas制作这个截图功能时,首先必须保证页面上 ...

  3. android easyplayer截屏,EasyWasmPlayer H265播放器是如何实现视频截图功能的?

    在我们做视频开发的过程中,会遇到不少需求,其中视频截图就是一个比较常见的需求,因此TSINGSEE青犀视频不管是在设计视频平台还是视频播放器的时候,我们都会在原有开发的基础上对视频截图进行一些功能拓展 ...

  4. html中图片切割视频,canvas与html5实现视频截图功能示例

    这段时间一直在研究canvas,突发奇想想做一个可以截屏视频的功能,然后把图片拉去做表情包,哈哈哈哈哈哈~~ 制作方法: 1.在页面中加载视频 在使用canvas制作这个截图功能时,首先必须保证页面上 ...

  5. 模仿优酷视频截图功能

    转自:http://blog.csdn.net/lmj623565791/article/details/31883587 一般的视频网站对于用户上传的视频,在用户上传完成后,可以对播放的视频进行截图 ...

  6. 基于Vue+canvas实现视频截图功能

    开发过程中遇到一个实际问题,上传的视频需要提供视频封面(视频封面必填).封面可以自己制作并上传,但是这样需要脱离网站,用其他方式制作封面,使用体验并不友好,因此第一个想到的方案是:上传视频时,若人员未 ...

  7. php实现试看功能,据说是视频试看功能的js代码,共享给大家,POSCMS,CodeIgniter技术文档,PHP开发文档,迅睿CMS框架官方教程...

    var watchTime=0; var setT=null; function ckmarqueeadv(){return '{a target="_blank" href=&q ...

  8. android videoview截屏,获取视频截图

    最近在搞一个视频截图的功能,自己在探索过程中,看到很多各种各样的解法,走了很多弯路,为了避免做相同功能的朋友们走很多弯路,我把自己解决方案,及探索过程遇到的Bug记录下来,目前已经适配大部分机型,对于 ...

  9. pyQT 视频播放器(三) 实现视频截图、获取每一帧数据

    pyQT 视频播放器(三) 实现视频截图.获取每一帧数据 背景 方法调研 详细代码说明 最终效果 总结: 参考资料 背景 在 "PyQt5 实现视频播放器(二) ,详细版本 ,适合新手入门& ...

最新文章

  1. java流的写法_java IO-过滤流类的写法
  2. spring-cloud:熔断监控Hystrix Dashboard和Turbine的示例
  3. 序列号生成的另一种玩法
  4. mybatis使用注解替代xml配置,动态生成Sql
  5. get event by http request via CL_HTMLB_MANAGER
  6. idea怎么更改推到github的路径_IDEA 拉取、上传、更新 项目到 Gitee+GitHub_超详细超简单版...
  7. ajax 数据 有序号,在ajax中添加序列号
  8. 我比领导小15岁,互相有好感,为什么每次路过我办公室都叹气?
  9. 高中计算机上册知识总结怎么写,高中计算机总结范文
  10. 学物理考研计算机,专业选择:物理学专业考研方向总结
  11. 使用Python绘制热图的库 pyHeatMap 使用Python绘制热图的库 pyHeatMap
  12. PHP源码 京东联盟API接口,转链+cha询订单,cha询推广位
  13. maya之坐标轴与模型显示状态
  14. “无法访问此网站”的一些原因
  15. FPGA图像工程师的六脉神剑——“选扫掌仿习练”
  16. 如何合理选择压力传感器
  17. 雅思口语-Part1练习
  18. (30)Verilog实现倍频【方法一】
  19. 魔幻矩阵全解(有全部代码说明)
  20. DBMS 数据库管理系统的三级模式架构《ClickHouse 实战:企业级大数据分析引擎》...

热门文章

  1. 后端:最受欢迎Java数据库访问框架(DAO层)
  2. STM32中断优先级的管理(NVIC)
  3. mp3 pcm java_Java mp3文件转pcm文件
  4. Java IO 节点流与处理流类型
  5. Table.Rows.Remove(dr)和Table.Delete()的区别
  6. network中的请求信息,headers中的每一项分别是什么意义?
  7. Elasticsearch学习笔记-04.3批处理
  8. Maven组件通过命令上传本地和私有仓库
  9. Java学习优秀网站
  10. 【转帖】Reporting Service rdl报表,在aspx页面显示一张完整的RDL报表