用FFmpeg转换视频怎么没有反应

Herolj 2007-06-05 06:22:03
/// <summary>
/// 视频(avi,mov等等格式)转换为flv格式视频
/// </summary>
/// <param name="FromName">被转换的视频文件</param>
/// <param name="ExportName">转换flv后的文件名</param>
/// <param name="ExportName">视频大小的尺寸</param>
/// <returns></returns>
public static string VideoConvertFlv(string FromName,string ExportName,string WidthAndHeight)
{
string ffmpeg = "E:\FFmpeg\ffmpeg.exe";
System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo(ffmpeg);
startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
startInfo.Arguments = " -i " + FromName + " -y -ab 56 -ar 22050 -b 500 -r 15 -s " + WidthAndHeight + " " + ExportName;
try
{
System.Diagnostics.Process.Start(startInfo);
return ExportName;
}
catch(Exception err)
{
return err.Message;
}
System.Threading.Thread.Sleep(4000);
}

这是方法。
我调用方法
string test = ConvertVideo.VideoConvertFlv("E:\\ClibDemo\\VideoPath\\admin\\a.wmv","jon.flv","320*240");
可是调用了。。没有反应。。

不过用DOS测试就有用..
请大家帮帮忙..
...全文
759 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
kzbbadboy 2007-11-19
  • 打赏
  • 举报
回复
收藏了
hanbingb 2007-06-22
  • 打赏
  • 举报
回复
:)
Herolj 2007-06-21
  • 打赏
  • 举报
回复
System.Threading.Thread.Sleep(4000);

这个是刚开始测试的程序代码。。

后面的没有。。

后面那个是好报
bidisty 2007-06-17
  • 打赏
  • 举报
回复
System.Threading.Thread.Sleep(4000);
为什么用这个,是打算等待4秒后开始吗?

是命令行还是应用程序项目?
可能是MAIN的主程序进程已结束,方法没进行完就被KILL掉了。
是否需要AutoResetEvent 类来让主进程在关闭前等待方法的完成?
我提个醒吧。我也看不出来。
Herolj 2007-06-17
  • 打赏
  • 举报
回复
好的。。谢啦。。
要不你发到我邮箱里也行。。
发到这里也行。。
winTimes@Gmail.Com
谢啦
zorou_fatal 2007-06-16
  • 打赏
  • 举报
回复
我给你的第一个例子就是关于生成bat文件的。
Herolj 2007-06-16
  • 打赏
  • 举报
回复
说的是。。在上传时,,页面总是会很慢,,

请问一下如何让他生成Bat文件。。然后执行。。
多谢
conanlwl 2007-06-09
  • 打赏
  • 举报
回复
没用过....学习...
zorou_fatal 2007-06-09
  • 打赏
  • 举报
回复
OK,不过建议你还是生成bat以后再执行
因为视频处理以后会有一系列的动作要执行的。
Herolj 2007-06-08
  • 打赏
  • 举报
回复
要调用的话.
ConvertVideo.VideoConvertFlv("上传文件路径", "300*200", "Test.flv");
Herolj 2007-06-08
  • 打赏
  • 举报
回复
呵呵..
我搞定啦``
以下是我测试成功的代码哦``

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

/// <summary>
/// ConvertVideo 的摘要说明
/// </summary>
public class ConvertVideo
{
public ConvertVideo()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
/**/
/// <summary>
/// 视频(avi,mov等等格式)转换为flv格式视频
/// </summary>
/// <param name="FromName">被转换的视频文件</param>
/// <param name="ExportName">转换flv后的文件名</param>
/// <param name="ExportName">视频大小的尺寸</param>
/// <returns></returns>
//其中System.Configuration.ConfigurationSettings.AppSettings["ffmpeg"]是存放ffmpeg.exe

的路径
//bs.GetVideoFilePath() 是工作目录。比如你想把生成的文件放在E:\VideoDemo 就这样
public static string VideoConvertFlv(string FromName, string WidthAndHeight, string

ExportName)
{
Base bs = new Base();
string ffmpeg = System.Configuration.ConfigurationSettings.AppSettings["ffmpeg"];
string Command = ffmpeg + " -i " + FromName + " -y -ab 56 -ar 22050 -b 500 -r 15 -s "

+ WidthAndHeight + " " + ExportName; ////Flv格式
//string Command = "E:\\FFmpeg\\ffmpeg.exe -i E:\\ClibDemo\\VideoPath\\admin\\a.wmv -y

-ab 56 -ar 22050 -b 500 -r 15 -s 320*240 "+ ExportName;
System.Diagnostics.Process p = new System.Diagnostics.Process();
p.StartInfo.FileName = "cmd.exe";
p.StartInfo.WorkingDirectory = HttpContext.Current.Server.MapPath(bs.GetVideoFilePath

());
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardInput = true;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.RedirectStandardError = true;
p.StartInfo.CreateNoWindow = false;
//开始执行
p.Start();
p.StandardInput.WriteLine(Command);
p.StandardInput.WriteLine("Exit") ;
return ExportName;
}
public static string VideoConvertImg(string FromName, string WidthAndHeight, string

ExportName)
{
Base bs = new Base();
string ffmpeg = System.Configuration.ConfigurationSettings.AppSettings["ffmpeg"];
string Command = ffmpeg + " -i " + FromName + " -y -f image2 -t 0.001 -s " +

WidthAndHeight + " " + ExportName; //获取静态图
//string Command = "E:\\FFmpeg\\ffmpeg.exe -i E:\\ClibDemo\\VideoPath\\admin\\a.wmv -y

-f image2 -t 0.001 -s 300*200 " + ExportName;
System.Diagnostics.Process p = new System.Diagnostics.Process();
p.StartInfo.FileName = "cmd.exe";
p.StartInfo.WorkingDirectory = HttpContext.Current.Server.MapPath(bs.GetVideoImagePath

());
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardInput = true;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.RedirectStandardError = true;
p.StartInfo.CreateNoWindow = false;
//开始执行
p.Start();
p.StandardInput.WriteLine(Command);
p.StandardInput.WriteLine("Exit");
return ExportName;
}
}
zorou_fatal 2007-06-06
  • 打赏
  • 举报
回复
贴部分代码看看。
Herolj 2007-06-06
  • 打赏
  • 举报
回复
在任务管理器里没有。。
怎么回事哦
zorou_fatal 2007-06-06
  • 打赏
  • 举报
回复
你要是在任务管理器里可以看到一个ffmpeg的进程,那就没问题
zorou_fatal 2007-06-06
  • 打赏
  • 举报
回复
后台运行就可以了,不需要打开DOS窗口的。
Herolj 2007-06-06
  • 打赏
  • 举报
回复
主要的问题,就是我现在连DOS窗口都打不开哦
Herolj 2007-06-06
  • 打赏
  • 举报
回复
你说会不会是我机子有问题啊
Herolj 2007-06-06
  • 打赏
  • 举报
回复
好哦。。
谢谢
zorou_fatal 2007-06-06
  • 打赏
  • 举报
回复
贴你的完整代码看看
Herolj 2007-06-06
  • 打赏
  • 举报
回复
我试着用了您的方法。。
可是没有反应。。
然后测试时就把。p.StartInfo.CreateNoWindow = true; true改成了false;
照理应该会把DOS命令窗口打开。。
可是我机子根本没有打开。。
请问这是什么原因啊
加载更多回复(2)

62,266

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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