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

打印 上一主题 下一主题

主题 542|帖子 542|积分 1626

  最近遇到公司的一个项目,需要将多张图片合并成一个播放的视频,找了很多资料和尝试了工具,遇到很多的坑,这里记下来,希望大家也能顺利解决遇到的问题。
  合并视频,主要可以借用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,可以不影响后面图片的播放。
 

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

曂沅仴駦

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表