HardwareVideoCodec高效的 Android 音视频编码库
HardwareVideoCodec是一个高效的Android音视频编码库,支持软编和硬编。使用它你可以很容易的实现任何分辨率的视频编码,无需关心摄像头预览大小。一切都如此简单。目前已迭代多个稳定版本,欢迎查阅学习和使用,如有BUG或建议,欢迎提Issue。
一、简介
HardwareVideoCodec是个高性能、易用的Android音视频编码开源库,支持多款滤镜,支持RTMP直播推流,以及软编和硬编。硬编性能较好,在高通630的中端机子上实测1080p、30fps毫无问题。软编性能差一点,同样的机子,软编只能达到720p、24fps。硬编性能较好,软编兼容性较好,这个需要根据的业务需求进行选择。
HardwareVideoCodec目前已经迭代到了1.6.3
版本,更新了新的美颜滤镜,美颜更出色,更有40+滤镜库。支持RTMP推流,实测1080p、30fps局域网推流毫无性能压力。以下是主要的特性:
支持
高性能
的RTMP直播推流。支持在不重启Camera的基础上,
热切换
画面分辨率。支持包括
美颜滤镜
在内的20多款滤镜。支持视频
软编
和硬编
。支持
录制
视频保存成mp4。使用
OpenGL
进行画面渲染,更少的CPU和内存占用,高通630的中端机子硬编
并开启RTMP
推流实测仅12%
的CPU占用。
运行截图
二、使用
1.把以下代码加入到Project的build.gradle。
buildscript { ext.kotlin_version = '1.2.30'//Latest kotlin version dependencies { classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" } } allprojects { repositories { google() jcenter() } }
2.导入依赖,把以下代码加入到Module的build.gradle。
dependencies { implementation 'com.lmy.codec:hardwarevideocodec:1.6.3' implementation 'com.lmy.codec:rtmp:1.6.3'//如果需要使用RTMP推流功能 }
3.在Activity中使用HardwareVideoCodec。
class MainActivity : AppCompatActivity() { private lateinit var mRecorder: VideoRecorderImpl override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) val mTextureView = TextureView(this) setContentView(mTextureView) mRecorder = VideoRecorderImpl(this).apply { reset() setOutputUri("${Environment.getExternalStorageDirectory().absolutePath}/test.mp4") //setOutputUri("rtmp://192.168.16.125:1935/live/livestream")//如果需要使用RTMP推流,把路径改为RTMP推流地址即可 setOutputSize(720, 1280)//Default 720x1280 setFilter(NormalFilter::class.java)//Default NormalFilter setPreviewDisplay(mTextureView) } mRecorder.prepare() //For recording control mTextureView.setOnTouchListener { v, event -> when (event.action) { MotionEvent.ACTION_DOWN -> { if (mRecorder.prepared()) mRecorder.start() } MotionEvent.ACTION_UP -> { if (mRecorder.started()) mRecorder.pause() } } true } } override fun onDestroy() { super.onDestroy() mRecorder.release() } }
运行并授予必要权限,不出意外的话,你已经可以看到摄像头画面了。如果有什么问题,欢迎在评论区留言或者ISSUE,我会及时解答。
三、开源协议
HardwareVideoCodec is GPL 2.0.
评论
gstreamill音视频编码转码
音视频实时编码、离线转码、收录,实时编码方面,支持网络、采集卡等多种输入,输出方面支持HLS,HTTP渐进下载,UDP等,离线转码方面支持通过web实现媒体的上下载,支持大文件,支持丰富的输入输出格式
gstreamill音视频编码转码
0
Android 音视频涉及到的技术总结
前言
现在市面上的图像,音视频软件越来越多,最近两年也是直播,短视频的红利期。而图像、音视频一直是互联网视觉的入口,掌握并熟练运用音视频、图像技术已经是当前互联网时代不可或缺的技能,而且这个技能是具有沉淀性质的。
目前市面上的学习资料参差不齐,我觉得想要开启音视频的学习之路,先得了解整体流程上会涉及的技术点,再一个个击破。我也是音视频方面的小白,最近公司要做一个视频换脸的应用,目前处于技术调研期。趁此空档,我准备开始我的音视频学习之路。
音视频 APP
图像类:
音频类:
视频类:
整体流程
以手机直播为例,其整体流程如下:
数据采集
塞尔维亚大叔
0
Android音视频SDK工程师
岗位职责:
1. 视频编辑SDK框架搭建,包括视频串行和并行播放通路,剪裁,拼图,画中画的开发;
2. 使用OpenGL ES开发视频特效,包括视频滤镜,文字水印,转场动效,主题模板;
3. 音视频编解码器、muxer, demuxer算法的开发和集成;
4. 音视频处理算法,如画质增强,HDR算法,混音,变声,声音变速等算法的开发;
5. 多媒体新功能技术预研。
满足以下一项或多项者优先(特别优秀者例外):
1. 精通Android多媒体架构如MediaPlayer,MediaRecorder,MediaCodec;
2. 精通Android APK开发,有过大型项目开发经验;
3. 熟悉音视频编解码器原理
Dinah
0
FunctionalPlusC++ 编码库
FunctionalPlus是一个小的表头库,它可以降低代码噪声,一次只处理一个单一等级的的抽象对象。通过增加你的代码的简洁性和可维护性来提高生产效率和编码乐趣。从长远的角度来看,它可以通过提供易于使
FunctionalPlusC++ 编码库
0