Coder Social home page Coder Social logo

microshow / rxffmpeg Goto Github PK

View Code? Open in Web Editor NEW
4.4K 81.0 741.0 416.25 MB

🔥💥RxFFmpeg 是基于 ( FFmpeg 4.0 + X264 + mp3lame + fdk-aac + opencore-amr + openssl ) 编译的适用于 Android 平台的音视频编辑、视频剪辑的快速处理框架,包含以下功能:视频拼接,转码,压缩,裁剪,片头片尾,分离音视频,变速,添加静态贴纸和gif动态贴纸,添加字幕,添加滤镜,添加背景音乐,加速减速视频,倒放音视频,音频裁剪,变声,混音,图片合成视频,视频解码图片,抖音首页,视频播放器及支持 OpenSSL https 等主流特色功能

Java 9.55% CMake 0.01% C 90.44%
ffmpeg android videoeditor ffmpeg-android libx264 libmp3lame fdk-aac encoder-decoder mediacodec jni-android

rxffmpeg's People

Contributors

microshow 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  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

rxffmpeg's Issues

视频裁剪速度很慢

感觉视频裁剪比我自己编译的库还慢,作者能否解答下,我感觉不应该这么慢的。下面是我用的命令ffmpeg -y -i input.mp4 -ss 0 -t 20 output.mp4

请问适配android 8.0+版本吗

以前自己在项目中用了ffmpeg的so库,后来android7.0以上的系统就会报错,好像是说so的编译方式有问题,请问您的这个视频了android新系统版本吗?

图片到视频中速度过慢

你好,直接使用这个库的时候,再往视频中添加图片感觉过于慢了,一个10m的视频编辑完成需要一分钟,不知道是否是正常?请教一下。
下面是使用的FFmpeg命令:
ffmpeg -i videoPath -i imagePath -filter_complex overlay=0:0 -vcodec libx264 -profile:v baseline -preset ultrafast -b:v 3000k -g 30 -f mp4 outPath

问题请教

这个可以加广告吗,还有这个如果是网络视频 是地址 怎么处理呢 直接把本地换成网络地址吗

你好 我这面遇到了一个问题 找不到.so

java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/cn.wdcloud.luke.courseedit-2/base.apk", zip file "/data/app/cn.wdcloud.luke.courseedit-2/split_lib_dependencies_apk.apk", zip file "/data/app/cn.wdcloud.luke.courseedit-2/split_lib_slice_0_apk.apk", zip file "/data/app/cn.wdcloud.luke.courseedit-2/split_lib_slice_1_apk.apk", zip file "/data/app/cn.wdcloud.luke.courseedit-2/split_lib_slice_2_apk.apk", zip file "/data/app/cn.wdcloud.luke.courseedit-2/split_lib_slice_3_apk.apk", zip file "/data/app/cn.wdcloud.luke.courseedit-2/split_lib_slice_4_apk.apk", zip file "/data/app/cn.wdcloud.luke.courseedit-2/split_lib_slice_5_apk.apk", zip file "/data/app/cn.wdcloud.luke.courseedit-2/split_lib_slice_6_apk.apk", zip file "/data/app/cn.wdcloud.luke.courseedit-2/split_lib_slice_7_apk.apk", zip file "/data/app/cn.wdcloud.luke.courseedit-2/split_lib_slice_8_apk.apk", zip file "/data/app/cn.wdcloud.luke.courseedit-2/split_lib_slice_9_apk.apk"],nativeLibraryDirectories=[/data/user/0/cn.wdcloud.luke.courseedit/files/so, /data/app/cn.wdcloud.luke.courseedit-2/lib/arm64, /data/app/cn.wdcloud.luke.courseedit-2/base.apk!/lib/arm64-v8a, /data/app/cn.wdcloud.luke.courseedit-2/split_lib_dependencies_apk.apk!/lib/arm64-v8a, /data/app/cn.wdcloud.luke.courseedit-2/split_lib_slice_0_apk.apk!/lib/arm64-v8a, /data/app/cn.wdcloud.luke.courseedit-2/split_lib_slice_1_apk.apk!/lib/arm64-v8a, /data/app/cn.wdcloud.luke.courseedit-2/split_lib_slice_2_apk.apk!/lib/arm64-v8a, /data/app/cn.wdcloud.luke.courseedit-2/split_lib_slice_3_apk.apk!/lib/arm64-v8a, /data/app/cn.wdcloud.luke.courseedit-2/split_lib_slice_4_apk.apk!/lib/arm64-v8a, /data/app/cn.wdcloud.luke.courseedit-2/split_lib_slice_5_apk.apk!/lib/arm64-v8a, /data/app/cn.wdcloud.luke.courseedit-2/split_lib_slice_6_apk.apk!/lib/arm64-v8a, /data/app/cn.wdcloud.luke.courseedit-2/split_lib_slice_7_apk.apk!/lib/arm64-v8a, /data/app/cn.wdcloud.luke.courseedit-2/split_lib_slice_8_apk.apk!/lib/arm64-v8a, /data/app/cn.wdcloud.luke.courseedit-2/split_lib_slice_9_apk.apk!/lib/arm64-v8a, /system/lib64, /vendor/lib64]]] couldn't find "libffmpeg-core.so"

