视频格式转化为FLV (C#)

        在上次随笔 Asp.net FMS 开发视频网站 中,好多朋友提到其他视频格式转化成FLV格式的问题,经过网上搜索资料研习整理,现经我的一点思路分享给大家:
        我添加了一个转换FLV工程 VideoConvert:

         1。配置文件里添加
         
web.config

        2。添加一个接口 
IConvert

3。转换工具设定继承 IConvert

FfmpegConvert

   
4.

program

通过四步,我们视频转换工程就创建完了,这里的主要思路是服务器端调用视频转换工具 ffmpeg.exe,设置参数,通过Main来实现转换。如果有问题请和我联系。
posted @ 2007-06-19 10:12 秀才 阅读(5037) 评论(28)  编辑 收藏 所属分类: .net开发心得

  回复  引用  查看    
#1楼 2007-06-19 10:25 | overred      
你这个貌似能把avi的转成flv,至于其他的格式你还得二次转换,这个才是最重要的,也是大家最关心的,我这有把大部分格式转为flv的demo以及组件,有兴趣可以交流!

  回复  引用  查看    
#2楼 2007-06-19 10:42 | 申健      
@overred
如果有好东东写出来大家共享一下吧。
  回复  引用  查看    
#3楼 2007-06-19 10:44 | 若寒      
先谢谢分享。
如果转换很长的视频文件,Sleep(6000);就 return true;可能视频还没转换完。期待更好的解决方法。
目前我正伤脑筋。。


  回复  引用  查看    
#4楼 2007-06-19 10:49 | overred      
@申健
等我有时间拉吧

基本上覆盖世面上的一些视频格式到flv的转换.采用比较落后的msmq队列(也是若寒问题的解决方法之一)
如果你有钱可以使用on2的流媒体服务器,直接解码,貌似3000多$每年

有兴趣的可以给我交流

  回复  引用    
#5楼 2007-06-19 10:52 | kerry [未注册用户]
能否边传边转?
  回复  引用  查看    
#6楼 2007-06-19 10:54 | YAO.NET℡      
while (true)
{

怎感觉很别扭呢.

另外,有一种转换失败的情况,这种情况C#的try不能捕获,但是文件就是没有生成,这种错误情况的处理.
在文件较大,文件较多的情形下,还得考虑队列转换,也即多线程+队列,否则若干个视频同时转服务器当掉.
你的 while (true)之所以感觉别扭,是因为ffmpeg会出一种莫名的错误,将整个线程阻死,而问题是C#并捕获不到,所以一直就卡那儿了.

还有就是overred 所说的对于wmv,rm的一些格式的处理,可能要二次转换.

  回复  引用    
#7楼 2007-06-19 11:06 | quickcn [未注册用户]
比较有用。
  回复  引用  查看    
#8楼 2007-06-19 11:07 | 若寒      
我现在用mencoder.exe转换成flv,多种格式的转换都没问题。
在文件较大,文件较多的情形下,还得考虑队列转换,也即多线程+队列?这个不是很清楚,得先了解一下,谢谢YAO.NET.
  回复  引用  查看    
#9楼 2007-06-19 11:08 | YAO.NET℡      
@若寒
通过Sleep不是好办法,不准确.
我想你头痛的和我当年遇到的一样.

  回复  引用  查看    
#10楼 2007-06-19 11:09 | YAO.NET℡      
不要使用Process.Start()直接ffmpeg.exe,改用C#执行bat文件,bat文件我们可以自定义,比如转换命令后,写一句exit,在转换命名执行完后,窗口会关闭,C#会捕获窗口关闭,再发出自定义事件消息,在自定义事件里检查文件是否生成即可知,但仍不是100%准确.

最好的办法是使用VC++,直接研究ffmpeg源码,最准确.




  回复  引用  查看    
#11楼 2007-06-19 11:14 | overred      
建议有人创建个flv视频转换的qq群,呵呵 只是建议(本人创建不了)