|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
net网页编程欺骗了我们那么多年,如今的多核时代,我认为它气数已尽!比来完成了这个小Demo,来分享一下!
下面给了我两地利间,来完成这个小功效
于时我花了半地利间从收集上各处鄱材料,又花了半地利间调试代码,乐成以后,终究有了以下一点的履历之谈:
这里讲一下主要的:
1.用到两个工具,一个是ffmpeg.exe,另外一个是mencoder.exe
ffmpeg最新版本的下载地点:http://ffdshow.faireal.net/mirror/ffmpeg/
Mencoder新版本的下载地点:http://www5.mplayerhq.hu/MPlayer/releases/win32/
这里有一个重点,网上的文章都没讲到,以是形成有些人运转后没反响,缘故原由是下面路径的下载,有良多版本,分歧的版本大概一般参数分歧,而网上的文章所用的参数都是用很早的版本写的,以是会形成运转后因参数毛病而没无效果
复杂处置是:把网上参数在cmd命令行实行一下,这时候命令行会报哪一个参数毛病,把它删了便可!
2.判别处置乐成与失利或是进度是不是完成,从异步猎取的输入信息判别[包含猎取原视频的宽与高]
这里重点在两个托付事务中,概况见以下几行代码
1
2privatevoidStartProcess(stringtool)
3{
4StartProcess(tool,false);
5}
6privatevoidStartProcess(stringtool,boolonlyCheckInfo)
7{
8System.Diagnostics.Processp=newSystem.Diagnostics.Process();
9p.StartInfo.FileName=tool;
10p.StartInfo.Arguments=commandPara;
11p.StartInfo.UseShellExecute=false;
12p.StartInfo.RedirectStandardInput=true;
13p.StartInfo.RedirectStandardOutput=true;
14p.StartInfo.RedirectStandardError=true;
15p.StartInfo.CreateNoWindow=false;
16p.OutputDataReceived+=newSystem.Diagnostics.DataReceivedEventHandler(p_OutputDataReceived);
17if(onlyCheckInfo)//只检测文件是不是可转换与获到外部宽与高
18{
19p.ErrorDataReceived+=newSystem.Diagnostics.DataReceivedEventHandler(p_CheckInfoDataReceived);
20}
21else
22{
23p.ErrorDataReceived+=newSystem.Diagnostics.DataReceivedEventHandler(p_ErrorDataReceived);
24}
25//入手下手实行
26try
27{
28p.Start();
29p.BeginOutputReadLine();
30p.BeginErrorReadLine();
31p.WaitForExit();
32}
33catch(Exceptionerr)
34{
35Console.WriteLine(err.Message);
36}
37finally
38{
39p.Close();
40}
41}
42voidp_CheckInfoDataReceived(objectsender,System.Diagnostics.DataReceivedEventArgse)
43{
44if(!string.IsNullOrEmpty(e.Data))
45{
46if(e.Data.Contains("Stream")&&e.Data.Contains("Video:"))//设置原视频窗口巨细作为flv视频的宽与高
47{
48Matchmatch=Regex.Match(e.Data,@",(d+)x(d+)");
49if(match!=null)
50{
51videoWidth=match.Groups[1].Value;
52videoHeight=match.Groups[2].Value;
53}
54}
55elseif(e.Data.Contains("couldnotfindcodecparameters"))//ffmpeg转换失利
56{
57isCanChangeToFlv=false;
58Program.SetDataBase(id,1,count+1);
59}
60}
61
62}
63
64voidp_ErrorDataReceived(objectsender,System.Diagnostics.DataReceivedEventArgse)
65{
66if(!string.IsNullOrEmpty(e.Data))
67{
68if(e.Data.Contains("video:")&&e.Data.Contains("muxingoverhead"))//ffmpeg转换完成
69{
70Program.SetDataBase(id,2,count+1);
71Console.WriteLine("转换完成");
72}
73Console.WriteLine(e.Data);
74}
75
76}
77
78voidp_OutputDataReceived(objectsender,System.Diagnostics.DataReceivedEventArgse)
79{
80if(!string.IsNullOrEmpty(e.Data))
81{
82if(e.Data.Contains("Writingindex"))//mencoder转换完成
83{
84Program.SetDataBase(id,2,count+1);
85Console.WriteLine("转换完成");
86}
87//elseif(e.Data.Contains("Exiting"))//mencoder转换失利
88//{
89//Console.WriteLine("转换失利");
90//}
91Console.WriteLine(e.Data);
92}
93}
94
95
本文只讲重点,请分离收集别的文章与本文便可!
你所列的那些其实差不多都可以称为应用服务器(servlet应该说是一种语言更合适)net网页编程是开放的,相同的工具就会有很多公司在做,加上net网页编程已经发展了很多年了,因此这些工具就很多了。他们很多都是类似的。 |
|