名字由来:"FFmpeg"这个单词中的"FF"指的是"Fast Forward"[2]

时间:2022-04-04 04:21:07

先介绍一下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下载

先到下载ffmpeg安置文件

名字由来:"FFmpeg"这个单词中的"FF"指的是"Fast Forward"[2]

名字由来:"FFmpeg"这个单词中的"FF"指的是"Fast Forward"[2]

名字由来:"FFmpeg"这个单词中的"FF"指的是"Fast Forward"[2]

接着中间部分黑体字 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文件夹里貌似是一些编码的默认设置吧,我猜的,不懂,想了解还是百度吧,度娘真是万能的)

名字由来:"FFmpeg"这个单词中的"FF"指的是"Fast Forward"[2]

名字由来:"FFmpeg"这个单词中的"FF"指的是"Fast Forward"[2]

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

三、ffmpeg验证

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

呈现下列提示,即暗示ffmpeg安置告成

名字由来:"FFmpeg"这个单词中的"FF"指的是"Fast Forward"[2]

四、ffmpeg简单应用

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

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

ffmpeg.exe -i C:\Users\Administrator\Desktop\video\20150407_174405.mp4 -r 30 -s 640x480 C:\Users\Administrator\Desktop\video/%d.jpg

-i 是选择被执行文件

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

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

C#代码实现

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

/// <summary> /// 音频格局转换 /// </summary> /// <param>转换前文件路径/文件名</param> /// <param>转换后文件路径/文件名</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; } }