![b8d300a68bc5526fa85b4278fc34c0cb.png](https://i-blog.csdnimg.cn/blog_migrate/fd0aaff4de0d1ef98931081d6e24db04.jpeg)
作为一名音视频从业者,不可避免的会使用到开源实现的多媒体框架,涉及音频、视频,也包含不同的封装格式,还会有后处理,滤镜等等。日常的开发工作中,我们经常会用到各种开源的框架和结构,这样可以省去重复造轮子的精力,也有助于解放我们的精力,进而提供更好的产品,更好的服务不同的场景。本篇就简单罗列下我们常见和常用的一些开源框架:
编解码
说到编解码,这些年,H.264算是最大的赢家了。基于其的开源实现主要有libx264, openh264。
libx264采用c语言实现,可以支持跨平台,但原生对类Linux系统支持更好,对于H.264的编码部分也做了大量的优化!在264时代中,可谓编码中的王者。
libx264官方网站:https://www.videolan.org/developers/x264.html
libx264源码下载:
git clone https://code.videolan.org/videolan/x264.git
除了libx264,还有openh264也是不错的开源实现框架,感兴趣可以去学习了解下。
openh264官方网站:http://www.openh264.org/
openh264源码下载:
git clone https://github.com/cisco/openh264.git
说完264的实现,就该265登场了。随着视频分辨率的不断提升,视频文件在网络传输的带宽成为瓶颈。新一代的编码器HEVC(大家也习惯称之为H.265)走进了历史舞台,当前正在广泛的使用。当然,开源的实现框架也是跟得上节奏,主要是x265。
x265官方网站:http://www.x265.org/
x265源码下载:
hg clone http://hg.videolan.org/x265
注意,x265的源码管理工具非git,非svn,而是hg,下载源码会略费周折些(需要在不同的平台上安装工具,而且常常受网络情况影响)。
播放器
说完编解码,再说说播放器。开源实现的播放器也不少,主要的几个有vlc,mplayer,FFmpeg中的ffplay(FFmpeg我们一会说)。
VLC对于音视频开发者而言,不会陌生。是一个支持跨平台的播放器,还可以播放网络流,如rtsp,rtmp,本身也可以串流。不光开放源代码,而且可以有各大平台的播放器可以使用。
VLC官方网站:https://www.videolan.org/
VLC源代码下载:http://download.videolan.org/pub/videolan/vlc/
除了vlc,mplayer也是一个不错的开源播放器。mplayer对linux系统支持更好,而对windows平台不是很友好。而且其代码编译的方式也不是特别主流,需要注意,多研究一下。
mplayer官方网站:http://www.mplayerhq.hu/design7/news.html
mplayer源代码下载:
svn checkout svn://svn.mplayerhq.hu/mplayer/trunk mplayer
注意:mplayer源码使用svn管理。
流媒体服务器
接下来,再说说流媒体服务器。比较常见的流媒体服务器框架基本上就是live555和librtmp了,live555主要针对rtsp实现流媒体服务器的功能;近几年来,直播越来越火,rtmp也比较广泛的应用,于是librtmp也越来越流行,librtmp主要针对rtmp协议实现流媒体服务器的功能。
live555官网:http://www.live555.com/
live555源代码下载:http://www.live555.com/liveMedia/public/
librtmp官网:http://rtmpdump.mplayerhq.hu/
librtmp源代码下载:
git clone git://git.ffmpeg.org/rtmpdump
抓屏
再说一个抓屏的开源框架openbroadcast,openbroadcast简称obs,是针对屏幕抓取做的不错的一个开源的框架。有抓屏需求的小伙伴,不妨一试哦!
官方网站:https://obsproject.com/
源代码下载:
https://github.com/obsproject/obs-studio.git
注意:broadcast的编译需要CMake的支持。
意外的发现
在学习nvidia对FFmpeg提供硬件编解码支持的时候,看到了HandBrake。了解了一下,看上去不错,该开源框架是一个可视化的可以对部分视频文件进行编码层面编辑的软件,感兴趣的童鞋可以研究一下。放个软件的截图大家感受一下。
![53edd77fca1252c9ee1062b763a5ce7d.png](https://i-blog.csdnimg.cn/blog_migrate/a71116208de4c97288f1c98092d95c69.jpeg)
官方网站:https://handbrake.fr/
源代码下载地址:
git clone https://github.com/HandBrake/HandBrake.git
最后的王炸
最后再说一下王炸级别的选手FFmpeg。这几个字眼相信大家并不陌生,估计现在连好多的人力小姐姐和猎头小哥哥们也对这个有几分眼熟,因为搞音视频实在避不开。它能干啥就不详细说了,前面说的所有的功能,它都可以实现,而且它也支持跨平台。妥妥滴,没毛病。
![5df71d4b33942b79f2e6c27a2c4b207e.png](https://i-blog.csdnimg.cn/blog_migrate/1da2fd84f7841c7d28602c15aa9d9258.jpeg)
FFmpeg官方网站:http://ffmpeg.org/
FFmpeg源代码下载:
git clone https://git.ffmpeg.org/ffmpeg.git ffmpeg
大概就梳理这些吧,由于实际工作中的场景不同,可能还有其他一些有些的开源框架没有提到。不过,相信能了解这么多,也完全够用了。对于开源的框架,我们要记住一点,开源不等于免费。我们要懂得站在巨人的肩膀上,做出更优秀更有意义的事情。开源的框架有无数的开发者在迭代,所以,有余力的情况下多看看开源的实现,对我们而言是一个很好的提升的机会。博采众长,取其精华去其糟粕,相信我们会变得越来越强。