视频文件转换成帧图片!!

sun881212 2010-09-14 09:32:20
用C#技术怎么实现 视频文件转换成帧图片!! 知道的谢谢告诉下!!!!不胜感激!!!!
...全文
1467 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
捷哥1999 2010-09-21
  • 打赏
  • 举报
回复
你可以下载这个源代码来看看!
源码

效果图:


注意,下载源码前,你需要用一个email地址去注册为网站的用户。
sun881212 2010-09-14
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 ly_longyue 的回复:]
引用 9 楼 sun881212 的回复:
就是说现在又一个*.avi的视频文件但是我想把这个*.avi视频全部转换成帧图片然后把这些图片全部显示出来

你想想 一张 图可以截取,那么多张图 也就可行了啊
用个循环 增加时间 就可以 截取不同时间的图片了
[/Quote]
你的代码我真的还有许多不明白的地方能加下我的QQ936373202和我详细说下吗
谢谢了
卧_槽 2010-09-14
  • 打赏
  • 举报
回复
ffmpeg才是王道。
sun881212 2010-09-14
  • 打赏
  • 举报
回复
对了还有就是我想问下*.avi用什么解码器好
sun881212 2010-09-14
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 ly_longyue 的回复:]
引用 9 楼 sun881212 的回复:
就是说现在又一个*.avi的视频文件但是我想把这个*.avi视频全部转换成帧图片然后把这些图片全部显示出来

你想想 一张 图可以截取,那么多张图 也就可行了啊
用个循环 增加时间 就可以 截取不同时间的图片了
[/Quote]
我现在加了一个timer控件
再里面调用了你写的方法可以吗
龍月 2010-09-14
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 sun881212 的回复:]
就是说现在又一个*.avi的视频文件但是我想把这个*.avi视频全部转换成帧图片然后把这些图片全部显示出来
[/Quote]
你想想 一张 图可以截取,那么多张图 也就可行了啊
用个循环 增加时间 就可以 截取不同时间的图片了
sun881212 2010-09-14
  • 打赏
  • 举报
回复
就是说现在又一个*.avi的视频文件但是我想把这个*.avi视频全部转换成帧图片然后把这些图片全部显示出来
tjava_net 2010-09-14
  • 打赏
  • 举报
回复
   #region //运行FFMpeg的视频解码,(这里是绝对路径)
/// <summary>
/// 转换文件并保存在指定文件夹下面(这里是绝对路径)
/// </summary>
/// <param name="fileName">上传视频文件的路径(原文件)</param>
/// <param name="playFile">转换后的文件的路径(网络播放文件)</param>
/// <param name="imgFile">从视频文件中抓取的图片路径</param>
/// <returns>成功:返回图片虚拟地址; 失败:返回空字符串</returns>
public string ChangeFilePhy(string fileName, string playFile, string imgFile)
{
//取得ffmpeg.exe的路径,路径配置在Web.Config中,如:<add key="ffmpeg" value="E:\51aspx\ffmpeg.exe" />
string ffmpeg = HttpContext.Current.Server.MapPath("~/" + PublicMethod.ffmpegtool);

if ((!System.IO.File.Exists(ffmpeg)) || (!System.IO.File.Exists(fileName)))
{
return "";
}
//获得图片和(.flv)文件相对路径/最后存储到数据库的路径,如:/Web/User1/00001.jpg
string flv_file = System.IO.Path.ChangeExtension(playFile, ".flv");

//截图的尺寸大小,配置在Web.Config中,如:<add key="CatchFlvImgSize" value="240x180" />
string FlvImgSize = PublicMethod.sizeOfImg;
System.Diagnostics.ProcessStartInfo FilestartInfo = new System.Diagnostics.ProcessStartInfo(ffmpeg);
FilestartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
FilestartInfo.Arguments = " -i " + fileName + " -ab 56 -ar 22050 -b 500 -r 15 -s " + widthOfFile + "x" + heightOfFile + " " + flv_file;
//ImgstartInfo.Arguments = " -i " + fileName + " -y -f image2 -t 0.05 -s " + FlvImgSize + " " + flv_img;
try
{


//转换
System.Diagnostics.Process p = System.Diagnostics.Process.Start(FilestartInfo);
while (!p.HasExited) { }

//截图
CatchImg(fileName, imgFile);

//System.Diagnostics.Process.Start(ImgstartInfo);
}
catch
{
return "";
}
//
return "";
}
xuzysun 2010-09-14
  • 打赏
  • 举报
回复
学习了!!
porschev 2010-09-14
  • 打赏
  • 举报
回复
没做过。。。帮顶
sun881212 2010-09-14
  • 打赏
  • 举报
回复
截取多帧再拿来添加循环啊
龍月 2010-09-14
  • 打赏
  • 举报
回复
http://topic.csdn.net/u/20090329/16/a04986c2-8df2-42c4-b575-f0ce68f6579a.html
龍月 2010-09-14
  • 打赏
  • 举报
回复
刚才那个是截取一张的
如果要截取多张 要循环的
时间之类的 就要靠参数了
startInfo.Arguments 很重要的
百度一下相关的知识吧
祝你好运
龍月 2010-09-14
  • 打赏
  • 举报
回复
           /**//// <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)
...{

string ffmpeg=@"C:\XXX\fmpeg.exe";//这里用到这个exe 是解码器 系统搜一下,换下地址
string PicName =Server.MapPath(Guid.NewGuid().ToString().Replace("-","")+".jpg");
System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo(ffmpeg);
startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
startInfo.Arguments = " -i " + Server.MapPath(VideoName) + " -y -f image2 -ss "+CutTimeFrame+" -t 0.001 -s " + WidthAndHeight + " " + PicName ;
try
...{
System.Diagnostics.Process.Start(startInfo);
return PicName;
}
catch(Exception err)
...{
return err.Message;
}
}
sun881212 2010-09-14
  • 打赏
  • 举报
回复
知道的人谢谢告诉下

111,129

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