找不到runFFmpegCmd(String[] commands)方法

我把rxffmpeg当成一个module导入到android studio的工程中测试,运行的时候会报如下的错误:
找不到runFFmpegCmd(java.lang.String[])方法 ,
是我工程的包名不对吗?

03-14 11:44:20.597 2750-11534/com.cheyuncld.auto A/art: art/runtime/check_jni.cc:65] JNI DETECTED ERROR IN APPLICATION: JNI CallVoidMethod called with pending exception 'java.lang.NoSuchMethodError' thrown in int io.microshow.rxffmpeg.RxFFmpegInvoke.runFFmpegCmd(java.lang.String[]):-2
art/runtime/check_jni.cc:65] in call to CallVoidMethod
art/runtime/check_jni.cc:65] from int io.microshow.rxffmpeg.RxFFmpegInvoke.runFFmpegCmd(java.lang.String[])
art/runtime/check_jni.cc:65] "RxCachedThreadScheduler-1" daemon prio=5 tid=34 Runnable
art/runtime/check_jni.cc:65] | group="main" sCount=0 dsCount=0 obj=0x1325ea40 self=0x9f58a800
art/runtime/check_jni.cc:65] | sysTid=11534 nice=0 cgrp=apps sched=0/0 handle=0xa21da780
art/runtime/check_jni.cc:65] | state=R schedstat=( 0 0 0 ) utm=48 stm=8 core=3 HZ=100
art/runtime/check_jni.cc:65] | stack=0x9dc4b000-0x9dc4d000 stackSize=1036KB
art/runtime/check_jni.cc:65] | held mutexes= "mutator lock"(shared held)
art/runtime/check_jni.cc:65] native: #00 pc 000045d4 /system/lib/libbacktrace_libc++.so (_ZN13UnwindCurrent6UnwindEjP8ucontext+23)
art/runtime/check_jni.cc:65] native: #1 pc 00002e55 /system/lib/libbacktrace_libc++.so (_ZN9Backtrace6UnwindEjP8ucontext+8)
art/runtime/check_jni.cc:65] native: #2 pc 0024029d /system/lib/libart.so (_ZN3art15DumpNativeStackERNSt3__113basic_ostreamIcNS0_11char_traitsIcEEEEiPKcPNS_6mirror9ArtMethodE+68)
art/runtime/check_jni.cc:65] native: #3 pc 0022492f /system/lib/libart.so (_ZNK3art6Thread4DumpERNSt3__113basic_ostreamIcNS1_11char_traitsIcEEEE+146)
art/runtime/check_jni.cc:65] native: #4 pc 000afa83 /system/lib/libart.so (ZN3artL8JniAbortEPKcS1+582)
art/runtime/check_jni.cc:65] native: #5 pc 000b01bd /system/lib/libart.so (_ZN3art9JniAbortFEPKcS1_z+60)
art/runtime/check_jni.cc:65] native: #6 pc 000b32cd /system/lib/libart.so (_ZN3art11ScopedCheckC2EP7_JNIEnviPKc+1284)
art/runtime/check_jni.cc:65] native: #7 pc 000ba6ff /system/lib/libart.so (_ZN3art8CheckJNI14CallVoidMethodEP7_JNIEnvP8_jobjectP10_jmethodIDz+34)
art/runtime/check_jni.cc:65] native: #8 pc 000124ff /data/app/com.cheyuncld.auto-1/lib/arm/libffmpeg-invoke.so (???)
art/runtime/check_jni.cc:65] native: #9 pc 0001156f /data/app/com.cheyuncld.auto-1/lib/arm/libffmpeg-invoke.so (???)
art/runtime/check_jni.cc:65] native: #10 pc 0000e0bd /data/app/com.cheyuncld.auto-1/lib/arm/libffmpeg-invoke.so (run_ffmpeg_command+356)
art/runtime/check_jni.cc:65] native: #11 pc 000228df /data/app/com.cheyuncld.auto-1/lib/arm/libffmpeg-invoke.so (Java_io_microshow_rxffmpeg_RxFFmpegInvoke_runFFmpegCmd+134)
art/runtime/check_jni.cc:65] native: #12 pc 000da75f /data/dalvik-cache/arm/data@[email protected]@[email protected] (Java_io_microshow_rxffmpeg_RxFFmpegInvoke_runFFmpegCmd___3Ljava_lang_String_2+102)
art/runtime/check_jni.cc:65] at io.microshow.rxffmpeg.RxFFmpegInvoke.runFFmpegCmd(Native method)
art/runtime/check_jni.cc:65] at io.microshow.rxffmpeg.c.a(RxFFmpegInvoke.java:108)
art/runtime/check_jni.cc:65] at io.reactivex.internal.operators.flowable.FlowableCreate.d(FlowableCreate.java:71)
art/runtime/check_jni.cc:65] at io.reactivex.j.a(Flowable.java:14636)
art/runtime/check_jni.cc:65] at io.reactivex.j.subscribe(Flowable.java:14583)
art/runtime/check_jni.cc:65] at io.reactivex.internal.operators.flowable.FlowableSubscribeOn$SubscribeOnSubscriber.run(FlowableSubscribeOn.java:82)
art/runtime/check_jni.cc:65] at io.reactivex.internal.schedulers.ScheduledRunnable.run(ScheduledRunnable.java:66)
art/runtime/check_jni.cc:65] at io.reactivex.internal.schedulers.ScheduledRunnable.call(ScheduledRunnable.java:57)
art/runtime/check_jni.cc:65] at java.util.concurrent.FutureTask.run(FutureTask.java:237)
art/runtime/check_jni.cc:65] at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:152)
art/runtime/check_jni.cc:65] at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:265)
art/runtime/check_jni.cc:65] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
art/runtime/check_jni.cc:65] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
art/runtime/check_jni.cc:65] at java.lang.Thread.run(Thread.java:818)
art/runtime/check_jni.cc:65]

