Code Monkey home page Code Monkey logo

yangkun19921001 / avffmpeglib Goto Github PK

View Code? Open in Web Editor NEW
111.0 6.0 39.0 106.88 MB

移植 FFmpeg 最新版本v4.4-dev-416 + libx264 + freetype + fontconfig + fribidi + openh264 +libfdk-aac + gnutls + speex + libwebp + lame +opus + opencore-amr + https)编译的适用于 Android 平台的音视频编辑、视频剪辑的快速处理框架,目前内置了音视频剪辑、编辑、视频拼接、字幕、水印、倒放等功能,也可以根据 ffmpeg 命令模式来进行处理。

Java 7.76% Shell 0.46% CMake 0.14% C 86.92% C++ 2.85% Objective-C 0.10% Kotlin 1.76%
ffmpg libx264 freetype openh264 libfdk-aac lame opus opencore-amr

avffmpeglib's Introduction

视音频编辑器

前言

有时候我们想对音视频进行加工处理,比如视频编辑、添加字幕、裁剪等功能处理,虽然 Github 上开源了一些比较不错的项目,但是如果我们想在此项目上进行二次开发,比如我想拿到该项目的动态库基于 OpenH264 来进行对 YUV 编码,这个时候有可能该动态库没有集成 OpenH64 库,所以为了扩展性,我就自己弄了一套万能的库,基本上包含了所有常用的音视频处理库,你不用再去进行编译。编译完成的头文件和动态库可以在该项目的 core/cpp 目录自行获取(已完全开源)。

##介绍

视音频编辑器 主要移至 **FFmpeg v4.4-dev + libx264 + freetype + fontconfig + fribidi + openh264 +libfdk-aac + gnutls + speex + libwebp + lame +opus + opencore-amr + https **等库编译的适用于 Android 平台的音视频编辑、视频剪辑的快速处理框架,目前内置了音视频剪辑、编辑、多个视频文件合并、字幕、水印、倒放等功能,也可以传入 FFmpeg 命令来进行处理。

我们先来看一下内置功能的效果:

视频剪辑:

视频合并:

视频编辑:

如何使用

###1. 添加依赖

implementation 'com.devyk.ffmpeglib:AVFFmpegCore:1.0.1'

###2. 功能 API 介绍

回调处理

public interface ExecuteCallback {
		/**
		*开始处理
		*/
    void onStart(Long executionId);
    /**
     * 如果外部传递了当前操作视频的时长,那么返回的是百分比进度,反之返回的是操作视频对应的微妙时长
     *
     * @param v
     */
    void onProgress(float v);
		/**
		*处理成功
		*/
    void onSuccess(long executionId);
		/**
		*处理失败
		*/
    void onFailure(long executionId, String error);
		/**
		*取消处理
		*/
    void onCancel(long executionId);
		/**
		* ffmpeg 执行的 log
		*/
    void onFFmpegExecutionMessage(LogMessage logMessage);
}

