c#  ffmpeg视频转换

什么是ffmpeg,它有什么作用呢,怎么可以使用它呢,带着问题去找答案吧!先参考百度百科把,我觉得它很强大无奇不有,为了方便大家我就把链接提供了!

http://baike.baidu.com/link?url=bD4xX59DgppfdclpyGfmC38WTeEkOTM9yc35XGi4OLnQYY7BqmPJSIZHyPKp0imUdI2yujK76Nm047ACZW2hHa

今天工作中遇到这么个问题,这个问题很屌,我通过搜索引擎找了个遍,几乎没有找到理想的答案,于是被逼无奈之下,自己研究参数,于是就有了如下的成就,所以,遇到问题不要害怕,这才是成长最快的时刻。当问题解决了的时候,会有种无比的成就感,把自己的成果分享给他人,供他人参考,这也是种喜悦!

------------没有做不到的,只有想不到的。

转码进度公式=当前时间/总时间*100%;

   public class FFmpeg
{
static int timeCount;
public static void Execute()
{
Process p = new Process();
p.StartInfo.FileName = @"E:\张立平资料\Demo\FFmpeg_Demo\ffmpeg\ffmpeg.exe";
p.StartInfo.UseShellExecute = false;
string srcFileName = @"E:\张立平资料\Demo\FFmpeg_Demo\videoold\test.mov";
string destFileName = @"E:\张立平资料\Demo\FFmpeg_Demo\videonew\test.mp4";
p.StartInfo.Arguments = "-i " + srcFileName + " -y -ab 56 -ar 22050 -b 800 -r 29.97 -s 420x340 " + destFileName; //执行参数
//-i D:/vts-collector/test/swap/7a3c9800-2e2f-42fe-ba39-56b25f972e06.mov -y -ab 56 -ar 22050 -b 800 -r 29.97 -s 420x340 D:/vts-collector/test/swap/7a3c9800-2e2f-42fe-ba39-56b25f972e06_mov_stream.mp4 p.StartInfo.RedirectStandardInput = true;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.RedirectStandardError = true;//把外部程序错误输出写到StandardError流中
p.ErrorDataReceived += new DataReceivedEventHandler(p_ErrorDataReceived);
p.OutputDataReceived += new DataReceivedEventHandler(p_OutputDataReceived); using (p)
{
p.Start();
p.BeginErrorReadLine();//开始异步读取
p.WaitForExit();//阻塞等待进程结束
p.Close();//关闭进程
}
} private static void p_ErrorDataReceived(object sender, DataReceivedEventArgs e)
{ var output = e.Data;
if (output != null)
{
if (output.Contains("Duration"))
{
Int32 indexOfDuration = output.IndexOf("Duration");
Int32 indexOfBegin = output.IndexOf(":", indexOfDuration);
Int32 indexOfEnd = output.IndexOf(",", indexOfBegin);
var duration = output.Substring(indexOfBegin + , indexOfEnd - indexOfBegin - );
timeCount =ConvertStringtoSecond(duration);
}
if (output.Contains("time="))
{
Int32 indexOfTime = output.IndexOf("time=");
Int32 indexOfBegin = output.IndexOf("=", indexOfTime);
Int32 indexOfEnd = output.IndexOf("bitrate", indexOfBegin);
string timeStr = output.Substring(indexOfBegin + , indexOfEnd - indexOfBegin - );
var time =Convert.ToDouble(timeStr);
var process = time / timeCount*;
process = Math.Round(process);
Console.Write("{0}% ", process);
}
//Console.WriteLine(e.Data);
}
} private static int ConvertStringtoSecond(string input)
{
int totalSecond = ;
try
{
string[] split = input.Split(new char[] { ':', '.' });
int hour = int.Parse(split[]) * ;
int min = int.Parse(split[]) * ;
int second = int.Parse(split[]);
int millisecond = int.Parse(split[]) / ;
totalSecond = hour + min + second + millisecond;
}
catch (System.Exception ex)
{
Console.Write(ex.Message); }
return totalSecond;
} private static void p_OutputDataReceived(object sender, DataReceivedEventArgs e)
{
Console.WriteLine(e.Data);
}
}

