Git Product home page Git Product logo

videoeditor-for-android's Introduction

VideoEditor-For-Android

一个Android的视频编辑器,包括了视频录制、剪切、增加bgm、美白、加滤镜、加水印等多种功能

基于android硬编码的视频编辑器,不支持4.3以下系统,通过android的api完成视频采集,通过OpenGL,完成视频数据帧的处理,通过android的硬编码器MeidaCodec 对采集到的视频流进行硬编码。 利用OpenGL完成视频的美白、加滤镜、加水印等功能。利用MediaCodec完成音视频的分离和音频的一些混音处理

注:该项目属于是一个半成品项目。并没有直接使用的商业价值。我也看到了很多人提的issues,但是因为作者最近事情比较多,以后会补上剩下的通过OpenGl拼接视频,以及给视频增加bgm等功能,也会解决那些issues。

videoeditor-for-android's People

Contributors

qqchenjian318 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

videoeditor-for-android's Issues

录制打开出现崩溃还有就是6.0运行时权限未添加

E/AndroidRuntime: FATAL EXCEPTION: TextureMovieEncoder
Process: com.example.cj.videoeditor, PID: 14649
java.lang.IllegalStateException: startRecording() called on an uninitialized AudioRecord.
at android.media.AudioRecord.startRecording(AudioRecord.java:989)
at com.example.cj.videoeditor.record.video.VideoEncoderCore.(VideoEncoderCore.java:96)
at com.example.cj.videoeditor.record.video.TextureMovieEncoder.prepareEncoder(TextureMovieEncoder.java:426)
at com.example.cj.videoeditor.record.video.TextureMovieEncoder.handleStartRecording(TextureMovieEncoder.java:334)
at com.example.cj.videoeditor.record.video.TextureMovieEncoder.access$000(TextureMovieEncoder.java:64)
at com.example.cj.videoeditor.record.video.TextureMovieEncoder$EncoderHandler.handleMessage(TextureMovieEncoder.java:298)
at android.os.Handler.dispatchMessage(Handler.java:105)
at android.os.Looper.loop(Looper.java:156)
at com.example.cj.videoeditor.record.video.TextureMovieEncoder.run(TextureMovieEncoder.java:265)
at java.lang.Thread.run(Thread.java:776)

添加滤镜崩溃

添加滤镜后,会崩溃
E/AndroidRuntime: FATAL EXCEPTION: pool-3-thread-2
Process: com.example.cj.videoeditor, PID: 4850
java.nio.BufferOverflowException
at java.nio.ByteBuffer.put(ByteBuffer.java:544)
at com.example.cj.videoeditor.mediacodec.VideoClipper.startAudioCodec(VideoClipper.java:274)
at com.example.cj.videoeditor.mediacodec.VideoClipper.access$400(VideoClipper.java:30)
at com.example.cj.videoeditor.mediacodec.VideoClipper$2.run(VideoClipper.java:174)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
at java.lang.Thread.run(Thread.java:760)

nexus5X预览画面上下颠倒

