1.ffmpeg
https://github.com/FFmpeg/FFmpeg
ffmpeg应该是音视频入门必须要掌握的开源项目,涉及到音视频从生产到消费的完整过程,ffmpeg是一个综合性项目,涉及到非常多的知识点;
ffmpeg 从模块上划分可以分为下面几个模块:
2.grafika
https://github.com/google/grafika
grafika是google推出的Android 平台的图形图像处理的库;
3.ijkplayer
https://github.com/bilibili/ijkplayer
ijkplayer 是哔哩哔哩公司基于ffplay开发的一个音视频播放库,目前应用的比较广泛;
ijkplayer支持的软解码让播放画面更加优秀;还可以解决直播流过程中切换码流导致的花屏和黑屏问题。
4.android-gpuimage
https://github.com/cats-oss/android-gpuimage
gpuimage是基于opengl es 2.0的开源的图像处理库,可以用来给图像、实时camera、视频、电影等添加滤镜;
目前gpuimage支持很多滤镜,具体的可以参考一下github的上面显示的filter。
5.vlc-android
https://github.com/videolan/vlc-android
vlc-android是videolan 研究机构推出的一个播放框架;这个播放框架的思路和ijkplayer是完全不一样的,ijkplayer是基于ffplay,整体架构比较简单,因为核心的功能都由ffmpeg的ffplay模块帮忙实现了,但是vlc整体是pipeline实现的,编码解码以及解封的模块都是videolan自己实现的,和ffmpeg是两种演进思路;
6.mp4parser
https://github.com/sannies/mp4parser
mp4parser是读、写mp4 封装格式的库,只是操作封装格式,不是操作编码、解码格式,这个有很大的不同,想要熟悉mp4封装格式的同学,可以读一下mp4parser的源码;
7.SopCastComponent
https://github.com/LaiFeng-Android/SopCastComponent
这是优酷的“来疯”团队推出的一个完全Java层实现的直播sdk;
8.ExoPlayer
https://github.com/google/ExoPlayer
ExoPlayer是google开源的一个播放器库,是基于MediaPlayer的一个扩展,核心原理是分离音频和视频流,然后基于MediaCodec硬解码解析数据,目前的稳定性比较好,而且效率较高;如果你的视频源本身比较简单或者播放过程中不涉及码流的切换等等,建议还是选择ExoPlayer,播放效果更佳;
9.MediaSDK
https://github.com/JeffMony/MediaSDK
这是本人开发的一个视频边下边播的工具;
10.AndroidVideoCache
https://github.com/danikula/AndroidVideoCache
这是github上非常火的一个mp4边下边播的库,也是基于本地代理的,可以参考起来使用;
11.LiTr
https://github.com/linkedin/LiTr
这是LinkedIn公司推出的一个轻量级的基于硬件加速的视频、音频编码解码的工具软件,封装的非常好,很值得学习;