用delogo命令好慢

ffmpeg -i /storage/emulated/0/DouyinQuick/@mc天勤(v0300f100000bj8rla5b34ar9veh3lug).mp4 -vf delogo=1:1:100:100:0 /storage/emulated/0/Download/haha.mp4
这个命令10秒的视频耗时1分钟,本来就这么慢还是命令有问题呢,有什么办法优化没

简单的关于编译的问题

你好作者,因为公司项目库老旧需要更换
最近也在看ffmpeg编译相关的内容
但是基本没有ffmpeg4.1 + ndk 19 + clang的处理方法
想问下用以前的编译方式会在新的Android平台版本产生兼容问题吗
(因为之前的库就是这样的)

顺便问下有没有好一点的学习文章啊。我看ffmpeg和Android ndk官网都各讲各的
没有c基础的表示完全看不懂怎么把两个连接起来

执行命令报错 用的1.2.4

Fatal signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x0 in tid 29898 (RxCachedThreadS), pid 29813 (ianyi.watermark)

命令:ffmpeg -i /storage/emulated/0/小精灵美化/小精灵美化视频壁纸/201811150354170696656.mp4 -vf delogo=264.901855:477.397644:378.328674:346.023560:1 /data/user/0/com.jianyi.watermark/cache/ffmpeg_out.mp4

AVI 转码失败

大神求指教 ,转到一半就失败了

