求救,视频转缩略图,缩略图怎么成黑色的呢?

问题描述

本人想实现视频转缩略图,如果media中的视频多的话,media/thumb文件夹下生成的缩略图是黑色的,怎么解决?还有怎么提速。。。。MainWindow.xaml.cs的代码:usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.Windows;usingSystem.Windows.Controls;usingSystem.Windows.Data;usingSystem.Windows.Documents;usingSystem.Windows.Input;usingSystem.Windows.Media;usingSystem.Windows.Media.Imaging;usingSystem.Windows.Navigation;usingSystem.Windows.Shapes;usingSystem.IO;usingSystem.Runtime.InteropServices;usingSystem.Windows.Threading;usingSystem.Windows.Controls.Primitives;namespacevideo{///<summary>///MainWindow.xaml的交互逻辑///</summary>publicpartialclassMainWindow:Window{publicstringMediaDir;publicstringMediaThumbDir;publicstringMediaThumbDirs;publicintwait=0;publicMainWindow(){InitializeComponent();load_data();}privatevoidload_data(){MediaDir=System.IO.Path.GetDirectoryName(System.Windows.Application.ResourceAssembly.Location)+"\media";MediaThumbDir=MediaDir+"\thumb";if(!Directory.Exists(MediaDir)){Directory.CreateDirectory(MediaDir);}//检测视频文件夹if(!Directory.Exists(MediaThumbDir)){Directory.CreateDirectory(MediaThumbDir);}//检测视频缩略图文件夹DirectoryInfodi=newDirectoryInfo(MediaDir);FileInfo[]listmedia=di.GetFiles();if(listmedia.Length>0){foreach(FileInfofinfoinlistmedia){stringTempStr1=System.IO.Path.GetExtension(finfo.FullName);if(TempStr1.ToLower()==".avi"||TempStr1.ToLower()==".wmv"||TempStr1.ToLower()==".3gp"){wait++;stringmediathumbname=System.IO.Path.GetFileNameWithoutExtension(finfo.FullName)+"-video";stringfilename=finfo.FullName;varfilename1=newUri(filename);//查看视频缩略图是否存在if(!File.Exists(MediaThumbDir+"\"+mediathumbname+".jpg")){VideoScreenShot.CaptureScreenAsync(filename1,newDictionary<TimeSpan,object>{{TimeSpan.FromSeconds(1),mediathumbname},},.1,makeJpeg,makeThumbnails);}}}}}privatedelegatevoidsetImageDelegate(stringcontrolName,BitmapFrameframe);privatevoidsetImage(stringcontrolName,BitmapFrameframe){varcontrol=FindName(controlName);if(control!=null)((Image)control).Source=frame;}privatevoidmakeThumbnails(BitmapFrameframe,objectstate){Dispatcher.Invoke(newsetImageDelegate(setImage),(string)state,frame);}privatevoidmakeJpeg(BitmapFrameframe,objectstate){varencoder=newJpegBitmapEncoder();encoder.Frames.Add(frame);stringMediaThumbDirs=MediaThumbDir+"\";stringfilename=MediaThumbDirs+(string)state+".jpg";using(varfs=newFileStream(filename,FileMode.Create))encoder.Save(fs);}}}VideoScreenShot.cs的代码usingSystem;usingSystem.Collections.Generic;usingSystem.Threading;usingSystem.Windows;usingSystem.Windows.Media;usingSystem.Windows.Media.Imaging;namespacevideo{publicclassVideoScreenShot{publicintaa;publicintbb;publicdelegatevoidCaptureWorkerDelegate(BitmapFrameframe,objectstate);publicstaticvoidCaptureScreenAsync(Urisource,Dictionary<TimeSpan,object>captureList,doublescale,CaptureWorkerDelegatefinalWorkerPrimary,CaptureWorkerDelegatefinalWorkerThumbnail){ThreadPool.QueueUserWorkItem(delegate{CaptureScreen(source,captureList,scale,finalWorkerPrimary,finalWorkerThumbnail);});}publicstaticvoidCaptureScreen(Urisource,Dictionary<TimeSpan,object>captureList,doublescale,CaptureWorkerDelegatefinalWorkerPrimary,CaptureWorkerDelegatefinalWorkerThumbnail){varmutexLock=newMutex(false,source.GetHashCode().ToString());mutexLock.WaitOne();varplayer=newMediaPlayer{Volume=0,ScrubbingEnabled=true};player.Open(source);player.Pause();//intwaits=0;foreach(varpairincaptureList){//waits++;vartimeSpan=pair.Key;varstate=pair.Value;player.Position=timeSpan;//Thread.Sleep(2000+waits*2000);Thread.Sleep(3000);intwidth=player.NaturalVideoWidth;if(width<=0){width=640;}intheight=player.NaturalVideoHeight;if(height<=0){height=480;}varrtb=newRenderTargetBitmap(width,height,96,96,PixelFormats.Pbgra32);vardv=newDrawingVisual();using(DrawingContextdc=dv.RenderOpen())dc.DrawVideo(player,newRect(0,0,width,height));rtb.Render(dv);varframe=BitmapFrame.Create(rtb).GetCurrentValueAsFrozen();if(finalWorkerPrimary!=null)finalWorkerPrimary(frameasBitmapFrame,state);if(scale>0&&finalWorkerThumbnail!=null){varthumbnailFrame=BitmapFrame.Create(newTransformedBitmap(frameasBitmapSource,newScaleTransform(scale,scale))).GetCurrentValueAsFrozen();varencoder=newJpegBitmapEncoder();encoder.Frames.Add(thumbnailFrameasBitmapFrame);finalWorkerThumbnail(thumbnailFrameasBitmapFrame,state);}//Thread.Sleep(3000);}player.Close();mutexLock.ReleaseMutex();}}}

解决方案

本帖最后由 sxliusir 于 2011-06-03 14:34:13 编辑
解决方案二:
Graphicsg=Graphics.FromImage(image);g.Clear(Color.White);

时间: 2024-11-15 10:20:39

求救,视频转缩略图,缩略图怎么成黑色的呢?的相关文章

ajax 异步上传带进度条视频并提取缩略图_AJAX相关

最近在做一个集富媒体功能于一身的项目.需要上传视频.这里我希望做成异步上传,并且有进度条,响应有状态码,视频连接,缩略图. 服务端响应 { "thumbnail": "/slsxpt//upload/thumbnail/fdceefc.jpg", "success": true, "link": "/slsxpt//upload/video/fdceefc.mp" } 并且希望我的input file控件不

ajax 异步上传带进度条视频并提取缩略图

最近在做一个集富媒体功能于一身的项目.需要上传视频.这里我希望做成异步上传,并且有进度条,响应有状态码,视频连接,缩略图. 服务端响应 { "thumbnail": "/slsxpt//upload/thumbnail/fdceefc.jpg", "success": true, "link": "/slsxpt//upload/video/fdceefc.mp" } 并且希望我的input file控件不

C#中利用JQuery实现视频网站的缩略图采集

最近有朋友想要采集优酷的视频标题和缩略图 (哈哈, 并非商业目的). 找到我帮忙, 考虑到有我 刚刚发布的SpiderStudio, 我毫不犹豫的答应了. 首先在网页上视频的基本结构为: div.v - div.v-meta-title //标题 - div.v-thumb / img //缩略图 对应的JQuery表达式为: $("div.v").find("div.v-meta-title"); $("div.v").find ("

配置文件 android-当前的Activity标题栏隐藏,背景设置成黑色

问题描述 当前的Activity标题栏隐藏,背景设置成黑色 <activity android:theme="@android:style/Theme.Black.NoTitleBar" android:name="com.hao123.calculatordemo.MainActivity" android:label="@string/app_name" > <intent-filter> <action and

一元浇灭视频网站激情 会员制沦陷成空谈

        前段时间,<盗墓笔记>的热播,不仅让"上交国家"成为网络流行词,连带着视频收费也重新成为大众舆论关注的焦点.视频网站收费模式早已践行数年,但直到现在仍没有达到自己的顶峰.或者说各大视频网站都依然还处于试水阶段,尝试解决收益和用户体验之间相互满意的平衡点.就在这突飞猛进的阶段,充斥于淘宝上的一元会员,浇灭了视频网站的激情. 原本收费高昂的视频网站会员.单片收费制度,突然沦为路边的"大白菜",其伤害对视频网站来说无疑是巨大的.原本视频网站描绘

狸窝视频转换器flv怎么转换成mp3

  打开转换器,先添加视频文件,单击左上角的"添加视频"按键,然后在打开的文件夹中打开需要转换的flv视频导入即可.文件可以是多个,可批量转换的.这是最近我比较喜欢看的韩剧MV,转换成mp3就能放手机上听了,上次我也试过转成amr做手机铃声呢. 选择输出格式,即预置方案.单击预置方案右边的不倒三角,打开上拉菜单,如图所示,支持的播放设备和输出格式还是很多的哦.不废话了.这里选择常用音频一项中的MP3-MPEG Layer-3 Audio(*.mp3) ,格式下方也有中文说明的. 单击主

.cn顶级域名遭殃 流量攻击已成黑色产业链

8月25日凌晨,中国互联http://www.aliyun.com/zixun/aggregation/32420.html">网络信息中心管理运行的国家.CN顶级域名系统遭受大规模拒绝服务攻击.据工信部通信保障局介绍,此次攻击系利用僵尸网络向.CN顶级域名系统持续发起 大量针对某游戏私服网站域名的查询请求,峰值流量较平常激增近1000倍,造成.cn顶级域名系统的互联网出口带宽短期内严重拥塞. 360安全专家石晓虹博士表示,黑客攻击者的手法并不新鲜,就是单纯的流量攻击.他 认为,两个原因导

视频网站联合购版权成新模式 一线剧集价格下降五成

前不久在湖南卫视播出的<http://www.aliyun.com/zixun/aggregation/32192.html">太平公主秘史>(45集)去年以5000万元的总价卖出了网络播放版权,这一价格成为电视剧网络最高价,也侧面反映了视频网站对电视剧版权的疯抢现象.然后这种现象在今年逐渐改变,在今年的春节电视节目推介会上,零网络版权成交率,让大家注意到视频网站的回归理性.据搜狐视频影视版权中心总监马可透露,今年一线剧集的网络版权价至少下跌了一半,有的剧集甚至根本没有市场.视

北京DDS求救天天快递未果员工善后成难题

每经实习记者 李卓 发自北京 DDS北京分公司倒闭第三天.相比江.浙.沪及珠三角之前发生的DDS客户.员工讨债事件,北京DDS分公司显然有经验和"有序"得多了. 昨日 (1月27日),<每日经济新闻>记者在北京DDS牡丹园站点看到两排特殊的队伍,他们是DDS北京分公司海淀区被欠薪员工,近百人等待着工资的发放. 仍签空白协议 就在队伍旁,一位他们曾经的经理负责带头维持秩序. 相比1月26日凌晨4点等工资的煎熬,DDS北京员工1月27日还享受了"专车"的待遇