最近需要涉及一个视频格式转换的小任务,其中用到到了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加速。

2 FFmpeg组成

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

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

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

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

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

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 命令参数

详细的参数设置可以访问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的下载及其简单使用_梁山水帘大观园之刘皇叔-扫地生的博客-CSDN博客

★文末名片可以免费领取音视频开发学习资料,内容包括(FFmpeg ,webRTC ,rtmp ,hls ,rtsp ,ffplay ,srs)以及音视频学习路线图等等。

见下方!↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

 

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