涵盖了 Android 音视频录制 API 、OpenGL 渲染和综合运用的例子
1.FFmpeg
Github 地址:https://github.com/FFmpeg/FFmpeg
FFmpeg应该是音视频入门必须要掌握的开源项目,涉及到音视频从生产到消费的完整过程,FFmpeg是一个综合性项目,涉及到非常多的知识点;
FFmpeg 从模块上划分可以分为下面几个模块:
libavutil:FFmpeg中通用的工具库,其他模块的通用功能会调用到这儿;
libavformat:音视频封装格式处理模块,可以用于解封和封装;
libavcodec:音视频编码解码的库,是FFmpeg的核心库;
libavfilter:滤镜特效处理的库;
libavresample:这个库已经废弃,可以忽略;
libpostproc:音视频后期加工的库;
libswresample:音频采样数据格式转化;
libswscale:视频像素数据格式转换;
libavdevice:控制各种设备的输入输出,如果需要外接设备的话,一般情况下用不到;
2.grafika
Github 地址:https://github.com/google/grafika
grafika是google推出的Android 平台的图形图像处理的库;
给出camera处理的例子;
opengl es处理的例子;
视频转码的例子;
3.ijkplayer
Github 地址:
https://github.com/bilibili/ijkplayer
ijkplayer 是哔哩哔哩公司基于ffplay开发的一个音视频播放库,目前应用的比较广泛;
可以支持所有的音频、视频格式,封装格式;
全编译出来的库约9.2M;
实现软解码和硬解码之间的切换;
实现FFmpeg很多定制的option选项;
ijkplayer支持的软解码让播放画面更加优秀;还可以解决直播流过程中切换码流导致的花屏和黑屏问题
4.GPUImage
Github 地址:https://github.com/cats-oss/android-gpuimage
GPUImage 毫无疑问是音视频项目里面必读工程了,它的侧重点在于渲染方面。
有些公司的招聘要求上可能都会写明熟悉GPUImage ,重要性可见一斑。
通过阅读 GPUImage 的源码,能够让你掌握 OpenGL 的渲染以及渲染链的搭建,同时工程里面很多特效 Shader 代码,通过阅读和实践这些 Shader 代码,能够让你掌握初步的 Shader 编写能力。
比如常见的滤镜效果,在 GPUImage 就有现成的代码例子,这一点在我的直播中也有讲到。有兴趣的可以翻阅视频,掌握常见滤镜效果的代码编写。
5.AudioVideoRecordingSample
Github 地址: https://github.com/saki4510t/AudioVideoRecordingSample
此项目的侧重点在于 Android 音视频相关 API 的使用,尤其是在 录制和编码方面的。
该项目运行后能够将 Camera 采集的视频和音频内容编码成一个 MP4 文件。
这其中用到了 MediaCodec 做编码,用到了 MediaMuxer 将音频和视频混合。
这样的一个完整示例对于掌握 Android 上音视频相关 API 帮忙非常大,因为它能够成功正确运行,而且可以通过去修改其源码来做自己的实验,验证自己对于 API 的理解和掌握。
当你能够熟练掌握其内容,或者你就可以试着更进一步,尝试用 FFmpeg 做音视频的编码和混合,实现和 Android 音视频 API 一样的功能
6.vlc-android
Github 地址:https://github.com/videolan/vlc-android
vlc-android是videolan 研究机构推出的一个播放框架;这个播放框架的思路和ijkplayer是完全不一样的,ijkplayer是基于ffplay,整体架构比较简单,因为核心的功能都由ffmpeg的ffplay模块帮忙实现了,但是vlc整体是pipeline实现的,编码解码以及解封的模块都是videolan自己实现的,和ffmpeg是两种演进思路;
vlc 整体效率感觉更好一些;
vlc-android编译出来的包过大,约20M,这是工程开发无法忍受的;
vlc的更新节奏非常快,不像ijkplayer,目前基本上没有太多bilibili公司的人维护了;
7.mp4parser
Github 地址:https://github.com/sannies/mp4parser
mp4parser是读、写mp4 封装格式的库,只是操作封装格式,不是操作编码、解码格式,这个有很大的不同,想要熟悉mp4封装格式的同学,可以读一下mp4parser的源码;
8.SopCastComponent
Github 地址:https://github.com/LaiFeng-Android/SopCastComponent
这是优酷的“来疯”团队推出的一个完全Java层实现的直播sdk;
可以实现camera本地推流操作;
可以实现线上camera rtmp推流;
实现camera 滤镜 推流;
9.ExoPlayer
Github 地址:https://github.com/google/ExoPlayer
ExoPlayer是google开源的一个播放器库,是基于MediaPlayer的一个扩展,核心原理是分离音频和视频流,然后基于MediaCodec硬解码解析数据,目前的稳定性比较好,而且效率较高;如果你的视频源本身比较简单或者播放过程中不涉及码流的切换等等,建议还是选择ExoPlayer,播放效果更佳;
10.MediaSDK
Github 地址:https://github.com/JeffMony/MediaSDK
这是本人开发的一个视频边下边播的工具;
封装了ijkplayer、exoplayer、mediaplayer 三种播放器;
实现了视频下载队列化处理,m3u8和非m3u8视频下载;
实现m3u8、非m3u8视频边下边播功能;
本地代理实现边下边播功能;
1、本站所有资源均从互联网上收集整理而来,仅供学习交流之用,因此不包含技术服务请大家谅解!
2、本站不提供任何实质性的付费和支付资源,所有需要积分下载的资源均为网站运营赞助费用或者线下劳务费用!
3、本站所有资源仅用于学习及研究使用,您必须在下载后的24小时内删除所下载资源,切勿用于商业用途,否则由此引发的法律纠纷及连带责任本站和发布者概不承担!
4、本站站内提供的所有可下载资源,本站保证未做任何负面改动(不包含修复bug和完善功能等正面优化或二次开发),但本站不保证资源的准确性、安全性和完整性,用户下载后自行斟酌,我们以交流学习为目的,并不是所有的源码都100%无错或无bug!如有链接无法下载、失效或广告,请联系客服处理!
5、本站资源除标明原创外均来自网络整理,版权归原作者或本站特约原创作者所有,如侵犯到您的合法权益,请立即告知本站,本站将及时予与删除并致以最深的歉意!
6、如果您也有好的资源或教程,您可以投稿发布,成功分享后有站币奖励和额外收入!
7、如果您喜欢该资源,请支持官方正版资源,以得到更好的正版服务!
8、请您认真阅读上述内容,注册本站用户或下载本站资源即您同意上述内容!
原文链接:https://www.shuli.cc/?p=8407,转载请注明出处。
评论0