FFmpeg一些感想

用了ffmpeg这么多年,感觉其就是一个开源库的集合体。ffmpeg包含的八个库:

1libswscale(视频像素数据格式转换)

2libswresample(音频采样数据格式转换)

3libpostproc(后加工)

4libavutil(工具库)

5libavformat(封装格式处理)

6libavfilter(滤波特效处理)

7libavdevice(各种设备的输入和输出)

但是这些库依赖于其他许多开源库,感觉就是一个开源库大杂烩:

1、bzip2

bzip2 是一个基于Burrows-Wheeler 变换的无损压缩软件,压缩效果比传统的LZ77/LZ78压缩算法来得好。

 

2enca

'Enca'基于对其语言的了解来检测文本文件的编码。 它还可以将它们转换为其他编码,让您在不知道当前编码的情况下重新编码文件。 它支持大多数中欧和东欧语言,以及一些独立于语言的Unicode变体。

 

3、expat

Expat是一个用C语言开发的、用来解析XML文档的开发库,它最初是开源的、Mozilla 项目下的一个XML解析器。

 

4fdk-aac

fdk-aac软件包提供Fraunhofer FDK AAC库,据称是高质量的高级音频编解码实现。

 

5、Fontconfig

Fontconfig是一个用于配置和自定义字体访问的库。

 

6、freetype2

FreeType是一个免费提供的软件库,用于渲染字体。

 

7、FriBidi

FriBidi是Unicode双向(BiDi)算法的免费实现。 它还提供实用程序功能,以帮助开发实现BiDi功能的交互式编辑器和小部件。 BiDi算法是支持从右到左脚本的先决条件,例如希伯来语,阿拉伯语,叙利亚语和Thaana。

 

8、game-music-emu

game-music-emu是各种视频游戏控制台硬件的音频模拟器集合。 它最初由Blargg开发,在转换为库之前用作其他几个软件产品的基础。 然后将其修复为在其他平台上构建,并用于支持其他库的音频插件,例如GStreamer和FFmpeg。

 

9、gmb

GMP是一个免费的库,用于任意精度算术,对有符号整数,有理数和浮点数进行操作。 精度没有实际限制,除了机器GMP中可用内存所暗示的那些限制。 GMP具有丰富的功能,并且功能具有常规接口。

 

10、gnutls

GnuTLS是一个安全的通信库,实现了围绕它们的SSL,TLS和DTLS协议和技术。 它提供了一个简单的C语言应用程序编程接口(API)来访问安全通信协议以及用于解析和编写X.509,PKCS#12和其他所需结构的API。

 

11、harfbuzz

