mabeijianxi / small-video-record

利用FFmpeg视频录制微信小视频与其压缩处理
Apache License 2.0
3.46k stars 732 forks source link

视频压缩速度太慢 #100

Closed appdev closed 7 years ago

appdev commented 7 years ago

之前使用VideoCompressor这个库压缩视频,但是他只能压缩,现在换这个库后压缩很慢,大概是原来速度的2倍,有办法提升压缩速度吗?

Lok1n8 commented 7 years ago

你好 能把VideoCompressor这个库的链接给我一下吗 我百度了很久都没有搜到= = 。 谢谢了

mabeijianxi commented 7 years ago

如果同等配置的FFmpeg不可能有这么大的区别,我这里默认是veryfast,不是最快,如需高速选择速度的时候请选择ultrafast,这个速度我测试了一个3M的时候ultrafast不到5s,veryfast不到10s,我又试了下尝试开启多线程用ultrafast,这个时候是不到4s。多线程这个我一会儿发个版本。

mabeijianxi commented 7 years ago

补充下,以上所说全是2.0版本。1.0的话也可以用ultrafast,但1.0so不是我编译,是否支持多线程不得而知。

appdev commented 7 years ago

这个是VideoCompressor的地址,至于是不是纯粹的FFmpeg其实我也不是很懂,单纯的速度来说是挺快。我稍后在试试最新版的看看

appdev commented 7 years ago

对比了一下,同一个视频,3分钟 360M,压缩到160M 这个用了7分钟,VideoCompressor用了接近5分钟

mabeijianxi commented 7 years ago

嗯,空了我再调整调整参数试试,争取再提高点效率

star-andy commented 7 years ago

@mabeijianxi 马哥2.0我还是一直运行不起来 @huclengyue 我现在用ffmpeg做的压缩很慢而且只能用mpeg4的编解码器,使用x264很不稳定总容易崩溃 这个video-compressor是怎么使用,有什么资料可以参考吗?

appdev commented 7 years ago

@qinyang1018 这个库有demo的,你下载先来运行一下就知道了

star-andy commented 7 years ago

@huclengyue demo我看了 速度真不错 但是我把so放进我项目里就不行了

star-andy commented 7 years ago

@huclengyue 你之前在你项目里面用过吗?

appdev commented 7 years ago

@qinyang1018 用过,你需要自己编译so文件,在C++代码中把包名改成自己的

star-andy commented 7 years ago

@huclengyue 我加了个群不知道是不是你的 如果方便能留个联系方式吗?想和你交流下。 文件我编译了 现在也已经可以用了,但是我在批量压缩的时候会报线程创建失败然后oom 应该是重复创建线程的原因。 一直没解决了这个问题 @mabeijianxi 马哥不知道对我刚才说的批量压缩会重复创建线程有了解吗?

star-andy commented 7 years ago

@huclengyue 已经解决了 VideoCompressor有个bug 在ffmpeg.c没有回收内存

cornflower10 commented 7 years ago

@huclengyue ,我clone了 VideoCompressor,编译不过去,NDK也安装了,报错 Error:(60) *** Android NDK: Aborting. . Stop. Error:Execution failed for task ':app:buildNative'.

Process 'command 'D:\sdk\ndk-bundle/ndk-build.cmd'' finished with non-zero exit value 2 不知是啥原因,求大神指导

cornflower10 commented 7 years ago

@mabeijianxi 这个2.0有多线程压缩吗,代码没看出来,最近在做压缩1个小时的100多兆的视屏,压缩要20分钟左右,这个压缩速度如何控制

star-andy commented 7 years ago

@cornflower10 我没使用gradle里面的task编译,你可以使用终端使用ndk命令编译

mabeijianxi commented 7 years ago

2.0.0 正式版刚提交完成,已编译全平台,使用方式也更加解耦,在 64 位手机上录制基本0延迟,本地压缩速度提升 2倍以上,但和以前略有不同,使用前请参看使用文档!