C# Winfrom使用ffmpeg转换视频格式(新)


C# Winfrom使用ffmpeg转换视频格式的demo,5.29更新加入CPU核心利用率,视频压缩率,去除目标格式选择,需要的可自行在源码中添加
资源截图
代码片段和文件信息
/*
 * author:Joey Zhao
 * date:2010-12-1
 * describe:带百分比的进度条使用方法:
 * 1 实例化一个ProcessOperator对象;
 * 2,赋值BackgroundWork(类型为一个参数,无返回值的委托,其中参数是一个具有一个int类型参数无返回值的委托,用来预报进度)属性为要在后台执行的方法,详见TestForm中的示例
 * 3,调用Start方法开始执行
 * 4 在事件BackgroundWorkerCompleted中执行后台任务完成后的操作
 */
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ComponentModel;

namespace Process_test
{
    public class PercentProcessOperator
    {
        private BackgroundWorker _backgroundWorker;//后台线程
        private ProcessForm _processForm;//进度条窗体
        private BackgroundWorkerEventArgs _eventArgs;//异常参数
        private string _inforMessage;

        public PercentProcessOperator()
        {
            _processForm = new ProcessForm();
            _eventArgs = new BackgroundWorkerEventArgs();
            _processForm.Processstyle = System.Windows.Forms.ProgressBarstyle.Continuous;
            _backgroundWorker = new BackgroundWorker();
            _backgroundWorker.WorkerReportsProgress = true;
            _backgroundWorker.DoWork += new DoWorkEventHandler(_backgroundWorker_DoWork);
            _backgroundWorker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(_backgroundWorker_RunWorkerCompleted);
            _backgroundWorker.ProgressChanged += new ProgressChangedEventHandler(_backgroundWorker_ProgressChanged);
        }

        //显示进度
        private void _backgroundWorker_ProgressChanged(object sender ProgressChangedEventArgs e)
        {
            _processForm.MessageInfo = _inforMessage + “已完成:“ + e.ProgressPercentage.ToString() + “%“;
            _processForm.ProcessValue = e.ProgressPercentage;
        }

        //操作进行完毕后关闭进度条窗体
        private void _backgroundWorker_RunWorkerCompleted(object sender RunWorkerCompletedEventArgs e)
        {
            if (_processForm.Visible == true)
            {
                _processForm.Close();
            }
            if (this.BackgroundWorkerCompleted != null)
            {
                this.BackgroundWorkerCompleted(null _eventArgs);
            }
        }

        //后台执行的操作
        private void _backgroundWorker_DoWork(object sender DoWorkEventArgs e)
        {
            if (BackgroundWork != null)
            {
                try
                {
                    BackgroundWork(this.ReportPercent);
                }
                catch (Exception ex)
                {
                    _eventArgs.BackGroundException = ex;
                }
            }
        }

        #region 公共方法、属性、事件

        /// 
        /// 设置进度条显示的提示信息
        /// 

        public string MessageInfo
        {
            set { _inforMessage = value; }
        }

        /// 
        /// 后台执行的操作参数为一个参数为int型的委托;
        /// 在客户端要执行的后台方法中可以使用Action<int>预报完成进度如:
        /// 
        /// 
        /// PercentProcessOperator o = new Percen

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2018-03-15 17:02  Process_test
     目录           0  2018-03-07 14:07  Process_testin
     目录           0  2018-03-07 15:24  Process_testinDebug
     文件       19968  2018-03-09 14:01  Process_testinDebugProcess_test.dll
     文件       24064  2018-03-09 14:01  Process_testinDebugProcess_test.pdb
     目录           0  2018-03-07 14:05  Process_testinRelease
     文件        9662  2018-03-08 18:47  Process_testitbug_favicon.ico
     目录           0  2018-03-07 14:07  Process_testobj
     目录           0  2018-03-09 14:01  Process_testobjDebug
     文件        1230  2018-03-08 09:10  Process_testobjDebugDesignTimeResolveAssemblyReferences.cache
     文件        6805  2018-03-15 14:37  Process_testobjDebugDesignTimeResolveAssemblyReferencesInput.cache
     文件          42  2018-03-07 14:07  Process_testobjDebugProcess.csproj.CoreCompileInputs.cache
     文件        1328  2018-03-07 14:09  Process_testobjDebugProcess.csproj.FileListAbsolute.txt
     文件         780  2018-03-07 14:04  Process_testobjDebugProcess.csproj.GenerateResource.Cache
     文件        1643  2018-03-07 14:04  Process_testobjDebugProcess.csprojResolveAssemblyReference.cache
     文件          42  2018-03-07 14:14  Process_testobjDebugProcessW.csproj.CoreCompileInputs.cache
     文件          42  2018-03-07 14:15  Process_testobjDebugProcess_.csproj.CoreCompileInputs.cache
     文件         521  2018-03-07 14:15  Process_testobjDebugProcess_.csproj.FileListAbsolute.txt
     文件         780  2018-03-07 14:15  Process_testobjDebugProcess_.csproj.GenerateResource.Cache
     文件          42  2018-03-09 13:59  Process_testobjDebugProcess_test.csproj.CoreCompileInputs.cache
     文件        1859  2018-03-09 14:01  Process_testobjDebugProcess_test.csproj.FileListAbsolute.txt
     文件         780  2018-03-09 14:01  Process_testobjDebugProcess_test.csproj.GenerateResource.Cache
     文件        1643  2018-03-09 14:00  Process_testobjDebugProcess_test.csprojResolveAssemblyReference.cache
     文件       19968  2018-03-09 14:01  Process_testobjDebugProcess_test.dll
     文件       24064  2018-03-09 14:01  Process_testobjDebugProcess_test.pdb
     文件         180  2018-03-09 14:01  Process_testobjDebugProcess_test.ProcessForm.resources
     目录           0  2011-04-14 23:11  Process_testobjDebugTempPE
     文件        4619  2018-03-09 13:58  Process_testPercentProcessOperator.cs
     文件         967  2018-03-15 17:02  Process_testProcessForm.cs
     文件        3954  2018-03-15 17:02  Process_testProcessForm.Designer.cs
     文件        5814  2018-03-15 17:02  Process_testProcessForm.resx
............此处省略71个文件信息

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。

发表评论

评论列表(条)