视频转成flv格式

网友投稿 697 2022-12-01

视频转成flv格式

视频转成flv格式

最近完成了这个小Demo,来分享一下!上面给了我两天时间,来完成这个小功能于时我花了半天时间从网络上到处鄱资料,又花了半天时间调试代码,成功之后,终于有了以下一点的经验之谈:

这里讲一下重要的:1.用到两个工具,一个是ffmpeg.exe,另一个是mencoder.exeffmpeg最新版本的-:​​​1 2 private void StartProcess(string tool) 3 { 4 StartProcess(tool, false); 5 } 6 private void StartProcess(string tool,bool onlyCheckInfo) 7 { 8 System.Diagnostics.Process p = new System.Diagnostics.Process(); 9 p.StartInfo.FileName = tool;10 p.StartInfo.Arguments = commandPara;11 p.StartInfo.UseShellExecute = false;12 p.StartInfo.RedirectStandardInput = true;13 p.StartInfo.RedirectStandardOutput = true;14 p.StartInfo.RedirectStandardError = true;15 p.StartInfo.CreateNoWindow = false;16 p.OutputDataReceived += new System.Diagnostics.DataReceivedEventHandler(p_OutputDataReceived);17 if (onlyCheckInfo)//只检测文件是否可转换与获到内部宽与高18 {19 p.ErrorDataReceived += new System.Diagnostics.DataReceivedEventHandler(p_CheckInfoDataReceived);20 }21 else22 {23 p.ErrorDataReceived += new System.Diagnostics.DataReceivedEventHandler(p_ErrorDataReceived);24 }25 //开始执行 26 try27 {28 p.Start();29 p.BeginOutputReadLine();30 p.BeginErrorReadLine();31 p.WaitForExit();32 }33 catch (Exception err)34 {35 Console.WriteLine(err.Message);36 }37 finally38 {39 p.Close();40 }41 }42 void p_CheckInfoDataReceived(object sender, System.Diagnostics.DataReceivedEventArgs e)43 {44 if (!string.IsNullOrEmpty(e.Data))45 {46 if (e.Data.Contains("Stream") && e.Data.Contains("Video:"))//设置原视频窗口大小作为flv视频的宽与高47 {48 Match match = Regex.Match(e.Data, @", (\d+)x(\d+)");49 if (match != null)50 {51 videoWidth = match.Groups[1].Value;52 videoHeight = match.Groups[2].Value;53 }54 }55 else if (e.Data.Contains("could not find codec parameters"))//ffmpeg转换失败56 {57 isCanChangeToFlv = false;58 Program.SetDataBase(id, 1, count + 1);59 }60 }61 62 }63 64 void p_ErrorDataReceived(object sender, System.Diagnostics.DataReceivedEventArgs e)65 {66 if (!string.IsNullOrEmpty(e.Data))67 {68 if (e.Data.Contains("video:") && e.Data.Contains("muxing overhead"))//ffmpeg转换完成69 {70 Program.SetDataBase(id, 2, count + 1);71 Console.WriteLine("转换完成");72 }73 Console.WriteLine(e.Data);74 }75 76 }77 78 void p_OutputDataReceived(object sender, System.Diagnostics.DataReceivedEventArgs e)79 {80 if (!string.IsNullOrEmpty(e.Data))81 {82 if (e.Data.Contains("Writing index"))//mencoder转换完成83 {84 Program.SetDataBase(id, 2, count + 1);85 Console.WriteLine("转换完成");86 }87 //else if (e.Data.Contains("Exiting"))//mencoder转换失败88 //{89 // Console.WriteLine("转换失败");90 //}91 Console.WriteLine(e.Data);92 }93 }94 95

本文只讲重点,请结合网络其它文章与本文即可!

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:springboot中validator数据校验功能的实现
下一篇:sql 2000 分页存储过程
相关文章

 发表评论

暂时没有评论,来抢沙发吧~