c# ffmpeg视频转换的更多相关文章

  1. c# ffmpeg视频转换【转载】

    c#  ffmpeg视频转换 什么是ffmpeg,它有什么作用呢,怎么可以使用它呢,带着问题去找答案吧!先参考百度百科把,我觉得它很强大无奇不有,为了方便大家我就把链接提供了! http://baik ...

  2. windows下使用ffmpeg进行视频转换和截图。

    author:fanfq(xiaoban) Email:fangqing.fan#gmail.comlink:http://fanfq.iteye.com/admin/blogs/655569chan ...

  3. C# 利用ffmpeg 对视频转换系类操作 (1) 基本分析

    最近公司做一个项目,开发一个视频站点.项目需求中有很多视频转换的需求,如:格式转换(flv,Mp4),视频水印,视频截图,视频合成,获取视频的基本信息(时间戳,视频大小等).经过网络的收集资料以及自己 ...

  4. java 实现视频转换通用工具类:视频截图-Ffmpeg(四)

    java 实现视频转换通用工具类:获取视频元数据信息(一) java 实现视频转换通用工具类:视频相互转换-总方法及Mencoder(二) java 实现视频转换通用工具类:视频相互转换-Ffmpeg ...

  5. java 实现视频转换通用工具类:视频相互转换-Ffmpeg(三)

    java 实现视频转换通用工具类:获取视频元数据信息(一) java 实现视频转换通用工具类:视频相互转换-总方法及Mencoder(二) 这节主要是ffmpeg的相关方法封装,在实际调用中主要使用f ...

  6. 使用ffmpeg 对视频截图,和视频转换格式

    //执行CMD命令方法 public static void CmdProcess(string command)//调用CMD        {            //实例化一个进程类      ...

  7. ffmpeg在asp.net 视频转换

    ffmpeg是一个源于Linux的工具软件,是FLV视频转换器,可以轻易地实现FLV向其它格式avi.asf. mpeg的转换或者将其它格式转换为flv.在视频播客中,我们通常使用它把我们上传的视频转 ...

  8. Java+Windows+ffmpeg实现视频转换

    最近由于项目需要,研究了一下如何用Java实现视频转换,“着实”废了点心思,整理整理,写出给自己备忘下. 思路 由于之前没有没法过相关功能的经验,一开始来真不知道从哪里入手.当然,这个解决,googl ...

  9. C# ffmpeg 视频处理格式转换具体案例

    C# ffmpeg 视频处理格式转换 C# ffmpeg 视频处理格式转换avi到MP4格式 1.代码如下: using System;using System.Diagnostics; namesp ...

随机推荐

  1. Node.js 学习(五)Node.js 事件循环

    Node.js 是单进程单线程应用程序,但是通过事件和回调支持并发,所以性能非常高. Node.js 的每一个 API 都是异步的,并作为一个独立线程运行,使用异步函数调用,并处理并发. Node.j ...

  2. 单点登录(iwantmoon.com出品)

    早年便听到单点登录,一直因为感觉很简单,就没有动手去弄,正好现在公司有要求,那么OK,直接做了一个单机版的单点登录. 原理,可以参考SSO. Now,我们来看看我的实现吧.看下图 我们平时所做的登录, ...

  3. SPFA 原理剖析代码实现分析比较

    算法简介 SPFA(Shortest Path Faster Algorithm)是Bellman-Ford算法的一种队列实现,减少了不必要的冗余计算. 算法流程 算法大致流程是用一个队列来进行维护. ...

  4. 【Python】Eclipse和pydev搭建Python开发环境

    参考资料:         http://www.dotnet120.com/page/10545/   1.准备工作:         下载32位的JDK6 Java的开发包          下载 ...

  5. spring framework项目源码github托管地址

    方法一:直接下载,github托管地址:http://repo.spring.io/simple/libs-release-local/org/springframework/spring/ 方法二: ...

  6. 引入代码后,在@override报错

    最近引入了spring的源码到工程里,发现凡是@override修饰的代码都会报错 这里有java历史的原因 5及以前不支持@override的注解,所以,此时,你最需要知道的是当前项目djk的编译版 ...

  7. asp.net中实现群发邮件功能

    前段时间在帮老师开发的网站中需要用到一个群发邮件的功能,而自己之前学习cms系统的时候用的we7的群发邮件功能也有一些问题,于是乎便自己去网上查了一下资料,自己总结了一下,并且封装成了一个类,亲测有用 ...

  8. magic_quotes_runtime 与 magic_quotes_gpc

    magic_quotes_runtime 与 magic_quotes_gpc 这两个函数都是管理是否对数据进行特殊符号转义,但是他们针对的处理对象不同: magic_quotes_gpc的设定值将会 ...

  9. Codeforces Round #216 (Div. 2)解题报告

    又范低级错误! 只做了两题!一道还被HACK了,囧! A:看了很久!应该是到语文题: 代码:#include<iostream> #include<];    ,m2=;    ;i ...

  10. [转]日期格式化(yyyy-MM-dd)中,为什么 M 多大写?

    最近犯了个可傻逼的错误,格式化年月日的时候不小心将yyyy-MM-dd写成YYYY-MM-dd,导致格式化结果中年不正确. 看看知乎上的说法 问题: http://www.zhihu.com/ques ...