android视频软编码,HardwareVideoCodec: HardwareVideoCodec是一个高效的Android音视频编码库,支持软编和硬编。使用它你可以很容易的实现任何分辨率的视频编...

HWVC是一个跨平台项目,目前仅支持Android平台,可轻松移植到IOS等其他平台。它是高效的Android视频编码库,支持软硬件编码,能以任意分辨率编码视频,还支持添加滤镜、裁剪视频、RTMP流等功能。文中给出了使用Gradle构建项目的配置代码及录制和直播的示例代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

⚠️HardwareVideoCodec will not be updated

This project has been migrated to hwvc now. hwvc is a cross-platform project. Committed to quickly and easily implement a variety of complex multimedia needs, including recording and editing. This project uses c / c + + implementation, currently only supports Android platform, but it can also be easily ported to other platforms, such as IOS.

HWVC(HardwareVideoCodec)

download.svg

HWVC is an efficient video encoding library for Android. Supports software and hardware encode.

With it, you can encode a video at any resolution, no longer need to care about camera resolution. Everything is so easy.

ScreenRecord_1.gif

ScreenRecord_2.gif

Latest release

Support seek now.

Fix player`s life cycle.

Support add filters to existing videos or cut videos.

Support video player.

Features

Support video encoding at any resolution. No need to care about camera resolution.

Support for add filters to existing videos or cut videos.

Support RTMP stream.

Support for changing resolution without restarting the camera.

Support hard & soft encode.

Record video & audio. Pack mp4 through MediaMuxer.

Use OpenGL to render and support filter.

Supports 40+ filters

Support beauty filter.

Support for changing resolution without restarting the camera.

More features.

Start

If you are building with Gradle, simply add the following code to your project:

You need to configure your kotlin environment. Project root 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()

}

}

Module build.gradle

dependencies {

implementation 'com.lmy.codec:hardwarevideocodec:1.7.3'

implementation 'com.lmy.codec:rtmp:1.7.3'//If you want to use RTMP stream.

}

For record 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)//Default 720x1280

setFps(30)

setFilter(getDefaultFilter())

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

}

}

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()

}

}

For live

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)//Default 720x1280

setFps(30)

setFilter(getDefaultFilter())//Default 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()

}

}

Join the HWVC community

Please use our issues page to let us know of any problems.

License

HWVC(HardwareVideoCodec) is GPL-licensed.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值