private void addFilter(AFilter filter) {
/*抵消本身的颠倒操作/
//filter.setMatrix(OM);
mBeFilter.addFilter(filter);
}
我在你源码中找到这个注释,取消注释就正常了,但是我在另外一部手机S8+上又上下颠倒了
请问:这是什么原因?该如何判断不同设备是否需要filter.setMatrix(OM);

MediaCodec.createEncoderByType("video/avc")报IO,怎么解

错误代码 videoEncoder = MediaCodec.createEncoderByType("video/avc"); 报IO异常

重现步骤:
1.打开demo,点击"本地视频美颜"按钮,进入"视频"列表页面
2.选择某个视频,点击"加滤镜",进入加滤镜界面
3.将"加滤镜页面"的某个按钮,比如--"返回键"功能设置成打开新的"加滤镜界面"
4.打开2个"加滤镜"界面后,点击 "勾" ,进行合成视频操作,然后大几率会报错

为什么进行这样的操作:
1.因为功能需求是先进行视频裁剪功能, 我在视频裁剪界面也使用了 VideoPreviewView 来展示视频
2.在从裁剪页面跳转到 加滤镜页面 之后,在进行视频合成操作时报错
3.此时猜想是不是由于使用了同个VideoPreviewView时什么资源没释放或者什么东西,才导致报错
4.所以用原始demo进行测试发现同样存在这个问题

对于视频音频相关的知识不了解,所以希望大神可以解决一下
具体错误信息如下图:
qq 20171227165722

视频混音问题,望得到帮助....

一个完整的(带原生和背景音乐,人声)的mp4视频,如何实现配音的功能了?大神能否提供一个思路。

我现在的想法是,先分离原视频的视频,然后通过音频混音的方式将背景音频和录制的人声(都是MP3格式文件)合成一个新的MP3音频文件,然后将文件和分离的适配合成形成一个新的视频;
想问下是否可以不用分离原视频,直接进行混音?求指导,谢谢、、、

CameraDrawer有一个设置水印的地方,如何去除水印?

我在CameraDrawer这个类中有看到:
WaterMarkFilter waterMarkFilter = new WaterMarkFilter(resources);
waterMarkFilter.setWaterMark(BitmapFactory.decodeResource(resources, R.mipmap.ic_launcher));
waterMarkFilter.setPosition(30,50,0,0);
addFilter(waterMarkFilter);
设置水印,但是注释后摄像头图像就上下颠倒了?如果不设置图片就会出现Null异常,感觉就是要设置一张图片的。这个水印应该怎么设置?

华为meta9点击录制就报错

华为meta9点击录制就报错如下:
FATAL EXCEPTION: GLThread 816
Process: com.example.cj.videoeditor, PID: 17256
java.lang.RuntimeException: Fail to connect to camera service
at android.hardware.Camera.(Camera.java:571)
at android.hardware.Camera.open(Camera.java:415)
at com.example.cj.videoeditor.camera.CameraController.open(CameraController.java:46)
at com.example.cj.videoeditor.widget.CameraView.open(CameraView.java:61)
at com.example.cj.videoeditor.widget.CameraView.onSurfaceCreated(CameraView.java:80)

如何判断视频是否已经保存完毕

RecordedActivity界面中怎么判断视频是否已经保存完毕!
因为要获取其中一帧的图片, 没有保存完毕MediaMetadataRetriever.setDataSource(path)会报错!

ProcessFilter的作用?

请教下:
ProcessFilter的作用是什么,看代码感觉就是做了矩阵的上下翻转。实际的滤镜处理在beFilter前置滤镜中已经做过了。我在代码中将ProcessFilter去掉,同时将slideFilterGroup的onDrawFrame使用beFilter.getOutputTexture()来做,没有任何影响。

Android 4.4 Crash

FATAL EXCEPTION: pool-3-thread-2
Process: com.example.cj.videoeditor, PID: 30756
java.nio.BufferOverflowException
at java.nio.ByteBuffer.put(ByteBuffer.java:753)
at com.example.cj.videoeditor.mediacodec.VideoClipper.startAudioCodec(VideoClipper.java:276)
at com.example.cj.videoeditor.mediacodec.VideoClipper.access$400(VideoClipper.java:30)
at com.example.cj.videoeditor.mediacodec.VideoClipper$2.run(VideoClipper.java:176)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
at java.lang.Thread.run(Thread.java:841)

貌似自动对焦没起作用,只能手动对焦

我正好也在研究类似自带相机的自动对焦和手动对焦同时支持的问题,希望大神能多多指点。还有这个库真得很棒,希望继续下去,类似的来疯团队也开源了一个这方面的库,不过很可惜没有一直维护,真心希望大神能一直维护下去

4.3以上的问题

4.3.1和4.4.2的都不能使用!报错
java.lang.IllegalStateException: startRecording() called on an uninitialized AudioRecord.
at android.media.AudioRecord.startRecording(AudioRecord.java:506)
at com.example.cj.videoeditor.record.video.VideoEncoderCore.(VideoEncoderCore.java:96)
at com.example.cj.videoeditor.record.video.TextureMovieEncoder.prepareEncoder(TextureMovieEncoder.java:426)
at com.example.cj.videoeditor.record.video.TextureMovieEncoder.handleStartRecording(TextureMovieEncoder.java:334)
at com.example.cj.videoeditor.record.video.TextureMovieEncoder.access$000(TextureMovieEncoder.java:64)
at com.example.cj.videoeditor.record.video.TextureMovieEncoder$EncoderHandler.handleMessage(TextureMovieEncoder.java:298)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at com.example.cj.videoeditor.record.video.TextureMovieEncoder.run(TextureMovieEncoder.java:265)
at java.lang.Thread.run(Thread.java:841)
还有这种
java.lang.IllegalStateException: startRecording() called on an uninitialized AudioRecord.
at android.media.AudioRecord.startRecording(AudioRecord.java:506)
at com.example.cj.videoeditor.record.video.VideoEncoderCore.(VideoEncoderCore.java:96)
at com.example.cj.videoeditor.record.video.TextureMovieEncoder.prepareEncoder(TextureMovieEncoder.java:426)
at com.example.cj.videoeditor.record.video.TextureMovieEncoder.handleStartRecording(TextureMovieEncoder.java:334)
at com.example.cj.videoeditor.record.video.TextureMovieEncoder.access$000(TextureMovieEncoder.java:64)
at com.example.cj.videoeditor.record.video.TextureMovieEncoder$EncoderHandler.handleMessage(TextureMovieEncoder.java:298)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at com.example.cj.videoeditor.record.video.TextureMovieEncoder.run(TextureMovieEncoder.java:265)
at java.lang.Thread.run(Thread.java:841)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.