音视频领域的C/C 开发库主要有三个:ffmpeg和vlc、gstreamer
一、FFmpeg
FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。它包括了目前领先的音/视频编码库libavcodec
。 FFmpeg
是在 Linux
下开发出来的,但它可以在包括 Windows
在内的大多数操作系统中编译。这个项目是由 Fabrice Bellard
发起的,现在由 Michael Niedermayer
主持。可以轻易地实现多种视频格式之间的相互转换,例如可以将摄录下的视频avi
等转成现在视频网站所采用的flv
格式。
FFmpeg
是一个开源免费跨平台的视频和音频流方案,属于自由软件,采用LGPL或GPL许可证(依据你选择的组件)。它提供了录制、转换以及流化音视 频的完整解决方案。它包含了非常先进的音频/视频编解码库libavcodec
,为了保证高可移植性和编解码质量,libavcodec
里很多codec
都是从头开发的。
1、项目组成
FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。它包括了目前领先的音/视频编码库libavcodec等。
- libavformat :用于各种音视频封装格式的生成和解析,包括获取解码所需信息以生成解码上下文结构和读取音视频帧等功能;
- libavcodec :用于各种类型声音/图像编解码;
- libavutil :包含一些公共的工具函数;
- libswscale :用于视频场景比例缩放、色彩映射转换;
- libpostproc:用于后期效果处理;
- ffmpeg :该项目提供的一个工具,可用于格式转换、解码或电视卡即时编码等;
- ffsever :一个 HTTP 多媒体即时广播串流服务器;
- ffplay :是一个简单的播放器,使用ffmpeg 库解析和解码,通过SDL显示。
2、libav
Open source audio and video processing tools
- https://github.com/libav/libav
二、vlc
VLC多媒体播放器VLC多媒体播放器(最初命名为VideoLAN客户端)是VideoLAN计划的多媒体播放器。它支持众多音频与视频解码器及档案格式,并支持DVD影碟,VCD影碟及各类串流协定。它亦能作为unicast 或multicast的串流服务器在IPv4 或 IPv6的高速网络连线下使用。它融合了FFmpeg计划的解码器与libdvdcss程序库使其有播放多媒体档案及加密DVD影碟的功能。
VLC还有一个非常好的功能——播放那些没有下载完整的视频文件。
VLC 是一款自由、开源的跨平台多媒体播放器及框架,可播放大多数多媒体文件,以及 DVD、音频 CD、VCD 及各类流媒体协议。
优点:简单、快速、强大
- 能播放任何内容 - 文件、光盘、摄像头、设备及流媒体
- 可播放大多数格式,无需安装编解码器包 - MPEG-2, MPEG-4, H.264, MKV, WebM, WMV, MP3…
- 可在所有平台运行 - Windows, Linux, Mac OS X, Unix, iOS, Android …
- 完全免费 - 无间谍软件,无广告,无跟踪用户的行为
三、gstreamer
GStreamer is a library for constructing graphs of media-handling components. The applications it supports range from simple Ogg/Vorbis playback, audio/video streaming to complex audio (mixing) and video (non-linear editing) processing.
- https://github.com/GStreamer/gstreamer
四、一些基于FFmpeg和libvlc的开源库
- QTAV
- VLC-Qt
- https://github.com/vlc-qt
五、参考资料
- 【整理】Libav、FFmpeg、mplayer、VLC开源项目、FFDshow