cmd = {CmdList@4212} size = 4
0 = "ffmpeg"
1 = "-i"
2 = "/storage/emulated/0/DCIM/Camera/REC_1547559797_0.avi"
3 = "/storage/emulated/0/rxdrone/outPath/1547625392672.mp4"

A/libc: Fatal signal 11 (SIGSEGV), code 1, fault addr 0xc in tid 17292 (RxCachedThreadS)

音频视频合并失败

你好,大佬:
我直接clone了此项目,然后试着提取音频,视频等都正常, 但是在合并音频和视频时报错:
"ffmpeg –i -y " + DIR + "video.mp4" + " –i " + DIR + "tempMusic.aac" + " –vcodec copy –acodec copy " + DIR + "videoMusicAudio.mp4"
,上面是我写的命令,请问是什么问题呢?

delogo 命令闪退

试了3个视频,一个成功,两个失败,都是从抖音下的视频
WX20190513-124225@2x

裁剪高清视频3840*2160 报异常崩了

裁剪视频命令: cmd = "ffmpeg -y -i "+ mVideoPath +" -b 2097k -r 30 -vcodec libx264 -preset superfast " + OUT_PATH;
报错日志:
03-27 09:06:11.489 3659-5051/? E/Watchdog: !@sync 11030 [2019-03-27 09:06:11.488]
03-27 09:06:12.485 4910-5492 A/libc: Fatal signal 11 (SIGSEGV), code 1, fault addr 0x0 in tid 5492 (RxCachedThreadS)
03-27 09:06:12.771 5721-5721/? A/DEBUG: *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
03-27 09:06:12.772 5721-5721/? A/DEBUG: Build fingerprint: 'samsung/zerofltezm/zerofltechn:7.0/NRD90M/G9208ZMU2ERJ1:user/release-keys'
Revision: '10'
ABI: 'arm'
pid: 4910, tid: 5492, name: RxCachedThreadS >>> <<<
signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x0
r0 c931c2c0 r1 beb72d80 r2 00000002 r3 00000000
r4 beb72d80 r5 cebfd560 r6 cebfd540 r7 cebfdac0
r8 00000000 r9 c931c2c0 sl 80000000 fp cf5ca500
ip d1c73de8 sp cebfd4b0 lr d1c5cc31 pc cefe18c8 cpsr 00000010
03-27 09:06:12.782 5721-5721/? A/DEBUG: backtrace:
03-27 09:06:12.783 5721-5721/? A/DEBUG: #00 pc 003e08c8 /data/app/ 1/lib/arm/libffmpeg-core.so (av_buffersink_get_frame_flags+4)
#1 pc 00016c2d /data/app/ ll-1/lib/arm/libffmpeg-invoke.so (reap_filters+1700)
#2 pc 0001152d /data/app/ -1/lib/arm/libffmpeg-invoke.so (transcode+10572)
#3 pc 0000e0bd /data/app/ -1/lib/arm/libffmpeg-invoke.so (run_ffmpeg_command+356)
#4 pc 000228df /data/app/ -1/lib/arm/libffmpeg-invoke.so (Java_io_microshow_rxffmpeg_RxFFmpegInvoke_runFFmpegCmd+134)
#5 pc 016902d5 /data/app/ -1/oat/arm/base.odex (offset 0x14d0000)

您好,在导入到Android Studio 之后包这样的错误,你知道是什么问题吗?

