♣FFmpeg是什么?

FFmpeg组成

下载工具

♣安装FFmpeg

♣应用到j2ee项目


前言:学习视频编码,一定要知道雷霄骅(leixiaohua1020)的专栏 ,伟大的程序员,26岁去世。雷霄骅---巨星陨落。此文多为摘录自ffmpeg的文档。

官网:https://www.ffmpeg.org/

github地址:https://github.com/FFmpeg/FFmpeg

1.FFmpeg是什么?

  引用百度百科,FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。采用LGPL或GPL许可证。它提供了录制、转换以及流化音视频的完整解决方案。它包含了非常先进的音频/视频编解码库libavcodec,为了保证高可移植性和编解码质量,libavcodec里很多code都是从头开发的。
  FFmpeg在Linux平台下开发,但它同样也可以在其它操作系统环境中编译运行,包括Windows、Mac OS X等。这个项目最早由Fabrice Bellard发起,2004年至2015年间由Michael Niedermayer主要负责维护。许多FFmpeg的开发人员都来自MPlayer项目,而且当前FFmpeg也是放在MPlayer项目组的服务器上。项目的名称来自MPEG视频编码标准,前面的"FF"代表"Fast Forward"。
2.FFmpeg组成

构成FFmpeg主要有三个部分,

2.1第一部分是四个作用不同的工具软件,分别是:ffmpeg.exe,ffplay.exe,ffserver.exe和ffprobe.exe。

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

2.2第二部分是可以供开发者使用的SDK,为各个不同平台编译完成的库。如果说上面的四个工具软件都是完整成品形式的玩具,那么这些库就相当于乐高积木一样,我们可以根据自己的需求使用这些库开发自己的应用程序。这些库有:

  • libavcodec:包含音视频编码器和解码器
  • libavutil:包含多媒体应用常用的简化编程的工具,如随机数生成器、数据结构、数学函数等功能
  • libavformat:包含多种多媒体容器格式的封装、解封装工具
  • libavfilter:包含多媒体处理常用的滤镜功能
  • libavdevice:用于音视频数据采集和渲染等功能的设备相关
  • libswscale:用于图像缩放和色彩空间和像素格式转换功能
  • libswresample:用于音频重采样和格式转换等功能

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

3.下载工具

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

在下载页面上,我们可以看到,对于32位和64位版本,分别提供了三种不同的模式:static、shared和dev

  • static: 该版本提供了静态版本的FFmpeg工具,将依赖的库生成在了最终的可执行文件中;作为工具而言此版本就可以满足我们的需求;
  • share: 该版本的工具包括可执行文件和dll,程序运行过程必须依赖于提供的dll文件;
  • dev: 提供了库的头文件和dll的引导库;

4.安装FFmpeg

4.1 这里下载的是static版本,将其下载解压到E:\javaEdit\ffmpeg目录下:

4.2配置环境变量:E:\javaEdit\ffmpeg\bin;

4.3 dos窗口输入 ffmpeg -version  命令,如有信息则说明成功:

5.应用到j2ee项目:

 最简单的视频网站(JavaEE+FFmpeg)

最新文章

  1. Linux系统下面挂载u盘
  2. SQL Server 2012安装后找不到服务器名称的解决办法!!!
  3. Codeforces 615C Running Track(DP + Trie树)
  4. Linux摄像头驱动学习之:(三)从零写虚拟驱动(仿照vivi.c)
  5. ServiceLocator是反模式
  6. 求时间差的sql语句。 比如如下数据
  7. Qt中暂停线程的执行(利用QMutex,超级简单明了)
  8. Linux Shell编程(5)——shell特殊字符(下)
  9. (转)25个增强iOS应用程序性能的提示和技巧--初级篇
  10. JavaScript实现浏览器本地的图像移动、大小调整和裁剪
  11. TypeScript: this bind 和 回调的正确用法
  12. urllib设置debuglevel打开调试开关
  13. linux 查看信息-进程&用户&服务&程序
  14. git命令行解决冲突文件步骤
  15. 【转】Windows下selenium+python自动化测试环境搭建
  16. JSONArray
  17. 代码统计工具cloc
  18. Selenium之前世今生
  19. mysql5.7 主从复制的正常切换【转】
  20. [Go] Beego 模板嵌套 使用总结

热门文章

  1. 关于解决配置Tomact过程中出现的相关问题
  2. NOIP2009T3最优贸易
  3. redis object 对象系统
  4. Asp.net Authorization 学习
  5. Extjs6(三)——用extjs6.0写一个简单页面
  6. 【转载】GPIO模拟i2c通信
  7. mui开发app之js将base64转图片文件
  8. final的用法
  9. MarkDown本地图片上传工具制作总结
  10. WPF报表自定义通用可筛选列头-WPF特工队内部资料