HarfBuzz是一个文本整形引擎。 它主要支持OpenType,还支持[Apple Advanced Typography | https://developer.apple.com/fonts/TrueType-Reference-Manual/RM06/Chap6AATIntro.html]]。 HarfBuzz用于Android,Chrome,ChromeOS,Firefox,GNOME,GTK +,KDE,LibreOffice,OpenJDK,PlayStation,Qt,XeTeX等场所。

 

12、lame

LAME是LGPL许可的高质量MPEG Audio Layer III(MP3)编码器。

 

13、libaacs

libaacs是一个实现高级访问内容系统规范的研究项目。

 

14、libass

libass是ASS / SSA(高级变电站Alpha / Substation Alpha)字幕格式的便携式字幕渲染器,允许比传统SRT和类似格式更高级的字幕。

 

15、libbdplus

libbdplus是一个实施BD +系统规范的研究项目。

 

16、libbluray

libbluray是一个开源库,专为播放媒体播放器(如VLC或MPlayer)的蓝光光盘而设计。

 

17、libcdio

GNU光盘输入和控制库(libcdio)包含一个用于CD-ROM和CD映像访问的库。 希望忽略CD-ROM的OS和设备相关属性或各种CD图像格式的特定细节的应用程序可能会受益于使用此库。

 

18、libcdio-paranoia

GNU光盘输入和控制库(libcdio)包含一个用于CD-ROM和CD映像访问的库。 希望忽略CD-ROM的OS和设备相关属性或各种CD图像格式的特定细节的应用程序可能会受益于使用此库。

 

19、libdvdcss

libdvdcss是一个简单的库,用于访问像块设备这样的DVD而不必担心解密。

 

20、libdvdnav&libdvdread

libdvdnav是一个面向多媒体应用程序开发人员的库。 它可以轻松使用复杂的DVD导航功能,如DVD菜单,多角度播放甚至交互式DVD游戏。 所有这些功能都是通过一个简单的API提供的,该API将DVD播放作为单个逻辑块流提供,由特殊的dvdnav事件中断以报告某些条件。 libdvdnav的主要用法是定期调用函数来获取下一个块的循环,包含额外的调用以告诉库用户交互。 整个DVD虚拟机和内部播放状态都是完全封装的。

 

21、libgcrypt

Libgcrypt是一个通用的加密库,最初基于GnuPG的代码。 它为所有加密构建块提供功能:对称密码算法(AES,Arcfour,Blowfish,Camellia,CAST5,ChaCha20 DES,GOST28147,Salsa20,SEED,Serpent,Twofish)和模式(ECB,CFB,CBC,OFB,CTR,CCM) ,GCM,OCB,POLY1305,AESWRAP),哈希算法(MD2,MD4,MD5,GOST R 34.11,RIPE-MD160,SHA-1,SHA2-224,SHA2-256,SHA2-384,SHA2-512,SHA3-224) ,SHA3-256,SHA3-384,SHA3-512,SHAKE-128,SHAKE-256,TIGER-192,Whirlpool),MAC(所有哈希算法的HMAC,所有密码算法的CMAC,GMAC-AES,GMAC-CAMELLIA, GMAC-TWOFISH,GMAC-SERPENT,GMAC-SEED,Poly1305,Poly1305-AES,Poly1305-CAMELLIA,Poly1305-TWOFISH,Poly1305-SERPENT,Poly1305-SEED),公钥算法(RSA,Elgamal,DSA,ECDSA,EdDSA,ECDH) ),大整数函数,随机数和许多支持函数。

 

22、libgpg-error

libgpg-error包中包含一个库,用于定义所有GnuPG组件的常见错误值。

 

23、libiconv

国际文本大多以Unicode编码。 但是,由于历史原因,它有时仍使用语言或国家/地区相关的字符编码进行编码。 随着互联网的出现以及各国之间频繁的文本交换 - 即使从外国查看网页也是这种情况下的“文本交换” - 这些编码之间的转换已成为必需。

 

24、libilbc

iLBC是一种专为包交换网络通信设计的编解码,优于目前流行的G.729G.723.1,对丢包进行了特有处理,即使在丢包率相当高的网络环境下,仍可获得非常清晰的语音效果。

 

25liblzma

LZMA,(Lempel-Ziv-Markov chain-Algorithm的缩写),是一个DeflateLZ77算法改良和优化后的压缩算法,开发者是Igor Pavlov2001年被首次应用于7-Zip压缩工具中,是 2001年以来得到发展的一个数据压缩算法。它使用类似于 LZ77 的字典编码机制,在一般的情况下压缩率比 bzip2 为高,用于压缩的可变字典最大可达4GB

 

26libmfx

效果器。

 

27libmodplug

用于加载和呈现音乐模块文件的库。

 

28libmp3lame

LAME是一个开源的MP3解码编码工具

 

29libnettle

Nettle是一个加密库,旨在轻松适应或多或少的任何环境:面向对象语言(C ++PythonPike...)的加密工具包,LSHGNUPG等应用程序,甚至内核空间。 在大多数情况下,您需要的不仅仅是基本的加密算法,还需要一些方法来跟踪可用的算法,它们的属性和变体。 您经常会有一些算法选择过程,通常由您想要实现的协议决定。

 

30libogg

