C#实现 ffmpeg视频转码、播放
近来公司项目要求实现全景相机的视频截取,但是截取的视频需求转码上传。经过研究采用ffmpeg转码,奉上一个详细介绍的博文:
主要是转码的操作过程,能够实现了从相机获取的MP4转换成普通播放器播放的MP4格式;
1 //转码方法 2 private void Test1() 3 { 4 5 Process p = new Process(); 6 7 8 p.StartInfo.FileName = path +"ffmpeg.exe"; 9 10 p.StartInfo.UseShellExecute = false; 11 string srcFileName = ""; 12 string destFileName = ""; 13 srcFileName = path + "InitVideo1.mp4"; 14 15 destFileName = path + "InitVideo.mp4"; 16 17 p.StartInfo.Arguments = "-i " + srcFileName + " -y -vcodec h264 -b 500000 " + destFileName; //执行参数 18 19 p.StartInfo.UseShellExecute = false; ////不使用系统外壳程序启动进程 20 p.StartInfo.CreateNoWindow = true; //不显示dos程序窗口 21 22 p.StartInfo.RedirectStandardInput = true; 23 24 p.StartInfo.RedirectStandardOutput = true; 25 26 p.StartInfo.RedirectStandardError = true;//把外部程序错误输出写到StandardError流中 27 28 p.ErrorDataReceived += new DataReceivedEventHandler(p_ErrorDataReceived); 29 30 p.OutputDataReceived += new DataReceivedEventHandler(p_OutputDataReceived); 31 32 p.StartInfo.UseShellExecute = false; 33 34 p.Start(); 35 36 p.StartInfo.WindowStyle = ProcessWindowStyle.Hidden; 37 38 p.BeginErrorReadLine();//开始异步读取 39 40 41 42 p.WaitForExit();//阻塞等待进程结束 43 44 p.Close();//关闭进程 45 46 p.Dispose();//释放资源 47 }
附测试Demo程序: