日期:2014-05-18 浏览次数:20509 次
RunFFMpeg(str); //运行FFMpeg的视频解码, public void RunFFMpeg(string strCmd) { //创建并启动一个新进程 Process p = new Process(); //设置进程启动信息属性StartInfo,这是ProcessStartInfo类,包括了一些属性和方法: p.StartInfo.FileName = "ffmpeg.exe"; //程序名 p.StartInfo.Arguments = " -i " + strCmd; //执行参数 p.Start(); } //运行Cmd.exe执行Dos 命令,并返回执行结果 public string RunCmd(string command) { //创建并启动一个对进程 Process p = new Process(); //Process类有一个StartInfo属性,这是ProcessStartInfo类,包括了一些属性和方法,例如: p.StartInfo.FileName = "cmd.exe"; //程序名 p.StartInfo.Arguments = " /c " + command; //执行参数 p.StartInfo.UseShellExecute = false; //关闭Shell的使用 p.StartInfo.RedirectStandardInput = true; //重定向标准输入 p.StartInfo.RedirectStandardOutput = true; //重定向标准输出 p.StartInfo.RedirectStandardError = true; //重定向错误输出 p.StartInfo.CreateNoWindow = true; //设置不显示窗口 p.Start(); //p.StandardInput.WriteLine(command); //也可以用這種方式輸入要執行的命令 //p.StandardInput.WriteLine("exit"); //不過要記得加上Exit要不然下一行程式執行的時候會當機 //必须创建可以自动转换完成以后,结束进程的代码 return p.StandardOutput.ReadToEnd(); //從輸出流取得命令執行結果 } ------------------------------------ 另一种方法: 用MEncoder转换视频文件为Flv mencoder 转换视频注意事项 1、下载 mencoder.exe 和 mplayer.exe 2、将mencoder.exe 所在文件夹,加入环境变量Path里面 ,如C:\mplayer 3、微软键+R,输入cmd,命令行打入如下语法 mencoder d:\test.avi -o d:\testflv.flv -of lavf -lavfopts i_certify_that_my_video_stream_does_not_use_b_frames -oac mp3lame -lameopts abr:br=56 -ovc lavc -lavcopts vcodec=flv:vbitrate=100:mbd=2:mv0:trell:v4mv:cbp:last_pred=3:dia=4:cmp=6:vb_strategy=1 -vf scale=512:-3 -ofps 12 -srate 22050 语法说明: mencoder d:\test.avi -o d:\testflv.flv //将D:\test.avi 输出到 d:\testflv.flv, 参数 -o 代表输出路径 -of lavf //参数 -of :输出文件的格式,flv文件是属于lavf格式 -lavfopts i_certify_that_my_video_stream_does_not_use_b_frames //lavf格式的参数设置,对于转换flv格式,最好加上这个长句。意思是不用bframes。 -oac mp3lame //输出音频编码器,这里用的mp3lame -lameopts abr:br=56 //是专门针对mp3lame的参数设置,abr:br=56,是设置音频比特率为56 -ovc lavc //输出视频编码器 //视频编码器的设置: -lavcopts vcodec=flv: //指定视频编码器为flv vbitrate=500: //指定视频比特率为500 ,低品质为150kb/s,中等品质为400kb/s,高品质为700kb/s mbd=2: //宏模块选择算法,值为0~2默认为0,值越大转换越缓慢,但在品质和文件大小方面有好处 mv0: //编译每个宏模块并选择最好的一个,当mbd=0时无效; trell: //会稍微增加品质,mbd>0时效果更明显; v4mv: //量子化网格搜索,对每8×8block找到最优化编码 cbp: //只能和trell一期使用,评估失真的图像块编码; last_pred=3: //与上一帧相比的移动数量预测,值为0~99,1~3比较合适,大于3时对品质的提高已经无关紧要,但却会降低速度; dia=4: //移动搜索范围,值为-99~6,对于快速转换,-1是个不错的值,如果不是很重视速度,可以考虑2~4; cmp=6: //值为1~2000,默认为0,设置用于全象素移动预算的比较函数 vb_strategy=1 //对动作很大的场景会有帮助,对有些视频,设置vmax_b_frames会有损品质,加上vb_strategy=1会好点。 //mencoder的参数 -vf scale=512:-3 //-vf表示视频格式scale是缩放,512:-3表示强制将宽度设置为512,高度写为-3表示保持高宽比,也可以设置为-1或-2, -ofps 12 /*输出视频的帧频,一般,用于flash播放的视频帧频高了没有意义,反而会增加视频文件大小,但如果ofps设置的不合适, 比如源视频帧频不是ofps的整数倍,可能会导致转换后的视频、音频不同步, 似乎可以将这一参数改为-noskip来解决这一问题;*/ -srate 22050 //音频采样率一般为22050或44100。