AVEditor

  • 剪辑

    AVVideo:
    //start:开始的时间 单位秒
    //duration: 剪辑多少秒
    fun clip(start: Float, duration: Float)
    
    AVEditor:
    fun exec(
      epVideo: AVVideo, 
      outputOption: OutputOption, 
      executeCallback: ExecuteCallback)
  • 旋转

    AVVideo:
    //rotation:旋转角度(仅支持90,180,270度旋转)
    //isFlip:是否镜像
    fun rotation(rotation: Int, isFlip: Boolean)
    AVEditor:
    fun exec(
      epVideo: AVVideo, 
      outputOption: OutputOption, 
      executeCallback: ExecuteCallback)
  • 裁剪

    AVVideo:
    //width: 裁剪的宽
    //height: 裁剪的高
    //x: 从 x 点开始
    //y: 从 y 点开始
    fun crop(
      width: Float, 
      height: Float, 
      x: Float, y: Float)
    AVEditor:
    fun exec(
      epVideo: AVVideo, 
      outputOption: OutputOption, 
      executeCallback: ExecuteCallback)
  • 添加文字水印

    AVVideo:
    fun addText(avText: AVText)
    AVEditor:
    fun exec(
      epVideo: AVVideo, 
      outputOption: OutputOption, 
      executeCallback: ExecuteCallback)
  • 添加图片水印

    AVVideo:
    fun addDraw(epDraw: AVDraw)
    AVEditor:
    fun exec(
      epVideo: AVVideo, 
      outputOption: OutputOption, 
      executeCallback: ExecuteCallback)
  • 视频合并

    AVEditor:
    fun merge(
      epVideos: List<AVVideo>, 
      outputOption: OutputOption, 
      executeCallback: ExecuteCallback)
  • 添加背景音乐

    AVEditor:
    music(
      			videoin: String,
            audioin: String,
            output: String,
            videoVolume: Float,
            audioVolume: Float,
            executeCallback: ExecuteCallback
        ) 
  • 音视频分离

    AVEditor:
    fun demuxer(
      inSource: String, outSource: String, 
      format: Format, 
      executeCallback: ExecuteCallback)
  • 视频倒放

    AVEditor:
    fun reverse(
      videoin: String, out: String, 
      vr: Boolean,//视频是否倒放
      ar: Boolean, //音频是否倒放
      executeCallback: ExecuteCallback)
  • 视频转图片

    AVEditor:
    fun video2pic(
      videoin: String, //视频输入文件
      out: String,  //图片输出路径-目录
      w: Int, h: Int, //输出图片的宽高
      rate: Float, //每秒视频生成图片数
      executeCallback: ExecuteCallback)
  • 视频转 Gif

    AVEditor:
    fun video2Gif(
            videoin: String,
            gifOut: String,
            startDuration: Int,
            stopDuration: Int,
            executeCallback: ExecuteCallback
        )
  • 自定义命令

    AVEditor:
    //cmd:FFmpeg 命令
    //duration: 处理视频的时长,可以通过 VideoUitls.getDuration(videoPath) 来获取
    fun execCmd(cmd: String, duration: Long, executeCallback: ExecuteCallback) 

FFmpeg 编译小技巧

有时候我们发现 Github 上一些基于 FFmpeg 开发的比较好的项目,比如 ijkplayerRxFFmpeg 等,我们想基于它做二次开发,由于我们不知道怎么编译,也不知道编译 FFmpeg 到底需要开启哪些节点,这个时候我就想拿某些项目的编译脚本,基于它来进行二次编译。一般来说有些项目不会开源编译 FFmpeg 的脚本。这个时候我们可以通过拿到开源项目的静态或者动态库,这里我就以 RxFFmpeg 来举例,可以看看我是如果拿到它的编译脚本.

1、先 clone RxFFmpeg

git clone https://github.com/microshow/RxFFmpeg.git

2、关联 librxffmpeg-core.so

通过该 so 我们知道它应该就是 FFmpeg 编译之后的动态库,现在我们通过 cmake 的方式关联到该 so

cmake_minimum_required(VERSION 3.4.1)
#JNI 路径
set(FFMpeg_include_PATH ${CMAKE_SOURCE_DIR})
include_directories(${FFMpeg_include_PATH}/include/)
add_library(RxFFmpeg SHARED IMPORTED)
set_target_properties(RxFFmpeg PROPERTIES IMPORTED_LOCATION ${PROJECT_SOURCE_DIR}/../../../libs/${CMAKE_ANDROID_ARCH_ABI}/librxffmpeg-core.so)
find_library(
        log-lib
        log)
