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,可以不影响后面图片的播放。

 

原文链接:https://www.cnblogs.com/mominghei/p/17362820.html

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#:使用ffmpeg将图片合并成视频 - Python技术站

(0)
上一篇 2023年5月5日
下一篇 2023年5月5日

相关文章

  • c#自定义泛型类的实现

    实现自定义泛型类的步骤如下: 定义泛型类 定义一个泛型类,可以使用 class 关键字,紧随其后的是类名和泛型参数列表。然后在类中可以使用泛型参数,类似于普通的类型。例如: public class MyGenericClass<T> { private T data; public MyGenericClass(T data) { this.d…

    C# 2023年6月7日
    00
  • ASP.NET AJAX 4.0的模版编程(Template Programming)介绍

    ASP.NET AJAX 4.0的模板编程(Template Programming)是一种用于生成动态HTML内容的技术。在本文中,我们将介绍ASP.NET AJAX 4.0的模板编程,包括模板引擎、模板语法和示例代码。 模板引擎 ASP.NET AJAX 4.0的模板引擎是一种用于生成动态HTML内容的技术。它使用一种类似于ASP.NET的语法来定义模板…

    C# 2023年5月15日
    00
  • 混合语言编程—C#使用原生的Directx和OpenGL绘图的方法

    概述 混合语言编程指的是使用不同语言编写的程序相互合作,完成视觉效果加强和功能的增强等需求。在本攻略中,我们将介绍如何使用C#语言使用原生的Directx和OpenGL库进行绘图。 必要条件 在开始使用C#语言绘制图形之前,你需要安装.NET Framework 4.5或更高版本。这将为你提供运行时环境和开发工具。同时,要在C#中访问Directx和Open…

    C# 2023年6月6日
    00
  • C#后台调用前台JS函数方法

    C#后台调用前台JS函数方法,可以通过JavaScript Interop实现。具体实现步骤如下: 1.在前端代码中定义需要被后台调用的JS函数方法,使用window对象的属性定义方式,例如: window.invokeHelloWorld = function(message){ console.log(`Hello ${message} from Jav…

    C# 2023年6月7日
    00
  • 如何利用FluentMigrator实现数据库迁移

    如何利用FluentMigrator实现数据库迁移 FluentMigrator 是一个用于 .NET 平台下的数据库迁移工具。它的主要目标是让数据迁移变得容易和明显。它提供了一套基于 Fluent Syntax 的 API,可让您定义和记录迁移的状态和方法。 FluentMigrator 可以通过不同的目标数据库来生成不同的 SQL 语句,目前支持的数据库…

    C# 2023年6月3日
    00
  • WPF实现文本描边+外发光效果的示例代码

    WPF(Windows Presentation Foundation)是一种用于创建Windows桌面应用程序的技术。WPF提供了丰富的UI元素和效果,可以轻松实现文本描边和外发光效果。本文将提供WPF实现文本描边和外发光效果的完整攻略,包括创建WPF应用程序、实现文本描边、实现外发光效果、示例等。 创建WPF应用程序 要创建WPF应用程序,可以使用Vis…

    C# 2023年5月15日
    00
  • 关于dotnet 替换 ASP.NET Core 的底层通讯为命名管道的 IPC 库的问题

    dotnet替换ASP.NET Core的底层通讯为命名管道的IPC库 在ASP.NET Core中,我们可以使用Inter-Process Communication(IPC)来实现进程间通信。默认情况下,ASP.NET Core使用Socket作为底层通信机制。但是,我们也可以使用命名管道来替换Socket。在本攻略中,我们将介绍如何使用命名管道来替换S…

    C# 2023年5月16日
    00
  • .net6 在中标麒麟下的安装

    尝试了下.net6在信创环境下的安装和部署 信创服务器,CPU:ARM64,操作系统:中标麒麟 v10,网络环境:政务网(无法连接外网) 1、下载 .net 6 SDK 6.0.408 Arm64二进制文件。https://dotnet.microsoft.com/zh-cn/download/dotnet/6.0 2、在服务器/home目录下创建两个新目录…

    C# 2023年4月17日
    00
合作推广
合作推广
分享本页
返回顶部