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 + 1, indexOfEnd - indexOfBegin - 1);
                    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 + 1, indexOfEnd - indexOfBegin - 1);
                    var time =Convert.ToDouble(timeStr);
                    var process = time / timeCount*100;
                    process = Math.Round(process);
                    Console.Write("{0}% ", process);
                }
                //Console.WriteLine(e.Data);
            }
        }

        private static int ConvertStringtoSecond(string input)
        {
            int totalSecond = 0;
            try
            {
                string[] split = input.Split(new char[] { ':', '.' });
                int hour = int.Parse(split[0]) * 3600;
                int min = int.Parse(split[1]) * 60;
                int second = int.Parse(split[2]);
                int millisecond = int.Parse(split[3]) / 1000;
                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);
        }
    }

  转载来源于:http://www.cnblogs.com/zlp520/

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. SpringMvc笔记-对RESTFUL风格的配置

    1.@RequestMapping注解可以使用如下参数: 1,params:例如params={'username',"age!=100"}表示需要usernmame并且age 属 ...

  2. UVA - 658 最短路

    思路:通过前后两种状态建立一条边,利用Dijsktra就可以做了. 注意利用二进制优化. AC代码 #include <cstdio> #include <cmath> #in ...

  3. Linux的软链接和硬链接

    1.Linux链接概念Linux链接分两种,一种被称为硬链接(Hard Link),另一种被称为符号链接(Symbolic Link).默认情况下,ln命令产生硬链接. [硬连接]硬连接指通过索引节点 ...

  4. C语言视频简介

    通过学习<C语言基础视频教程>,可以让你对C语言有一个基础的了解,并且会编写一些基础的程序,本次视频主要讲解的内容有: 1. 数字的进制转换 2. 变量.运算符和表达式 3. 流程控制语句 ...

  5. Android开发学习必备的java知识

    Android开发学习必备的java知识本讲内容:对象.标识符.关键字.变量.常量.字面值.基本数据类型.整数.浮点数.布尔型.字符型.赋值.注释 Java作为一门语言,必然有他的语法规则.学习编程语 ...

  6. 基于DirectShow的MPEG-4视频传输系统的研究与实现

    1 引言     近年来,随着国民经济的发展,社会各个部门对于视频监视系统的需求越来越多.但目前的很多监视系统都跟具体的硬件相关,必须要具体的采集卡的支持才能实现.所以有必要开发一种具有通用性的视频监 ...

  7. 蜻蜓FM 涉嫌诈骗投资人和广告主源代码剖析

    本文主要内容,引用自知乎的这篇文章:如何评价蜻蜓 FM 伪造用户活跃度等数据 感谢"左莫"."任正"等热心正义的网友--左莫,任正的最早的回答猜测已经被蜻蜓FM ...

  8. R语言︱异常值检验、离群点分析、异常值处理

    每每以为攀得众山小,可.每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~ --------------------------- 笔者寄语:异常值处理一般分为以下几个步骤:异常 ...

  9. 修改windows7中文件的权限

    1.修改ntkrnlpa.exe的权限 2.鼠标右键,选择"属性" 3.单击"安全"选项,选择"高级" 4.在高级安全设置中,选择" ...

  10. 超链接a标签的属性target的可选值有哪些以及区别

    超链接a标签的属性target的可选值有哪些以及区别 1.<a target="_blank"></a> 2.<a target="_par ...