C语言ffmpeg合并多个视频,ffmpeg合并多个视频

///

///遍历文件夹获取所有视频路径///

///

private void TraverseFolder(string path,stringfilepath)

{

DirectoryInfo dInfo= newDirectoryInfo(path);

Dictionary dic = new Dictionary();

Dictionary dic2 = new Dictionary();

List list = new List();//遍历该文件夹

foreach (FileInfo fileitem indInfo.GetFiles())

{if (fileitem.Extension == ".mp4")

{

dic.Add(fileitem.Name, fileitem.FullName);

}

}

list= dic2.OrderBy(p => p.Key).Select(p => p.Value).ToList();//遍历获取所有需要合并视频的路径(为了保证视频合并后播放的顺序是正确的,所有需要合并的视频命名是有序的)

VideoCombine(list, filepath); //执行视频合并操作

}///

///

///

/// 需要合并视频路径(含文件名和文件类型)集合

/// 合并后文件路径(含文件名和文件类型)

public void VideoCombine(List list, stringDstFile)

{//DstFile=@"E:\新建文件夹\新视频.mp4";

string strTmp = "";string strCmd = "";

StringBuilder sb= newStringBuilder();

sb.Append("-i \"concat:");foreach (var item inlist)

{

strTmp= item + ".ts";

strCmd= "-i" + item + "-c copy -bsf:v h264_mp4toannexb -f mpegts" + strTmp + "-y";

CombineImplement(strCmd);

sb.Append($"{strTmp}|");

}

sb.Remove(sb.ToString().LastIndexOf('|'), 1);

sb.Append($"\" -c copy -bsf:a aac_adtstoasc -movflags +faststart {DstFile} -y");var path =sb.ToString();

CombineImplement(path);

}public void CombineImplement(stringstrCmd)

