首页 新闻 会员 周边 捐助

mp4box.exe 在mvc4中调用运行无效果,手动在命令行里面运行有效果

0
悬赏园豆:50 [已解决问题] 解决于 2015-04-21 12:04

环境:vs2012中mvc4项目、win7x64

项目描述:用ffmpeg把上传视频转码为mp4格式的视频后,再用mp4box.exe修改mp4视频文件的meta信息到开头,让flash播放时候能够边下载边播放。

过程:把如图红框里面的两个文件复制到系统system32和SysWOW64目录下

表现:1、在命令行手动输入参数box.exe -inter 500  e:\\新建文件夹\\1.mp4 后如图,这样转换后的视频是可以在flash下边下载边播放的

2、在mvc项目中代码如下,调用这个方法来修改mp4视频的meta信息。程序运行也没提示什么错误,也没什么反应。也不知道它转换视频了没,最终视频是不能边下载边播放的。

  Process p = new Process();
            p.StartInfo.FileName = @"C:\WINDOWS\system32\cmd.exe ";
            p.StartInfo.UseShellExecute = false;
            p.StartInfo.RedirectStandardInput = true;
            p.StartInfo.RedirectStandardOutput = true;
            p.StartInfo.RedirectStandardError = true;
            p.StartInfo.CreateNoWindow = true;
            p.Start();
            p.StandardInput.WriteLine(@"c: ");  //先转到系统盘下
            p.StandardInput.WriteLine(@"cd C:\WINDOWS\system32 ");  //再转到CMD所在目录下
            p.StandardInput.WriteLine("box.exe -inter 500  e:\\新建文件夹\\1.mp4 ");
            p.StandardInput.WriteLine("exit");
            p.WaitForExit();
            p.Close();
            p.Dispose();

请问:1、哪位做过这样的东西?看看我这哪里出的问题。

        2、或者有什么替代的方法、别的软件可以包含在项目中来调用,可以修改mp4的meta信息让flash播放时候边下边播。

问题补充:

最终答案:在iis应用程序池里,把对应应用程序池的标识改为LocalSystem后,可以正确运行。

开山怪不怪的主页 开山怪不怪 | 小虾三级 | 园豆:544
提问于:2015-04-17 16:43
< >
分享
最佳答案
0

建议将控制台输出结果在页面上显示出来,这样就知道命令是否成功运行。

参考:在ASP.NET中运行控制台程序

收获园豆:50
dudu | 高人七级 |园豆:30636 | 2015-04-17 16:59

好的 ,正在测试。

开山怪不怪 | 园豆:544 (小虾三级) | 2015-04-17 17:44

你好 dudu,经排查,以前是我只把box.exe放到system32目录,只把js32.dll放在SysWOW64目录。这样放置可以用控制台转换视频,但在vs环境中就不能转换了。后来把这两个文件都复制到system32和SysWOW64目录后,测试发现在vs环境中直接运行,控制台输入如下

,但配置到iis7中运行,控制台输入如下

请问:这个Error:I/O Error,可能是哪方面的错误。我搜到一篇文章:  

C# 启动进程 重定向IO 死锁避免   正往这方面看。

  

开山怪不怪 | 园豆:544 (小虾三级) | 2015-04-21 10:57

@黑峰: 可能是应用程序池对应的帐户权限不够

dudu | 园豆:30636 (高人七级) | 2015-04-21 11:12

@dudu: 非常非常感谢!确实是应用程序池标识中的账户问题!经测试只有设置为内置账户LocalSystem时可以完成mp4文件修改meta过程,不再出现I/O错误。我这里打包后的软件自动安装时候默认是NetworkService内置账户。同时搜索看到在vs2012中内置的

IIS Express 

 介绍:

  • 在Visual Studio中不需要管理员权限即可启动和调试程序。

这样还是感觉有点知其然不知其所以然的。

多谢dudu,一语中的,经验丰富,向你学习。

开山怪不怪 | 园豆:544 (小虾三级) | 2015-04-21 11:58
其他回答(1)
0

ffmpeg默认就支持,被走弯路,去掉mp4box  ,转码的时候 加上-movflags faststart

Jerryz | 园豆:208 (菜鸟二级) | 2015-04-21 14:27

也多谢这位园友的提醒,经查看ffmpeg文档,同时在代码里面加上参数-movflags faststart,转码后播放,可以正常缓冲一小段后播放。这样就可以不用mp4box.exe再来修改一遍了,更加方便了。多谢多谢!多看文档,向你学习!

支持(0) 反对(0) 开山怪不怪 | 园豆:544 (小虾三级) | 2015-04-21 16:55
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册