高效视频编码神器:HWVC(HardwareVideoCodec)

高效视频编码神器:HWVC(HardwareVideoCodec)

HardwareVideoCodec项目地址:https://gitcode.com/gh_mirrors/har/HardwareVideoCodec

项目介绍

HWVC(HardwareVideoCodec) 是一款专为 Android 平台设计的高效视频编码库。它不仅支持软件编码,还支持硬件编码,能够轻松实现任意分辨率的视频编码。无论你是开发者还是视频爱好者,HWVC 都能帮助你快速实现复杂的多媒体需求,包括视频录制和编辑。

项目技术分析

HWVC 项目采用 C/C++ 实现,目前主要支持 Android 平台,但也可以轻松移植到其他平台,如 iOS。其核心技术包括:

  • 硬件编码支持:利用设备的硬件加速功能,实现高效的视频编码。
  • 软件编码支持:在没有硬件加速的情况下,依然能够通过软件编码实现高质量的视频输出。
  • OpenGL 渲染:使用 OpenGL 进行视频渲染,支持多种滤镜效果。
  • RTMP 流媒体支持:支持实时流媒体传输,适用于直播场景。
  • MediaMuxer:用于将视频和音频打包成 MP4 格式。

项目及技术应用场景

HWVC 适用于多种应用场景,包括但不限于:

  • 视频录制与编辑:无论是简单的视频录制还是复杂的视频编辑,HWVC 都能提供强大的支持。
  • 直播应用:支持 RTMP 流媒体传输,适用于各种直播平台。
  • 多媒体应用开发:开发者可以利用 HWVC 快速集成视频编码功能,提升应用的多媒体处理能力。
  • 教育与培训:用于制作教学视频或培训材料,支持多种滤镜和特效。

项目特点

  • 任意分辨率支持:不再受限于摄像头分辨率,可以自由设置视频分辨率。
  • 滤镜支持:支持 40 多种滤镜效果,包括美颜滤镜,让你的视频更加生动。
  • 实时流媒体支持:支持 RTMP 流媒体传输,适用于直播场景。
  • 无需重启摄像头:支持在不重启摄像头的情况下更改分辨率,操作更加便捷。
  • 跨平台移植:虽然目前主要支持 Android 平台,但可以轻松移植到其他平台,如 iOS。

如何开始使用

如果你使用 Gradle 进行项目构建,只需在项目中添加以下代码:

dependencies {
    implementation 'com.lmy.codec:hardwarevideocodec:1.7.3'
    implementation 'com.lmy.codec:rtmp:1.7.3' // 如果你需要使用 RTMP 流媒体功能
}

录制 MP4 示例

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")
            setOutputSize(720, 1280) // 默认 720x1280
            setFps(30)
            setFilter(getDefaultFilter())
            setPreviewDisplay(mTextureView)
        }
        mRecorder.prepare()
        // 录制控制
        mTextureView.setOnTouchListener { v, event ->
            when (event.action) {
                MotionEvent.ACTION_DOWN -> {
                    if (mRecorder.prepared())
                        mRecorder.start()
                }
                MotionEvent.ACTION_UP -> {
                    if (mRecorder.started())
                        mRecorder.pause()
                }
            }
            true
        }
    }

    private fun getDefaultFilter(): BaseFilter = GroupFilter.create(BeautyV4Filter())
            .addSticker(TextSticker().apply {
                setText(TextSticker.Text("HWVC", 56f).apply {
                    x = 0.8f
                    y = 0.03f
                })
            })
            .addSticker(ImageSticker().apply {
                setImage(ImageSticker.Image().apply {
                    x = 0.03f
                    y = 0.03f
                    scale = 1.6f
                    bitmap = BitmapFactory.decodeResource(resources, R.mipmap.ic_logo_hwvc)
                })
            })

    override fun onDestroy() {
        super.onDestroy()
        mRecorder.release()
    }
}

直播示例

class MainActivity : AppCompatActivity() {
    private lateinit var mRecorder: VideoRecorderImpl
    private val onStateListener = object : VideoRecorder.OnStateListener {

        override fun onStop() {
        }

        override fun onPrepared(encoder: Encoder) {
            mRecorder.start()
        }

        override fun onRecord(encoder: Encoder, timeUs: Long) {
        }

        override fun onError(error: Int, msg: String) {

        }
    }

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        val mTextureView = TextureView(this)
        setContentView(mTextureView)
        mRecorder = VideoRecorderImpl(this).apply {
            reset()
            setOutputUri("rtmp://192.168.16.125:1935/live/livestream")
            setOutputSize(720, 1280) // 默认 720x1280
            setFps(30)
            setFilter(getDefaultFilter()) // 默认 NormalFilter
            setPreviewDisplay(mTextureView)
            setOnStateListener(onStateListener)
        }
        mRecorder.prepare()
    }

    private fun getDefaultFilter(): BaseFilter = GroupFilter.create(BeautyV4Filter())
            .addSticker(TextSticker().apply {
                setText(TextSticker.Text("HWVC", 56f).apply {
                    x = 0.8f
                    y = 0.03f
                })
            })
            .addSticker(ImageSticker().apply {
                setImage(ImageSticker.Image().apply {
                    x = 0.03f
                    y = 0.03f
                    scale = 1.6f
                    bitmap = BitmapFactory.decodeResource(resources, R.mipmap.ic_logo_hwvc)
                })
            })

    override fun onDestroy() {
        super.onDestroy()
        mRecorder.release()
    }
}

加入 HWVC 社区

如果你在使用过程中遇到任何问题,欢迎通过 issues 页面 向我们反馈。

许可证

HWVC(HardwareVideoCodec)采用 GPL 许可证


HWVC 不仅是一个强大的视频编码工具,更是一个开放的社区项目。无论你是开发者还是视频爱好者,HWVC 都能为你提供强大的支持,让你的多媒体创作更加轻松、高效。快来加入我们,一起探索 HWVC 的无限可能吧!

HardwareVideoCodec项目地址:https://gitcode.com/gh_mirrors/har/HardwareVideoCodec

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

温宝沫Morgan

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值