zoukankan      html  css  js  c++  java
  • ffmpeg下载安装和简单应用(C#音频格式转换)

    ffmpeg下载安装和简单应用

    先介绍一下ffmpeg:FFmpeg是一个自由软件,可以运行音频和视频多种格式的录影、转换、流功能,包含了libavcodec —这是一个用于多个项目中音频和视频的解码器库,以及libavformat——一个音频与视频格式转换库。
    名字由来:"FFmpeg"这个单词中的"FF"指的是"Fast Forward"[2]。有些新手写信给"FFmpeg"的项目负责人,询问FF是不是代表“Fast Free”或者“Fast Fourier”等意思,"FFmpeg"的项目负责人回信说“Just for the record, the original meaning of "FF" in FFmpeg is "Fast Forward"...”

    一、ffmpeg下载

    先到http://ffmpeg.org/下载ffmpeg安装文件

    接着中间部分黑体字 Latest Zeranoe FFmpeg Build Version下面有系统标注,32位还是64位,并且都有三种版本,简单介绍一下,都是我理解的想法,不太懂英文,大家见谅。
    Static Versions是集成版,就是全都封装在一个exe可执行文件里了。
    Shared Versions是共享版,这个是总的执行程序和一些lib库文件在一个文件夹里,应该是为了可以自定义库吧,我猜的。
    Dev Versions是开发版,里面完全是脚本,看样子像Linux下的,这个真不懂。

    大家按自己的系统位数建议选择Static Versions集成版,只需要一个文件ok了,干净方便。

    二、ffmpeg安装

    a、解压下载完的ffmpeg-20150407-git-c4b2017-win64-shared

    解压后如图,(doc文件夹就是关于文档,licenses是声明,这个有个开源软件协议,了解详情请百度,presets文件夹里貌似是一些编码的默认设置吧,我猜的,不懂,想了解还是百度吧,度娘真是万能的)

    b、将ffmpeg.exe的路径配置到环境变量里的Path里

    三、ffmpeg验证

    Alt+r,输入cmd,在dos命令行输入 ffmpeg

    出现下列提示,即表示ffmpeg安装成功

    四、ffmpeg简单应用

    目前我是用来把录制好的视频转换成图片

    ffmpeg.exe -i 路径待转换的文件名.mp4 -r 30 -s 640*480 转换后保存的路径文件夹名/%d.jpg 

    ffmpeg.exe -i C:UsersAdministratorDesktopvideo20150407_174405.mp4 -r 30 -s 640x480 C:UsersAdministratorDesktopvideo/%d.jpg

    -i 是选择被执行文件

    -r 30 是转换后视频的帧率,就是每秒的帧数

    -s 640*480 是转换后视屏的分辨率

    C#代码实现

    首先,得下载个“ffmpeg.exe” 插件,然后把它放到你的项目中,如下图:
    程序中会调用该文件,以助于转换音频格式!

            /// <summary>
            /// 音频格式转换
            /// </summary>
            /// <param name="pathBefore">转换前文件路径/文件名</param>
            /// <param name="pathLater">转换后文件路径/文件名</param>
            /// <returns></returns>
            public string ConvertToMp3(string pathBefore, string pathLater)
            {
                //string pathBefore = MapPathFile("~/Attachment/AlertMessage/") + "20180309194843";
                //string pathLater = MapPathFile("~/Attachment/AlertMessage/") + "20180309194855.mp3";
    
                string c = MapPathFile("/Resources/ffmpeg/") + @"ffmpeg.exe -i " + pathBefore + " " + pathLater;
                string str = RunCmd(c);
                return str;
            }
    
            /// <summary>
            /// 执行Cmd命令
            /// </summary>
            private string RunCmd(string c)
            {
                try
                {
                    ProcessStartInfo info = new ProcessStartInfo("cmd.exe");
                    info.RedirectStandardOutput = false;
                    info.UseShellExecute = false;
                    Process p = Process.Start(info);
                    p.StartInfo.UseShellExecute = false;
                    p.StartInfo.RedirectStandardInput = true;
                    p.StartInfo.RedirectStandardOutput = true;
                    p.StartInfo.RedirectStandardError = true;
                    p.Start();
                    p.StandardInput.WriteLine(c);
                    p.StandardInput.AutoFlush = true;
                    Thread.Sleep(1000);
                    p.StandardInput.WriteLine("exit");
                    p.WaitForExit();
                    string outStr = p.StandardOutput.ReadToEnd();
                    p.Close();
                    return outStr;
                }
                catch (Exception ex)
                {
                    return "error" + ex.Message;
                }
            }
  • 相关阅读:
    WPF、UWP以及其他类型项目的csproj文件的迁移(SDK-Style)
    文书生成笔录预设保存按钮Mq中间转传服务
    卷宗添加争议焦点数据制造脚本(卷宗部分)
    案件信息同步之后,文书系统案件名称显示不正确问题
    DISTINCT----mysql移除返回的重复值
    Nginx系列教程(6)Nginx location 匹配规则详细解说
    转载 chrony 详解
    dmesg 时间转换
    axios---get和post用法详解
    通过递归来封装sessionStorage---set/get/delete
  • 原文地址:https://www.cnblogs.com/zyx321/p/8550637.html
Copyright © 2011-2022 走看看