C#:使用ffmpeg将图片合并成视频

最近遇到公司的一个项目,需要将多张图片合并成一个播放的视频,找了很多资料和尝试了工具,遇到很多的坑,这里记下来,希望大家也能顺利解决遇到的问题。

合并视频,主要可以借用OpenCV 和 ffmpeg,这里是尝试用ffmpeg.exe的工具去实现图片文件合并成视频。

输入存储视频文件的路径,通过ProcessStartInfo 调用ffmpeg.exe软件启动合并图片操作,并在startInfo.Arguments写入控制指令。

#region 图片转视频
       public void ImageGetVideo()
       {          
           string ffmpeg = string.Format("{0}ffmpeg.exe", AppDomain.CurrentDomain.BaseDirectory);
           try
           {
               string videoFile = MP4Path.Text + @"test.mp4 ";  //创建视频文件命
               if (File.Exists(videoFile))
               {
                   File.Delete(videoFile);
               }

               this.KillProcess("ffmpeg");          //注意,进程名字不带.exe之类后缀

               ProcessStartInfo startInfo = new ProcessStartInfo(ffmpeg);
               startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
               // -i foo.avi -r 1 -s WxH -f image2 foo-%03d.jpeg  //这是把视频转图片的
               //及其耗CUP的指定帧截取图片帧 string.Format(" -i \"{0}\" -y -f image2 -ss {1} -s \"{2}\" \"{3}\"", vedioPath, catchTime, saveImgSize, saveImgPath)                
               //string param = string.Format(" -f image2 -i " + txtPath.Text + @"\%d.jpg -vcodec libx264 -r 10 " + MP4Path.Text + @"\test.mp4 ");
               string param = string.Format(" -f image2 -r (1/3) -i " + txtPath.Text + @"\%d.jpg -vf fps=12 " + MP4Path.Text + @"\test.mp4 ");
               //param = param + string.Format(" ffplay -i " + MP4Path.Text + @"\test.mp4 -vf setpts=PTS/(1/16)");

               startInfo.Arguments = param;              
               System.Diagnostics.Process.Start(startInfo).Close();
           }
           catch (Exception ex)
           {
               MessageBox.Show(ex.ToString());
               return;
           }
       }
       #endregion

指令注意:

” -f image2 -i ” + (图片文件地址)+ @”\%d.jpg -vcodec libx264 -r 10 ” + (视频文件地址)+ @”\test.mp4 ”  ,最后面的是存放视频的文件名称,注意这里放的图片序号一定要是连续的(例:1.jpg,2.jpg,3.jpg….),不然合并不成功,这里设置的播放图片的时间间隔是3S,并且合并图片最好在第一张图片放一张黑色底图,第一张图片切到第二图片,没有时间间隔,容易一闪而过,放一张黑色底图,序号改成1.jpg,可以不影响后面图片的播放。

作者:莫明黑 | 来源:公众号——DotNet那些事

版权声明:本文内容转自互联网,本文观点仅代表作者本人。本站仅提供信息存储空间服务,所有权归原作者所有。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至1393616908@qq.com 举报,一经查实,本站将立刻删除。

(0)

相关推荐

发表回复

登录后才能评论