Android开发经验谈Android开发Android Dev

「Android音视频」易用的Android音视频高性能编码库H

2018-07-30  本文已影响211人  Alimin利民

  HardwareVideoCodec已经开源到Github。目前已迭代多个稳定版本,欢迎查阅学习和使用,如有BUG或建议,欢迎Issue。

简介

  HardwareVideoCodec是个高性能、易用的Android音视频编码开源库,支持多款滤镜,支持RTMP直播推流,以及软编和硬编。硬编性能较好,在高通630的中端机子上实测1080p、30fps毫无问题。软编性能差一点,同样的机子,软编只能达到720p、24fps。硬编性能较好,软编兼容性较好,这个需要根据的业务需求进行选择。
  HardwareVideoCodec目前已经迭代到了1.5.1版本,更新了新的美颜滤镜,美颜更出色。支持RTMP推流,实测1080p、30fps局域网推流毫无性能压力。以下是主要的特性:

  1. 支持高性能的RTMP直播推流。
  2. 支持在不重启Camera的基础上,热切换画面分辨率。
  3. 支持包括美颜滤镜在内的20多款滤镜。
  4. 支持视频软编硬编
  5. 支持录制视频保存成mp4。
  6. 使用OpenGL进行画面渲染,更少的CPU和内存占用,高通630的中端机子硬编并开启RTMP推流实测仅12%的CPU占用。
截图
截图

即将加入的特性

  1. 音频降噪、增益以及回音消除。

使用

  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 {
        maven {
            url 'https://dl.bintray.com/lmylr/maven'
        }
    }
}
  1. 导入依赖,把以下代码加入到Module的build.gradle。
dependencies {
    implementation 'com.lmy.codec:hardwarevideocodec:1.5.1'
    implementation 'com.lmy.codec:rtmp:1.0.1'//如果需要使用RTMP推流功能
}
  1. 自定义Application继承自BaseApplication,只是为了使用Assets。
class MyApplication : BaseApplication()
  1. 在Activity中使用HardwareVideoCodec。
class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        val mTextureView = TextureView(this)
        setContentView(mTextureView)
        val mPresenter = RecordPresenter(CodecContext(this).apply {
            ioContext.path = "${Environment.getExternalStorageDirectory().absolutePath}/test.mp4"
            //ioContext.path = "rtmp://192.168.16.203:1935/live/livestream"//如果需要使用RTMP推流,把路径改为RTMP推流地址即可
        })
        mPresenter.setPreviewTexture(mTextureView)
        //For recording control
        mTextureView.setOnTouchListener { v, event ->
            when (event.action) {
                MotionEvent.ACTION_DOWN -> {
                    mPresenter.start()
                }
                MotionEvent.ACTION_UP -> {
                    mPresenter.pause()
                }
            }
            true
        }
    }
}

  不出意外的话,你已经可以看到摄像头画面了。如果有什么问题,欢迎在评论区留言或者ISSUE,我会及时解答。

开源协议

HardwareVideoCodec is GPL 2.0.

上一篇下一篇

猜你喜欢

热点阅读