范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

Android中通过FFmpeg命令对音视频编辑处理(已开源)

  视音频编辑器 1、前言
  有时候我们想对音视频进行加工处理,比如视频编辑、添加字幕、裁剪等功能处理,虽然 Github 上开源了一些比较不错的项目,但是如果我们想在此项目上进行二次开发,比如我想拿到该项目的动态库基于 OpenH264 来进行对 YUV 编码,这个时候有可能该动态库没有集成 OpenH64 库,所以为了扩展性,我就自己弄了一套万能的库,基本上包含了所有常用的音视频处理库,你不用再去进行编译。
  编译完成的头文件和动态库可以在该项目的 core/cpp 目录自行获取( 「已完全开源」 )。 ❝
  ps:这里再推荐一下我的另一个音视频处理库 AVEditor ----> 功能正在完善中,可以先关注 。
  AVEditor 是一款短视频编辑 SDK,仿 DouYin 音视频处理。功能包含有美颜、滤镜、贴纸、特效、录制、分段录制、速率录制、变声、配乐、rtmp 直播推流、图片转视频、剪辑,mp4/flv 格式封装等功能。
  ❞ 2、介绍
  「视音频编辑器」  主要移植  FFmpeg v4.4-dev + libx264 + freetype + fontconfig + fribidi + openh264 +libfdk-aac + gnutls + speex + libwebp + lame +opus + opencore-amr + https   等库编译的适用于 Android 平台的音视频编辑、视频剪辑的快速处理框架,目前内置了音视频剪辑、编辑、多个视频文件合并、字幕、水印、倒放等功能,也可以传入  「FFmpeg」  命令来进行处理。
  「我们先来看一下内置功能的效果:」
  音视频剪辑:
  音视频合成:
  音视频编辑:
  > 更多效果点击阅读原文进行查看
  C++音视频学习资料免费获取方法:关注音视频开发T哥  ,点击「链接」即可免费获取2023年最新 C++音视频开发进阶独家免费学习大礼包! 3、如何使用3.1 添加依赖implementation "com.devyk.ffmpeglib:AVFFmpegCore:1.0.1"3.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,
  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)  4、FFmpeg 编译小技巧
  有时候我们发现 Github 上一些基于 FFmpeg 开发的比较好的项目,比如 ijkplayer ,RxFFmpeg 等,我们想基于它做二次开发,由于我们不知道怎么编译,也不知道编译 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  extern "C" { #include "libavutil/avutil.h" } #include  #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  ", av_version_info());     LOGE("FFMPEG configuration %s  ", avutil_configuration());     return JNI_VERSION_1_6; }
  通过 debug 查看 config 指针指向内存中的信息如下:
  嗯,拿到了它的编译信息,然后我们就可以基于它来完善我们项目的编译,我们可以编译出比它的功能更加丰富,就如开头介绍一般,我添加了市面上常用的一些 C++ 库,基本达到了万能了吧。 5、总结
  项目地址:AVFFmpegLib
  这里就不在介绍如何编译了,感兴趣的可以看 mobile-ffmpeg 项目,我这里也是基于它进行二次封装开发。 6、参考EpMedia FFmpeg 常用命令 mobile-ffmpeg Android 音视频编辑经验总结及开源工程分享
  原文链接: Android 中通过 FFmpeg 命令对音视频编辑处理(已开源)

皂河龙运城的昨天今天和明天!在这个国庆节皂河龙运城成功试运营成为了宿迁最热门的话题大家在流连忘返的同时也惊讶于这里的巨大变化今天,就让我们一起来探究皂河古镇的昨天今天和明天!昨天皂河古镇位于市区西北,与大运河枫丹白露漫游幕后的故事Hello!这里是设小计,看到大家在智己APP和朋友圈分享的照片,很高兴L7能够陪伴大家一起去到那么多美丽的地方!国庆节假期已经过去大半啦,今天,继续和大家分享Inspiratio反向旅游是什么意思?所谓的反向旅游就是去那些别人不愿意去,也不爱去的地方旅游,用自己独特的爱好和眼光探索不一样的美。与反向旅游相对的当然是传统意义上的正向旅游,也就是跟着大家的推荐走,去大多数人推荐的南岳衡山现云瀑,游客疑似银河落九天来源湖南日报10月4日下午5时许有游客在衡阳南岳衡山中心景区看到了非常壮观的云瀑美景据拍摄者表示感觉这个云瀑就像天上来一样的就自然地想起李白的那句诗句飞流直下三千尺,疑似银河落九天你所不知道的衡山(三)萱洲古镇萱洲古镇在衡山县最南端,湘江弯曲河段西部凹岸,依江而建了一座极具江南水乡特色的古镇,这就是萱洲。相传远古时候,魏魏南岳衡山脚下的映山村有条小河流人湘江,在江河交汇之处,经千百年的泥探访以色列世界遗产城市特拉维夫特拉维夫(TelAviv)建于1909年,并逐渐发展成为驻巴勒斯坦英军控制下的一个大都市。在20世纪30年代初到50年代间,白色之城在帕特里克盖德斯(PatrickGeddes)爵首都大学生国庆假期上好行走的大思政课中国青年报客户端北京10月1日电(中青报中青网记者樊未晨)10月1日清晨,天安门广场,在嘹亮的国歌声中,鲜艳的五星红旗冉冉升起。来自北京大学清华大学北京科技大学北京工业大学首都师范河北省固安县紧抓疏解北京非首都功能牛鼻子协同发展产业兴城(走进县城看发展)来源人民日报显示屏像卷轴一样缓缓打开,手机屏折叠10万次依然能使用,影像作品在挡风玻璃水杯上播放走进位于河北省固安县的维信诺科技股份有限公司展厅,各类柔性屏应用场景繁多。在固安翌光新中国定首都,有11个城市入选!为何最后是北京?主席这样解释1949年建国前夕,王稼祥列出11个首都候选城市,为何最后选了北京?今年是建国73周年,看着满大街的红星红旗,不禁让人想到1949年10月1日,毛主席在天安门城楼上庄严的宣告中华人阿联酋送来超级大单,我国航天技术在国际上迎来多国追捧中阿两国达成协议,由阿联酋100自主研发的希拉德2号月球探测车将搭乘我国的嫦娥七号探测器于2026年在月球南极着陆,这次搭乘火箭阿联酋将支付我方300亿元人民币!为什么阿联酋会选择美国超发美元引发的后果美国超发美元,是目前全球货币政策的主流,美国也是世界上唯一一个以货币超发为主要目标的国家。作为最大债权国,在国际贸易投资以及其他领域,美国都有美元计价结算的贸易数据。另外美元作为国
如果你也有儿子,也想让他优秀而自律养育男孩的10条建议爱和信任是最好的教育,但不是全部。想要养出一个优秀又自律的男孩,父母一定要坚定原则用心管教。作者土豆妈学校停课几天后,一群男孩家长在群里吐槽我儿子在家不是上蹿下跳,就是大喊大叫,简普尔230秒得12分大秀杂耍抛投詹姆斯等球员盛赞他太冷酷了北京时间10月26日,NBA常规赛继续进行,勇士客场105134不敌太阳。本场比赛普尔替补出场,12中6贡献17分2篮板5助攻。他在上半场比赛表现亮眼,曾在230秒以内得到了12分欧冠赛场!米兰已展现出了质的蜕变!距出线仅剩一场决战随着客场大胜萨格勒布迪纳摩,米兰掌握了球队在E组出线的主动权,只要最后一轮战平红牛队即可出线。虽说主动权已牢牢掌握在米兰手中,但不得不说,萨尔茨堡红牛的实力与米兰也是伯仲之间,索性免费赠5万张餐饮电子优惠券!香港旅发局邀市民品味全城一年一度的香港美酒佳肴巡礼将于11月启动。今年,香港旅游发展局(旅发局)携手近700间餐厅及酒吧,推出极富创意的香港味道各式精彩餐饮活动为庆祝香港特别行政区成立25周年,旅发局首次特斯拉Cyberquad儿童安全违规被召回美国消费者产品安全委员会表示,没有补救办法,建议车主不要再骑车,并要求全额退款。2021特斯拉推出了CyberquadforChilds,这是一款小规模的Cyberquad复制品,双十一机票随心飞,看看有没有适合你的城市,以及神州租车随心租头条创作挑战赛双十一到了,各大航空公司推出了随心飞产品,大家看看有没有适合你城市的产品,等到疫情恢复一些,飞个几次就回本啦,以下是各大航空公司的随心飞产品的整理,给大家参考以下,个机关事业单位退休职工,2024年之后退休金将有四点变化,提前看看机关事业单位退休职工,2024年9月30日之后退休金将有四大变化,提前看看会影响到你吗?时间走到10月底现在距离2024年10月大致就是两年的时间也就是说再过两年退休中人的十年过渡超1000万人报考!教资考试为何火了?作者丨陈洁编辑丨周上祺图源丨视觉中国10月29日,2022年下半年全国中小学教师资格考试(笔试)即将举行。数据显示,2022年,教资考试的报考人数创下历史新高。据教育部消息,全国教山东1地最新人事任免烟台市蓬莱区人民政府关于任免赵光远等职务的通知各镇人民政府,各街道办事处,区政府各部门,有关单位经研究决定,任命赵光远为烟台市蓬莱区人民政府办公室副主任(试用期一年),不再聘任其为在医药赛道上做投资,华安基金刘潇不一样在哪?最近医药板块迎来了一波显著反弹,投资者现在或许更关心如何在布局医药赛道的同时,获得更好的投资体验?看好医药长期价值,如何上车更能提高投资胜率?其实,布局单一赛道难免会面临较大的波动美国渔民用网捞到235千克深水炸弹捕捞区域为二战战场在美国罗德岛海岸附近发现的深水炸弹。(图源美国海军)海外网10月28日电据美国福克斯新闻网10月27日报道,日前,美国渔民在罗德岛海岸附近用渔网捞到了一枚未爆炸的炸弹,经鉴定为二战