Ogg全称是OGGVobis(oggVorbis)是一种音频压缩格式,类似于MP3等的音乐格式Ogg是完全免费、开放和没有专利限制的。OggVorbis文件的扩展名是".ogg"Ogg文件格式可以不断地进行大小和音质的改良,而不影响旧有的编码器或播放器。

 

31libopus

opus是一种声音编码格式,Opus的前身是celt编码器。是由IETF开发,适用于网络上的实时声音传输,标准格式为RFC6716

 

32libsdl

SDLSimple DirectMedia Layer)是一套开放源代码的跨平台多媒体开发库,使用C语言写成。SDL提供了数种控制图像、声音、输出入的函数,让开发者只要用相同或是相似的代码就可以开发出跨多个平台(LinuxWindowsMac OS X等)的应用软件。目前SDL多用于开发游戏、模拟器、媒体播放器等多媒体应用领域。

 

33libsoxr

SoX重采样器库libsoxr执行快速,高质量的一维采样率转换。

 

 

34libspeex

Speex是一种开源/免费软件专利的音频压缩格式,专为语音而设计。 Speex项目旨在通过提供昂贵的专有语音编解码器的免费替代方案来降低语音应用的进入门槛。 此外,Speex非常适合Internet应用程序,并提供大多数其他编解码器中不存在的有用功能。 最后,SpeexGNU项目的一部分,可以通过修订后的BSD许可证获得。

 

35libssh

libssh是一个用C语言编写的库,它实现了SSH协议。 它可用于实现客户端和服务器应用程序。 它可以扩展到数千个用户。

 

36libtheora

TheoraXiph.org Foundation提供的免费开放视频压缩格式。 与我们所有的多媒体技术一样,它可用于在线和光盘上分发电影和视频,而无需许可和版税费用或与其他格式相关的供应商锁定。

Theora从邮票扩展到HD分辨率,在低比特率下被认为特别具有竞争力。 它与MPEG-4 / DiVX属于同一类,与Vorbis音频编解码器一样,随着编码器技术的发展,它还有很大的改进空间。

 

37libvorbis

Ogg Vorbis是一种完全开放,非专有,专利和免版税的通用压缩音频格式,适用于固定和可变比特率的中高质量(8kHz-48.0kHz16 + bit,和弦)音频和音乐 16128 kbps /通道。 这使得Vorbis在与MPEG-4AAC)等音频表示相同的竞争级别中,与MPEG-1/2音频第3层,MPEG-4音频(TwinVQ),WMAPAC相似,但性能更高。

 

38libvpx

Vp8,vp9的编解码器

 

39libx264

x264是一个免费软件库和应用程序,用于将视频流编码为H.264 / MPEG-4 AVC压缩格式,并根据GNU GPL条款发布。

 

40libx265

x265是一个免费软件库和应用程序,用于将视频流编码为H.265 / MPEG-H HEVC压缩格式,并根据GNU GPL条款发布。

 

41libxml2

Libxml2是为Gnome项目开发的XML C解析器和工具包(但可以在Gnome平台之外使用),它是MIT License下的免费软件。 XML本身是设计标记语言的元语言,即使用括在尖括号之间的额外“标记”信息将语义和结构添加到内容的文本语言。 HTML是最着名的标记语言。 尽管该库是用C语言编写的,但各种语言绑定使其可以在其他环境中使用。

已知Libxml2非常便携,该库应该在各种系统(LinuxUnixWindowsCygWinMacOSMacOS XRISC OsOS / 2VMSQNXMVSVxWorks)上构建和工作而不会出现严重问题

 

42libxvidcore

免费的视频编解码器,压缩和质量很强。

 

43libzlib

zlib是提供数据压缩用的函式库,由Jean-loup GaillyMark Adler所开发,初版0.9版在199551日发表。zlib使用DEFLATE算法,最初是为libpng函式库所写的,后来普遍为许多软件所使用。此函式库为自由软件,使用zlib授权。截至20073月,zlib是包含在Coverity美国国土安全部赞助者选择继续审查的开源项目。

我所能知道的就是以上43个开源库,也许还有其他的.........

 

你可能感兴趣的:(ffmpeg)