那些我磕过的音视频项目总结
视频编辑
最近项目一直在做这个,对标是抖音,剪影,微视以及 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/FFmpegAndroidffmpeg学习项目
2.https://github.com/yangjie10930/EpMediaffmpeg很好的 android 封装
版权声明: 本文为 InfoQ 作者【梅芳姑】的原创文章。
原文链接:【http://xie.infoq.cn/article/4c725fcc19697cef0570d6648】。文章转载请联系作者。
评论