{string exe = @"C\ffmpeg.exe";//转换文件类型,由于不是所有类型的视频文件都支持直接合并,需要先转换格式

System.Diagnostics.Process p = newSystem.Diagnostics.Process();

p.StartInfo.FileName= exe;//要执行的程序名称

p.StartInfo.Arguments = " " +strCmd;

p.StartInfo.UseShellExecute= false;

p.StartInfo.RedirectStandardInput= false;//可能接受来自调用程序的输入信息

p.StartInfo.RedirectStandardOutput = false;//由调用程序获取输出信息

p.StartInfo.RedirectStandardError = false;//重定向标准错误输出

p.StartInfo.CreateNoWindow = false;//不显示程序窗口

p.Start();//启动程序

p.WaitForExit();

p.Close();

p.Dispose();

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/261049.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

android应用开发全程实录-实现甩动拨打和挂断电话

今天继续给大家带来《Android应用开发全程实录》中的章节,这部分是讲传感器中的一个实例。 通过上面的例子我们学会了如何获得某种类型的传感器,下面通过一个实例来学习如何使用某一个类型的传感器。我们以加速传感器为例,来实现这样一个功能…

static的应用以及静态与非静态的区别

先前看到一个技术大牛写了一个关于静态成员与非静态成员,静态方法和非静态方法的各自区别,觉得挺好的,在这里写一个小程序来说明这些区别。 package com.liaojianya.chapter5; /*** This program will demonstrate the use of static method.…

Python中抓网页的小陷阱

这边博客已经搬家到这里了。我的个人博客,风格我自己更喜欢,也可以完全控制。当然,会花一点钱,但是基本能承受。 欢迎各位来观光,博客园很棒,但是有一个自己能控制的网站也许会更好。另外,不能发…

C# 打印文件

http://support.microsoft.com/kb/322091转载于:https://www.cnblogs.com/xbgz/p/3431463.html

c语言穷举算法 枚举法,c语言枚举法 穷举法 ppt课件

枚举法 穷举法 笨人之法 把所有可能的情况一一测试 筛选出符合条件的各种结果进行输出 分析 这是个不定方程 三元一次方程组问题 三个变量 两个方程 x y z 1005x 3y z 3 100设公鸡为x只 母鸡为y只 小鸡为z只 百元买百鸡问题分析 x y z 1005x 3y z 3 100 三重循环 voidmain intx…

装饰模式(Decorator pattern)

装饰模式又名包装(Wrapper)模式。装饰模式以对客户端透明的方式扩展对象的功能,是继承关系的一个替代方案。 装饰模式的结构 装饰模式以对客户透明的方式动态地给一个对象附加上更多的责任。换言之,客户端并不会觉得对象在装饰前和装饰后有什么不同。装饰…

恶补sql知识(一)

索引的定义 SQL Server的索引值是对数据库中一个或者多个列的值进行排序的结构。 索引几个特性: 1)索引可以提高数据的访问速度 只有在适当的位置建立索引,就能大幅度提高,实际上,您可以把索引理解为一种特殊目录。微软的SQL SERV…

php连接数据库输出的中文几个字就…

我们首先假设数据库中采用的编码为UTF-8 这时我们在PHP页面中应当首先添加 "Content-Type" content"text/html; charsetutf-8" />文件保存时的编码类型也必须是utf-8。 之后在数据库查询前添加 mysql_query("set names utf8");注:…

android开启服务器配置,Android基于XMPP开发(一)【openfire服务器配置】

OpenFireOpenFire 是采用Java开发的基于XMPP(Jabber)协议,开源实时协作(RTC)服务器。Smack 是用 Java编 写的XMPP客户端代码库,是 spark 的核心开源界总是有许多有趣的东东,这三个合起来就是一个完整的XMPP IM 实现。OpenFire ——服务器端Sp…

Python 生成器 迭代器

1.1 生成器通过列表生成式,我们可以直接创建一个列表。但是,受到内存限制,列表容量肯定是有限的。而且,创建一个包含100万个元素的列表,不仅占用很大的存储空间,如果我们仅仅需要访问前面几个元素&#x…

寻路基本工具类定义 AIDefine.cpp

1 #include "AIDefine.h" 2 3 PointI AI_FindHelpPoint[8] {PointI(-1,0),PointI(0,-1),PointI(1,0),PointI(0,1),PointI(-1,-1),PointI(1,-1),PointI(1,1),PointI(-1,1)}; 转载于:https://www.cnblogs.com/liusijian/p/3438542.html

android相对布局代码,Android基础_3 Activity相对布局(示例代码)

相对布局要比前面讲的线性布局和表格布局要灵活一些,所以平常用得也是比较多的。相对布局控件的位置是与其周围控件的位置相关的,从名字可以看出来,这些位置都是相对的,确定出了其中一个控件的位置就可以确定另一个控件的位置了。…

WSDL文件生成WEB service server端C#程序

一般一个已经实现功能的WEB Server会发布自己的WSDL文件,供客户端生成代理类。 但有时是先有的server与client交互的接口定义(WSDL)文件,然后由server和client端分别写程序,一个提供web服务,一个使用web服…

php二维数组排序 按照指定的key 对数组进行排序

2019独角兽企业重金招聘Python工程师标准>>> /*** desc arraySort php二维数组排序 按照指定的key 对数组进行排序* param array $arr 将要排序的数组* param string $keys 指定排序的key* param string $type 排序类型 asc | desc* return array*/ function arrayS…

剑指Offer - 九度1367 - 二叉搜索树的后序遍历序列

剑指Offer - 九度1367 - 二叉搜索树的后序遍历序列2013-11-23 03:16 题目描述:输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。 输入:每个测试案例包…

13个代码注释的小技巧

13个代码注释的小技巧 这篇文章是由Jos M. Aguilar在他卓越的博客中以西班牙语的形式首发,其后Timm Martin在获得Aguilar先生的授权下,对该文章进行翻译、修改,并且在DevTopics上发布。 以下13个小技巧可以使得你的代码在长时间内依然能够保…

android webview onconsolemessage,Android WebView一些特殊的使用

在Android5.0之前,webView默认是允许加载混合网络协议内容的;在5.0以上,默认不允许加载http和https的混合内容if (Build.VERSION.SDK_INT > Build.VERSION_CODES.LOLLIPOP) {webView.getSettings().setMixedContentMode(WebSettings.MIXED…

让您的Xcode键字如飞

2019独角兽企业重金招聘Python工程师标准>>> 作者:吴白(微博) 手指在键盘上飞速跳跃,终端上的代码也随着飞舞,是的这确实很酷。优秀的程序员总是这么一群人,他们不拘于现状,不固步自封,他们喜欢…

【Android Developers Training】 6. 配置Action Bar

注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好。 原文链接:http://developer.android.com/training/basics/actionbar/setting-up.html 配…

android 7 创建文件夹,Android 在 res/layout 文件夹 下创建一个 子文件夹实例

Android 资源文件夹 Layout 文件夹Layout文件是存放Android的布局文件的资源文件夹,但是如果你想要在里面创建子文件夹,你会发现xml文件报错。如何在Layout文件夹下方创建Layout的子文件夹。这边我们需要著一个一个点就是我们的Layout 文件夹是属于资源文…