FFmpeg的下载及其简单使用

最近需要涉及一个视频格式转换的小任务,其中用到到了ffmpeg,记录一下学习笔记。

在学习的过程中发现了一个神的存在——雷神雷霄骅,可惜天妒英才呀。

1 FFmpeg简介

百度百科

FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。采用LGPL或GPL许可证。它提供了录制、转换以及流化音视频的完整解决方案。它包含了非常先进的音频/视频编解码库libavcodec,为了保证高可移植性和编解码质量,libavcodec里很多code都是从头开发的。

FFmpeg在Linux平台下开发,但它同样也可以在其它操作系统环境中编译运行,包括Windows、[Mac OS X](https://baike.baidu.com/item/Mac OS X/470629)等。这个项目最早由Fabrice Bellard发起,2004年至2015年间由Michael Niedermayer主要负责维护。许多FFmpeg的开发人员都来自MPlayer项目,而且当前FFmpeg也是放在MPlayer项目组的服务器上。项目的名称来自MPEG视频编码标准,前面的"FF"代表"Fast Forward"。 FFmpeg编码库可以使用GPU加速。

软件名称 Fast Forward Mpeg 开发商 FFmpeg team
软件平台 Linux、Windows、Mac OS X 软件授权 开源
最近更新时间 2021年4月8日 软件版本 4.4
软件语言 C语言、汇编 标准协议 LGPL/GPL

ffmpeg是一种高效的视频、音频转换器和采集器。ffmpeg通过-i选项指定任意数量输入文件,输入文件的类型可以是常规的音视频文件,也可以是管道、网络流、采集设备等,同时也可以生成任意数量的输出文件。

输入、输出文件的流类型、数量原则上是没有限制的,但会受到容器格式(container format)限制,输出流格式可以默认(自动)采用哪个输入流的格式,也可以通过-map指定采用哪个输入流格式。

-i指定的输入文件,以及文件的流,索引号都是从0开始,例如:2:3代表第三个输入文件中的第四个流。

原则上选项(option)应用于跟随的指定文件,因此,顺序很重要,您可以在命令行上多次使用相同的选项,但每次出现都应该应用于跟随的输入、输出文件。 此规则的例外是全局选项,应首先指定。不要混合输入文件和输出文件,首先指定所有输入文件,然后再指定所有输出文件。也不要混用属于不同文件的选项,所有选项仅适用于跟随的输入或输出文件。

2 FFmpeg组成

构成FFmpeg主要有三个部分:四个作用不同的工具软件、可以供开发者使用的SDK、整个工程的源代码。

2.1 四个作用不同的工具软件

具体为:ffmpeg.exe, ffplay.exe, ffserver.exe和ffprobe.exe

组成 介绍
ffmpeg.exe 视频转码、转换器
ffplay.exe 简单的音视频播放器
ffserver.exe 流媒体服务器
ffprobe.exe 简单的多媒体码流分析器

2.2 可供开发者使用的SDK,为各个不同平台编译完成的库

如果说上面的四个工具软件都是完成品形式的玩具,那么这些库就相当于乐高积木一样,我们可以根据自己的需求使用这些库开发自己的应用程序。

介绍
libavformat 用于各种音视频封装格式的生成和解析,包括获取解码所需信息以生成解码上下文结构和读取音视频帧等功能
libavcodec 用于各种类型声音/图像编码解码
libavutil 包含一些公共的工具函数,如随机数生成器、数据结构、数字函数等功能
libswscale 用于视频场景比例缩放、色彩空间和像素格式转换
libpostproc 用于后期效果处理
libavfilter 包含多媒体处理常用的滤镜功能
libavdevice 用于音视频数据采集和渲染等功能的设备相关
libswresample 用于音频重采样和格式转换等功能

2.3 整个工具的源代码

无论是编译出来的可执行程序还是SDK,都是由这些源代码编译出来的。FFmpeg的源代码由C语言实现,主要在Linux平台上进行开发。FFmpeg不是一个孤立的工程,它还存在多个依赖的第三方工程来增强它自身的功能。在当前这一系列的博文/视频中,我们暂时不会涉及太多源代码相关的内容,主要以FFmpeg的工具和SDK的调用为主。到下一系列我们将专门研究如何编译源代码并根据源代码来进行二次开发。

3 下载工具(Windows)

FFmpeg官网

在官网上找到Download页面:

该页上可以下载FFmpeg的工具、库和源代码等。在选择"Windows Packages"下的Windows Builds后,会跳转到Windows版本的下载页面:

这里的话我选择Windows64的,然后是gpl的压缩包,可以看出,它是最大的。

下载后把它解压到对应的路径中:

然后在系统变量中添加一个FFMPEG_HOME:

最后在path中添加指向FFmpeg的bin路径:

验证是否安装成功(切换到命令行窗口,输入ffmpeg -version,出现如下界面就说明成功了):

4 简单使用

4.1 ffmpeg.exe

4.1.1 基本使用
  • 功能

    ffmpeg.exe用于视频的转码。

  • 最简单的命令

ffmpeg -i input.avi -b:v 640k output.ts

​ 该命令是将当前文件夹下的input.avi文件转换成output.ts文件,并将output.tx文件视频的码率设置为640kbps

  • 命令格式
ffmpeg -i [输入文件路径] -b:b [输出视频码率] [输出文件路径]

​ 所有的参数都是以键值对的形式指定的。例如输入文件参数是"-i",而参数值就是文件路径;输出视频码率参数是"-b:v",而参数值是视频的码率值。但是注意位于最后面的输出路劲前面不包含参数名称。

4.1.2 命令参数
命令 说明
-h 帮助
-i filename 输入文件
-t duration 设置处理时间,格式为hh:mm:ss
-ss position 设置起始时间,格式为hh:mm:ss
-b:v bitrate 设置视频码率
-b:a bitrate 设置音频码率
-r fps 设置帧率
-s wxh 设置帧大小,格式为WxH
-c:v codec 设置视频编码器
-c:a codec 设置音频编码器
-ar frep 设置音频采样率

详细的参数设置可以访问FFmpeg官方文档进行学习

也可以直接参考雷神的FFmpeg参数中文详细解释

4.2 ffplay.exe

4.2.1 基本使用
  • 功能

    用于播放的应用程序

  • 简单的播放命令

    播放test.mp4的命令为:

    ffplay test.mp4

具体使用参考ffplay的快捷键以及选项

4.3 ffprobe.exe

ffprobe是用于查看文件格式的应用程序。

详细使用可以参考官方说明

5 参考文章

FFmpeg官网

FFmpeg官方文档

FFMPEG视音频编解码零基础学习方法(雷霄骅-雷神)

《基于 FFmpeg + SDL 的视频播放器的制作》课程的视频(雷霄骅-雷神)

之后几天扫地生将会结合springboot做一个实现一些音视频的格式转换的demo...同样的,也会以笔记的形式记录具体步骤。

FFmpeg的下载及其简单使用相关推荐

  1. ffmpeg 的下载与使用

    ffmpeg 的下载与使用 1. 下载 进入官网,使用git下载或者在列表中选择所需要的版本下载. 解压至对应文件夹(比如建一个名为ffmpeg的文件夹),将该文件夹的路径添加至环境变量中.添加至系统 ...

  2. 一条ffmpeg命令下载完整腾讯视频

    一条ffmpeg命令下载完整腾讯视频 前一个文章介绍了一个脚本解决下载完整腾讯视频文件的方法:脚本工具之下载M3U8文件类型的完整视频 , 同时介绍了如何通过JS命令自动提取M3U8地址,并通过脚本完 ...

  3. linux ffmpeg 64下载,linux ffmpeg 怎么编64位

    1.下载ffmpeg. 下载网址:http://www.ffmpeg.org/download.html 2.解压缩 tar -zxvf ffmpeg-2.0.1.tar.gz 3.配置,生成Make ...

  4. Socket编程Http下载的简单实现

    Socket编程Http下载的简单实现 - Mr.DejaVu - 博客园 <C/C++> Socket编程Http下载的简单实现 下载原理: 网上介绍很多,就是按照Http协议,使用So ...

  5. TML5期末大作业:动漫网站设计——神偷奶爸(10页) HT简单个人网页设计作业 静态动漫主题网页作业 DW个人网站模板下载 大学生简单个人网页作品代码

    HTML5期末大作业:动漫网站设计--神偷奶爸(10页) HT简单个人网页设计作业 静态动漫主题网页作业 DW个人网站模板下载 大学生简单个人网页作品代码 常见网页设计作业题材有 个人. 美食. 公司 ...

  6. KODI软件的下载与简单使用(开启倍速到1.1,1.2,1.3等等或整数倍速)

    KODI软件的下载与简单使用 本身想要的功能是Windows10 播放路由器上挂载的硬盘视频,传输协议是dlna,无奈巨硬的播放器不好用,于是寻求支持dlna的播放器并且是开源的(迅雷看看不敢粘了,怕 ...

  7. ffmpeg webm 提取_ffmpeg简单使用教程 转码、压制、提取、截取、合并、录屏等

    1.查看帮助文档 ffmpeg是一个开源的音视频转码工具 本文是自己学习ffmpeg使用方式的一个笔记 将ffmpeg命令行工具加入环境变量之后,输入ffmpeg -h打印帮助文档 PS C:\Use ...

  8. ccleaner下载与简单设置

    ccleaner下载与简单设置 ccleaner可以清除windows系统中我们不再需要或是使用的垃圾文件,腾出电脑可用空间.它还有一个强大的功能就是用来清除我们的上网记录.CCleaner软件所用空 ...

  9. (已更新)趣味制作生成微信小程序源码下载-安装简单方便

    这是一个diy类型的制作生成小程序源码 里面有多种素材生成,可以用来娱乐吧! 比如有的类型如:退出酒场告知书,喝酒认怂书,等等 小程序安装的话还是挺方便的,特别适合新手 PS:里面的二维码的话小编替换 ...

  10. HTML5期末大作业:商城网站设计——仿团购商城(1页) 简单个人网页设计作业 静态HTML旅行主题网页作业 DW个人网站模板下载 大学生简单个人网页作品代码 个人网页制作 学生个人网页Dreamwe

    HTML5期末大作业:商城网站设计--仿团购商城(1页) 简单个人网页设计作业 静态HTML旅行主题网页作业 DW个人网站模板下载 大学生简单个人网页作品代码 个人网页制作 学生个人网页Dreamwe ...

最新文章

  1. 【每日一算法】杨辉三角到底是什么?
  2. 如何列出更改了特定文件的所有提交?
  3. extjs4 java_extjs4 Accordion布局
  4. 用tirgger实现主键自增(trigger+sequence)
  5. ITK:计算灰度图像的梯度幅度递推高斯
  6. 剧情介绍:“肖申克的救赎”
  7. html box 竖线,CSS3 小竖条脉冲型LOADING动效
  8. Messari:自2019年,DeFi领域因黑客攻击损失超2.84亿美元资产
  9. X86汇编语言从实模式到保护模式20:平坦模型
  10. JPA 单元测试配置
  11. 强制换行word-break:break-all或者word-wrap:break-word都无效的解决方法
  12. [Java] Maven 建立 Spring MVC 工程
  13. oracle 删除数据_Oracle海量数据表标准删除方案--分步分阶段大表删除
  14. FPGA零基础学习:数字电路中的数字表示
  15. html数字自动滚动代码,HTML+JS实现滚动数字的时钟
  16. iOS监听键盘的删除按键事件
  17. android倒影效果,Android 设置图片倒影效果
  18. NVIDIA JETSON TX1刷机重装系统笔记
  19. Carla release与ros-bridge
  20. java直接打印数组 结果输出[I@28d93b30

热门文章

  1. 解决 Adobe 系列绿色版本无法打开的问题
  2. vpp自动化测试报错调试
  3. 计算机控制机器人运动的原理,工业机器人控制系统的基本原理
  4. 概率论与数理统计(陈希孺)学习笔记
  5. API函数大全(转载)
  6. 软考试题希赛网爬取过程分享一
  7. 视频工具mencoder
  8. html5 加入收藏夹,设为首页、添加到收藏夹代码
  9. haimeiktv服务器系统,海媚 Haimei KTV8001 智能网络效果器
  10. 计算机无法连接蓝牙键盘,终于理会电脑无法识别蓝牙鼠标键盘