那些我磕过的音视频项目总结
视频编辑
最近项目一直在做这个,对标是抖音,剪影,微视以及b站的必剪。陆陆续续看了不少项目,按开发历程记录如下
1.https://github.com/shaopx/VideoClipEditViewTest
用原生MediaCodec, Opengl对视频进行处理,裁剪,滤镜,特效,抽帧等关键功能在项目初期给了我很多帮助。作者使用mediaPlayer进行播放预览,我们采用exoPlayer,拓展性要好很多。这个项目还包含闪电毛刺等特效。
2.https://github.com/MasayukiSuda/ExoPlayerFilter
基于exoPlayer播放器各种滤镜效果,上面那个半成品项目也是抄的这个,很多类似的视频编辑项目都抄这个,比较经典吧。其实各种滤镜效果跟exo没什么关系,值得参考的就是这些特效的opengl实现,在Android中的接入。
3.https://github.com/aserbao/AndroidCamera
这个demo跑起来效果不错(相对来讲),支持动态贴纸(就是gif)特效,start数有1.6K,文字贴纸的交互接近成品了,文字贴纸这部分很值得一抄。拍照部分总是挂。播放器采用mediaPlayer,抽帧使用MediaMetadataRetriever。断定录制时使用com.googlecode.mp4parse做多段音视频合并(因为音视频格式采样率什么的当然是一致的,用这个库合并也合理,但如果要添加音乐,合并背景音乐与视频原声这个库是不行的)。(有空把自己项目录制的这个参考整理一下呀)他引入了EpMedia 这个库执行ffmpeg命令。他还用了FMOD音频引擎,用来做大叔萝莉等音效变声,但是demo没有发现变声入口。
4.https://github.com/wlanjie/trinity
用kotlin和c++编写,除了界面,所有音视频处理功能都用C++实现的,短视频这块的c++源码很少见开源的,非常难得,而且同时支持软编解码和硬编解码。涉及功能非常全面,几乎覆盖抖音视频编辑的全部功能。不过问题也很多,距离正式搬到生产环境还有距离。这个项目我磕过一个月左右,因为想搭一个跨平台视频编辑sdk,(项目初期确实想走跨平台方向的,后来走偏了...)。我把基于这个项目所做的二次开发(逐帧预览、文字贴纸、修bug等),整理到了github上,地址https://github.com/meiliqin/GoldenVideoClip。
5.https://github.com/krazykira/VidEffects
一些视频特效,可作为GPUImageFilter的补充,一些filter与其实现不同,但看起来似乎效果更好(比如高斯模糊)
鼻祖级项目
1.https://github.com/cats-oss/android-gpuimage
上百种滤镜效果,熟悉的GPUImageFilter,很多java做opengl处理的项目做滤镜都是抄的这里的glsl。
2.https://github.com/google/grafika
官方opengl各种用法,初学理解
相机
1.https://github.com/CainKernel/CainCamera
美颜相机,这个项目4年前(可能是16-17年)我就有关注过,当时抖音还没有大火,我在做一个贴纸相机并生成表情包的功能,当时对标的是美颜相机,faceu,B6132,当时这一票app很热门,女生拍照必备,后来被抖音淹没了...呵,.技术的发展真快。
2.https://github.com/robertlevonyan/CameraXDemo
关于cameraX的一个好demo,cameraX各模块各功能都有涉及,研究cameraX主要是因为它的一个牛逼之处:CameraX-extension。这个拓展可以使用硬件厂商提供的相机功能api,比如Oppo的相机美颜啊夜景拍照啊做那么好,我开放第三方app相机预览也可以使用它提供的美颜接口。但是捣腾了半天仅测得一款oppo手机提供了该接口。
3.https://github.com/saki4510t/AudioVideoRecordingSample
录制和编码方面的一个基础项目,能够将 Camera 采集的视频和音频内容编码成一个 MP4 文件。
直播推流
https://github.com/hypeapps/Endoscope
我的rtsp初体验项目,很不错,修改了其中视频流尺寸支持,获取相机预览和手机编码器支持尺寸(各设备各有不同)。另外,pc要装一个vcl,直播玩起来。
自研视频播放器
1.https://github.com/CarGuo/GSYVideoPlayer.git
基于IJKplayer、ExoPlayer等播放器框架的二次开发,实现android上多种热门播放器效果,其实跟我们做的事情差不多。
2.https://github.com/bilibili/ijkplayer.git
3.https://github.com/rockcarry/fanplayer.git
同上,开源视频播放器引擎
音频处理
1.https://github.com/CrazyZty/ComposeAudio
详解如何使用代码进行音频合成
-
https://github.com/meiliqin/AndroidSoundTouch
自己整理的soundtouch变速项目
其他
1.https://github.com/xufuji456/FFmpegAndroid
ffmpeg学习项目
2.https://github.com/yangjie10930/EpMedia
ffmpeg很好的android封装