FILE(GLOB JNI_ALL_C ${JNI_PATH}/*.cpp)
add_library(
        ffmpeg-tools
        SHARED
        ${JNI_ALL_C}
)
target_link_libraries(
        ffmpeg-tools
        RxFFmpeg
${log-lib}
)

3、编写 JNI 函数,拿到编译脚本

//
// Created by DevYK on 2020-10-02.
//
#include <android/log.h>
extern "C"
{
#include "libavutil/avutil.h"
}
#include <jni.h>
#define  AV_TAG   "AVLOG"
#define LOGE(format, ...)  __android_log_print(ANDROID_LOG_ERROR, AV_TAG, format, ##__VA_ARGS__)
int JNI_OnLoad(JavaVM *javaVM, void *pVoid) {
    const char *config = avutil_configuration();
    LOGE("FFMPEG VERSION%s \n", av_version_info());
    LOGE("FFMPEG configuration %s \n", avutil_configuration());
    return JNI_VERSION_1_6;
}

通过 debug 查看 config 指针指向内存中的信息如下:

嗯,拿到了它的编译信息,然后我们就可以基于它来完善我们项目的编译,我们可以编译出比它的功能更加丰富,就如开头介绍一般,我添加了市面上常用的一些 C++ 库,基本达到了万能了吧。

总结

项目地址:AVFFmpegLib

这里就不在介绍如何编译了,感兴趣的可以看 mobile-ffmpeg 项目,我这里也是基于它进行二次封装开发。

##参考

avffmpeglib's People

Contributors

yangkun19921001 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

avffmpeglib's Issues

不能裁剪视频和合并视频

10-09 16:52:41.270 24660-24660/com.devyk.av.ffmpegcmd D/ClipActivity: ffmpeg version v4.4-dev-416 10-09 16:52:41.270 24660-24660/com.devyk.av.ffmpegcmd D/ClipActivity: Copyright (c) 2000-2020 the FFmpeg developers 10-09 16:52:41.270 24660-24660/com.devyk.av.ffmpegcmd D/ClipActivity: built with Android (6317467 based on r365631c1) clang version 9.0.8 (https://android.googlesource.com/toolchain/llvm-project e0caee08e5f09b374a27a676d04978c81fcb1928) (based on LLVM 9.0.8svn) 10-09 16:52:41.270 24660-24660/com.devyk.av.ffmpegcmd D/ClipActivity: configuration: --cross-prefix=aarch64-linux-android- --sysroot=/Users/devyk/Data/Android/NDK/android-ndk-r21b/toolchains/llvm/prebuilt/darwin-x86_64/sysroot --prefix=/Users/devyk/Data/Project/sample/github_code/mobile-ffmpeg/prebuilt/android-arm64/ffmpeg --pkg-config=/usr/local/bin/pkg-config --enable-version3 --arch=aarch64 --cpu=armv8-a --cc=aarch64-linux-android21-clang --cxx=aarch64-linux-android21-clang++ --extra-libs='-L/Users/devyk/Data/Project/sample/github_code/mobile-ffmpeg/prebuilt/android-arm64/cpu-features/lib -lndk_compat' --target-os=android --enable-neon --enable-asm --enable-inline-asm --enable-cross-compile --enable-pic --enable-jni --enable-optimizations --enable-swscale --enable-shared --enable-v4l2-m2m --disable-outdev=fbdev --disable-indev=fbdev --enable-small --disable-openssl --disable-xmm-clobber-test --disable-debug --enable-lto --disable-neon-clobber-test --disable-programs --disable-postproc --disable-doc --disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages --disable-static --disable-sndio --disable-schannel --disable-securetransport --disable-xlib --disable-cuda --disable-cuvid --disable-nvenc --disable-vaapi --disable-vdpau --disable-videotoolbox --disable-audiotoolbox --disable-appkit --disable-alsa --disable-cuda --disable-cuvid --disable-nvenc --disable-vaapi --disable-vdpau --enable-libfdk-aac --enable-encoder=libfdk_aac --enable-decoder=libfdk_aac --enable-nonfree --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-gmp --enable-gnutls --enable-libmp3lame --enable-iconv --enable-libwebp --enable-libopencore-amrnb --enable-libspeex --enable-libx264 --enable-gpl --enable-libopus --disable-sdl2 --enable-libopenh264 --enable-zlib --enable-mediacodec 10-09 16:52:41.270 24660-24660/com.devyk.av.ffmpegcmd D/ClipActivity: libavutil 56. 55.100 / 56. 55.100 10-09 16:52:41.270 24660-24660/com.devyk.av.ffmpegcmd D/ClipActivity: libavcodec 58. 96.100 / 58. 96.100 10-09 16:52:41.270 24660-24660/com.devyk.av.ffmpegcmd D/ClipActivity: libavformat 58. 48.100 / 58. 48.100 10-09 16:52:41.270 24660-24660/com.devyk.av.ffmpegcmd D/ClipActivity: libavdevice 58. 11.101 / 58. 11.101 10-09 16:52:41.270 24660-24660/com.devyk.av.ffmpegcmd D/ClipActivity: libavfilter 7. 87.100 / 7. 87.100 10-09 16:52:41.270 24660-24660/com.devyk.av.ffmpegcmd D/ClipActivity: libswscale 5. 8.100 / 5. 8.100 10-09 16:52:41.270 24660-24660/com.devyk.av.ffmpegcmd D/ClipActivity: libswresample 3. 8.100 / 3. 8.100 10-09 16:52:41.270 24660-24660/com.devyk.av.ffmpegcmd D/ClipActivity: [mov,mp4,m4a,3gp,3g2,mj2 @ 0x55755b6a20] st: 1 edit list: 1 Missing key frame while searching for timestamp: 0 10-09 16:52:41.271 24660-24660/com.devyk.av.ffmpegcmd D/ClipActivity: [mov,mp4,m4a,3gp,3g2,mj2 @ 0x55755b6a20] st: 1 edit list 1 Cannot find an index entry before timestamp: 0. 10-09 16:52:41.300 24660-24660/com.devyk.av.ffmpegcmd D/ClipActivity: Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '/storage/emulated/0/qqmusic/mv/宝宝巴士儿歌 - 好爸爸_b0303bphdqo_3_0 [mqms].mp4': 10-09 16:52:41.301 24660-24660/com.devyk.av.ffmpegcmd D/ClipActivity: Metadata: 10-09 16:52:41.301 24660-24660/com.devyk.av.ffmpegcmd D/ClipActivity: major_brand : 10-09 16:52:41.301 24660-24660/com.devyk.av.ffmpegcmd D/ClipActivity: mp42 10-09 16:52:41.301 24660-24660/com.devyk.av.ffmpegcmd D/ClipActivity: minor_version : 10-09 16:52:41.301 24660-24660/com.devyk.av.ffmpegcmd D/ClipActivity: 0 10-09 16:52:41.301 24660-24660/com.devyk.av.ffmpegcmd D/ClipActivity: compatible_brands: 10-09 16:52:41.301 24660-24660/com.devyk.av.ffmpegcmd D/ClipActivity: isommp42 10-09 16:52:41.302 24660-24660/com.devyk.av.ffmpegcmd D/ClipActivity: creation_time : 10-09 16:52:41.302 24660-24660/com.devyk.av.ffmpegcmd D/ClipActivity: 2016-11-08T14:08:47.000000Z 10-09 16:52:41.302 24660-24660/com.devyk.av.ffmpegcmd D/ClipActivity: Duration: 10-09 16:52:41.302 24660-24660/com.devyk.av.ffmpegcmd D/ClipActivity: 00:02:22.63 10-09 16:52:41.302 24660-24660/com.devyk.av.ffmpegcmd D/ClipActivity: , start: 10-09 16:52:41.302 24660-24660/com.devyk.av.ffmpegcmd D/ClipActivity: 0.000000 10-09 16:52:41.302 24660-24660/com.devyk.av.ffmpegcmd D/ClipActivity: , bitrate: 10-09 16:52:41.302 24660-24660/com.devyk.av.ffmpegcmd D/ClipActivity: 512 kb/s 10-09 16:52:41.302 24660-24660/com.devyk.av.ffmpegcmd D/ClipActivity: Stream #0:0 10-09 16:52:41.302 24660-24660/com.devyk.av.ffmpegcmd D/ClipActivity: (und) 10-09 16:52:41.302 24660-24660/com.devyk.av.ffmpegcmd D/ClipActivity: : Audio: aac (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 64 kb/s 10-09 16:52:41.302 24660-24660/com.devyk.av.ffmpegcmd D/ClipActivity: (default) 10-09 16:52:41.302 24660-24660/com.devyk.av.ffmpegcmd D/ClipActivity: Metadata: 10-09 16:52:41.302 24660-24660/com.devyk.av.ffmpegcmd D/ClipActivity: creation_time : 10-09 16:52:41.303 24660-24660/com.devyk.av.ffmpegcmd D/ClipActivity: 2016-11-08T14:06:02.000000Z 10-09 16:52:41.303 24660-24660/com.devyk.av.ffmpegcmd D/ClipActivity: handler_name : 10-09 16:52:41.303 24660-24660/com.devyk.av.ffmpegcmd D/ClipActivity: Sound Media Handler 10-09 16:52:41.303 24660-24660/com.devyk.av.ffmpegcmd D/ClipActivity: Stream #0:1 10-09 16:52:41.303 24660-24660/com.devyk.av.ffmpegcmd D/ClipActivity: (und) 10-09 16:52:41.303 24660-24660/com.devyk.av.ffmpegcmd D/ClipActivity: : Video: h264 (avc1 / 0x31637661), yuv420p, 1280x720 [SAR 1:1 DAR 16:9], 445 kb/s 10-09 16:52:41.304 24660-24660/com.devyk.av.ffmpegcmd D/ClipActivity: , 10-09 16:52:41.304 24660-24660/com.devyk.av.ffmpegcmd D/ClipActivity: 25 fps, 10-09 16:52:41.305 24660-24660/com.devyk.av.ffmpegcmd D/ClipActivity: 25 tbr, 10-09 16:52:41.305 24660-24660/com.devyk.av.ffmpegcmd D/ClipActivity: 100 tbn, 10-09 16:52:41.305 24660-24660/com.devyk.av.ffmpegcmd D/ClipActivity: 50 tbc 10-09 16:52:41.305 24660-24660/com.devyk.av.ffmpegcmd D/ClipActivity: (default) 10-09 16:52:41.305 24660-24660/com.devyk.av.ffmpegcmd D/ClipActivity: Metadata: 10-09 16:52:41.305 24660-24660/com.devyk.av.ffmpegcmd D/ClipActivity: creation_time : 10-09 16:52:41.305 24660-24660/com.devyk.av.ffmpegcmd D/ClipActivity: 2016-11-08T14:08:47.000000Z 10-09 16:52:41.305 24660-24660/com.devyk.av.ffmpegcmd D/ClipActivity: handler_name : 10-09 16:52:41.305 24660-24660/com.devyk.av.ffmpegcmd D/ClipActivity: TrackHandler 10-09 16:52:41.305 24660-24660/com.devyk.av.ffmpegcmd D/ClipActivity: Stream mapping: 10-09 16:52:41.305 24660-24660/com.devyk.av.ffmpegcmd D/ClipActivity: Stream #0:1 (h264) -> scale 10-09 16:52:41.305 24660-24660/com.devyk.av.ffmpegcmd D/ClipActivity: (graph 0) 10-09 16:52:41.305 24660-24660/com.devyk.av.ffmpegcmd D/ClipActivity: setdar 10-09 16:52:41.305 24660-24660/com.devyk.av.ffmpegcmd D/ClipActivity: (graph 0) 10-09 16:52:41.305 24660-24660/com.devyk.av.ffmpegcmd D/ClipActivity: -> Stream #0:0 (libx264) 10-09 16:52:41.306 24660-24660/com.devyk.av.ffmpegcmd D/ClipActivity: Stream #0:0 -> #0:1 10-09 16:52:41.306 24660-24660/com.devyk.av.ffmpegcmd D/ClipActivity: (aac (native) -> aac (native)) 10-09 16:52:41.306 24660-24660/com.devyk.av.ffmpegcmd D/ClipActivity: Press [q] to stop, [?] for help 10-09 16:52:41.306 24660-24660/com.devyk.av.ffmpegcmd D/ClipActivity: frame= 0 fps=0.0 q=0.0 size= 0kB time=-577014:32:22.77 bitrate= -0.0kbits/s speed=N/A 10-09 16:52:41.406 24660-24660/com.devyk.av.ffmpegcmd D/ClipActivity: [graph 0 input from stream 0:1 @ 0x55753a7320] sws_param option is deprecated and ignored 10-09 16:52:41.414 24660-24660/com.devyk.av.ffmpegcmd D/ClipActivity: [libx264 @ 0x5575bddeb0] using SAR=1/1 10-09 16:52:41.415 24660-24660/com.devyk.av.ffmpegcmd D/ClipActivity: [libx264 @ 0x5575bddeb0] using cpu capabilities: ARMv8 NEON 10-09 16:52:41.423 24660-24660/com.devyk.av.ffmpegcmd D/ClipActivity: [libx264 @ 0x5575bddeb0] profile High, level 3.1, 4:2:0, 8-bit 10-09 16:52:41.424 24660-24660/com.devyk.av.ffmpegcmd D/ClipActivity: [libx264 @ 0x5575bddeb0] 264 - core 161 - H.264/MPEG-4 AVC codec - Copyleft 2003-2020 - http://www.videolan.org/x264.html - options: cabac=1 ref=1 deblock=1:0:0 analyse=0x3:0x3 me=dia subme=1 psy=1 psy_rd=1.00:0.00 mixed_ref=0 me_range=16 chroma_me=1 trellis=0 8x8dct=1 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=0 threads=12 lookahead_threads=2 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=3 b_pyramid=2 b_adapt=1 b_bias=0 direct=1 weightb=1 open_gop=0 weightp=1 keyint=250 keyint_min=25 scenecut=40 intra_refresh=0 rc=crf mbtree=0 crf=23.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 pb_ratio=1.30 aq=1:1.00 10-09 16:52:41.797 24660-24660/com.devyk.av.ffmpegcmd D/ClipActivity: frame= 20 fps=0.0 q=0.0 size= 0kB time=-577014:32:22.77 bitrate= -0.0kbits/s speed=N/A 10-09 16:52:42.301 24660-24660/com.devyk.av.ffmpegcmd D/ClipActivity: frame= 52 fps= 51 q=0.0 size= 0kB time=-577014:32:22.77 bitrate= -0.0kbits/s speed=N/A 10-09 16:52:42.809 24660-24660/com.devyk.av.ffmpegcmd D/ClipActivity: frame= 86 fps= 57 q=0.0 size= 0kB time=-577014:32:22.77 bitrate= -0.0kbits/s speed=N/A 10-09 16:52:42.823 24660-24660/com.devyk.av.ffmpegcmd D/ClipActivity: [out_0_1 @ 0x5575b0f7a0] 100 buffers queued in out_0_1, something may be wrong. 10-09 16:52:43.327 24660-24660/com.devyk.av.ffmpegcmd D/ClipActivity: frame= 121 fps= 60 q=0.0 size= 0kB time=-577014:32:22.77 bitrate= -0.0kbits/s speed=N/A 10-09 16:52:43.744 24660-24660/com.devyk.av.ffmpegcmd E/ClipActivity: startClipVideo onFailure:Too many packets buffered for output stream 0:0. 10-09 16:52:43.745 24660-24660/com.devyk.av.ffmpegcmd D/ClipActivity: Too many packets buffered for output stream 0:0. 10-09 16:52:43.751 24660-24660/com.devyk.av.ffmpegcmd I/Toast: Show toast from OpPackageName:com.devyk.av.ffmpegcmd, PackageName:com.devyk.av.ffmpegcmd

大佬,项目运行不起来么,报so依赖重复,我过滤之后又报找不到

1.More than one file was found with OS independent path 'lib/armeabi-v7a/libavutil.so'. If you are using jniLibs and CMake IMPORTED targets, see https://developer.android.com/studio/preview/features#automatic_packaging_of_prebuilt_dependencies_used_by_cmake

2021-09-27 16:10:05.348 28583-28583/? E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.devyk.av.ffmpegcmd, PID: 28583
java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/com.devyk.av.ffmpegcmd-HcWAKORbP5n8RhF79JpLEA==/base.apk"],nativeLibraryDirectories=[/data/app/com.devyk.av.ffmpegcmd-HcWAKORbP5n8RhF79JpLEA==/lib/arm, /data/app/com.devyk.av.ffmpegcmd-HcWAKORbP5n8RhF79JpLEA==/base.apk!/lib/armeabi-v7a, /system/lib, /vendor/lib]]] couldn't find "libavutil.so"
at java.lang.Runtime.loadLibrary0(Runtime.java:1011)
at java.lang.System.loadLibrary(System.java:1657)
at com.devyk.ffmpeglib.config.Config.(Config.java:97)
at com.devyk.ffmpeglib.config.Config.enableLogCallback(Config.java:255)
at com.devyk.ffmpeglib.async.AsyncFFmpegExecuteTask.enableLogCallback(AsyncFFmpegExecuteTask.java:102)
at com.devyk.ffmpeglib.async.AsyncFFmpegExecuteTask.(AsyncFFmpegExecuteTask.java:74)
at com.devyk.ffmpeglib.ffmpeg.FFmpeg.executeAsync(FFmpeg.java:160)
at com.devyk.ffmpeglib.AVEditor.execCmd(AVEditor.kt:544)
at com.devyk.ffmpeglib.AVEditor.exec(AVEditor.kt:147)
at com.devyk.av.ffmpegcmd.EditorActivity.execVideo(EditorActivity.kt:191)
at com.devyk.av.ffmpegcmd.EditorActivity.onClick(EditorActivity.kt:112)
at android.view.View.performClick(View.java:6330)
at android.view.View$PerformClick.run(View.java:25105)
at android.os.Handler.handleCallback(Handler.java:869)
at android.os.Handler.dispatchMessage(Handler.java:101)
at android.os.Looper.loop(Looper.java:206)
at android.app.ActivityThread.main(ActivityThread.java:6733)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:845)

高清视频不能剪辑

手机拍摄的高清4K视频去水印会报Video encoding failed

ffmpeg -i /storage/emulated/0/DCIM/Camera/366.mp4 -vf delogo=x=2:y=2:w=40:h=40:show=0 /storage/emulated/0/DCIM/Camera/out.mp4

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.