../../../../src/main/jniLibs/armeabi-v7a/libavcodec.a(libmp3lame.o):libmp3lame.c:function mp3lame_encode_close: error: undefined reference to 'lame_close'
../../../../src/main/jniLibs/armeabi-v7a/libavcodec.a(libmp3lame.o):libmp3lame.c:function mp3lame_encode_frame: error: undefined reference to 'lame_encode_buffer'
../../../../src/main/jniLibs/armeabi-v7a/libavcodec.a(libmp3lame.o):libmp3lame.c:function mp3lame_encode_frame: error: undefined reference to 'lame_encode_buffer_int'
../../../../src/main/jniLibs/armeabi-v7a/libavcodec.a(libmp3lame.o):libmp3lame.c:function mp3lame_encode_frame: error: undefined reference to 'lame_encode_buffer_float'
../../../../src/main/jniLibs/armeabi-v7a/libavcodec.a(libmp3lame.o):libmp3lame.c:function mp3lame_encode_frame: error: undefined reference to 'lame_encode_flush'
../../../../src/main/jniLibs/armeabi-v7a/libavcodec.a(libmp3lame.o):libmp3lame.c:function mp3lame_encode_init: error: undefined reference to 'lame_init'
../../../../src/main/jniLibs/armeabi-v7a/libavcodec.a(libmp3lame.o):libmp3lame.c:function mp3lame_encode_init: error: undefined reference to 'lame_set_num_channels'
../../../../src/main/jniLibs/armeabi-v7a/libavcodec.a(libmp3lame.o):libmp3lame.c:function mp3lame_encode_init: error: undefined reference to 'lame_set_mode'
../../../../src/main/jniLibs/armeabi-v7a/libavcodec.a(libmp3lame.o):libmp3lame.c:function mp3lame_encode_init: error: undefined reference to 'lame_set_in_samplerate'
../../../../src/main/jniLibs/armeabi-v7a/libavcodec.a(libmp3lame.o):libmp3lame.c:function mp3lame_encode_init: error: undefined reference to 'lame_set_out_samplerate'
../../../../src/main/jniLibs/armeabi-v7a/libavcodec.a(libmp3lame.o):libmp3lame.c:function mp3lame_encode_init: error: undefined reference to 'lame_set_quality'
../../../../src/main/jniLibs/armeabi-v7a/libavcodec.a(libmp3lame.o):libmp3lame.c:function mp3lame_encode_init: error: undefined reference to 'lame_set_VBR'
../../../../src/main/jniLibs/armeabi-v7a/libavcodec.a(libmp3lame.o):libmp3lame.c:function mp3lame_encode_init: error: undefined reference to 'lame_set_VBR_quality'
../../../../src/main/jniLibs/armeabi-v7a/libavcodec.a(libmp3lame.o):libmp3lame.c:function mp3lame_encode_init: error: undefined reference to 'lame_set_VBR'
../../../../src/main/jniLibs/armeabi-v7a/libavcodec.a(libmp3lame.o):libmp3lame.c:function mp3lame_encode_init: error: undefined reference to 'lame_set_VBR_mean_bitrate_kbps'
../../../../src/main/jniLibs/armeabi-v7a/libavcodec.a(libmp3lame.o):libmp3lame.c:function mp3lame_encode_init: error: undefined reference to 'lame_set_brate'
../../../../src/main/jniLibs/armeabi-v7a/libavcodec.a(libmp3lame.o):libmp3lame.c:function mp3lame_encode_init: error: undefined reference to 'lame_set_bWriteVbrTag'
../../../../src/main/jniLibs/armeabi-v7a/libavcodec.a(libmp3lame.o):libmp3lame.c:function mp3lame_encode_init: error: undefined reference to 'lame_set_disable_reservoir'
../../../../src/main/jniLibs/armeabi-v7a/libavcodec.a(libmp3lame.o):libmp3lame.c:function mp3lame_encode_init: error: undefined reference to 'lame_init_params'
../../../../src/main/jniLibs/armeabi-v7a/libavcodec.a(libmp3lame.o):libmp3lame.c:function mp3lame_encode_init: error: undefined reference to 'lame_get_encoder_delay'
../../../../src/main/jniLibs/armeabi-v7a/libavcodec.a(libmp3lame.o):libmp3lame.c:function mp3lame_encode_init: error: undefined reference to 'lame_get_framesize'

由于看不到ndk的源码, 所以有个问题请教

你这里的应该也是修改了ffmpeg.c实现的cmd命令功能吧?
我想请教下, 如果多个线程执行. 怎么保证线程安全呢?
因为我看ffmpeg.c这个文件里面的main实际上并不是线程安全的,
也就是在java层只能阻塞调用或者队列调用命令.
没办法一次执行多个命令.是么?

您好,请问下连续执行多个命令会导致程序crash吗

现在视频添加bgm,先音频裁剪成视频长度,然后音视频混合,第一次完成这个步骤很快,几乎瞬间完成,如果继续执行第二次,程序就会崩溃,log也看不出啥问题。如果第二次隔一段时间运行,不会崩溃,没明白是为什么,希望您能指导下

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.