FFMEPG 平台移植,接口简化和外部模块接入 (五)ffmpeg android移植(ffmpeg android studio 静态编译)

FFMPEG 之 AVSwresample 1 AVSwresample 音频重采样,样本格式转换和混合库。 函数名 作用 const AVClass * swr_get_class (void) Get the AVClass for SwrContext. struct SwrContext * swr_alloc (void) Allocate SwrContext. int swr_init (struct SwrContext *s) 设置用户参数后初始化上下文。 int swr_is_init. 阅读详情

前面我们用在ubuntu下编译了android的动态库,但实际开发中,我们可能需要在android 这类开发工具中开发基于太ffmpeg的视频应用。在android studio 中编译需要注意以下几点

1. As ndk 对应的sdk不能大于编译ffmpeg本身编译的NDK中使用的SDK。可以在application.mk中指定:

APP_PLATFORM := android-XX 如果XX小于了ffmpeg编译的SDK,则会报如log2无法链接这类问题

2.  编译库的链接顺序必须要对,一般有这样规律,主库要在依赖库前面链接。对于需要filter的系统来说一般的链接顺序如下:avformat avfilter avcodec x264 avresample swresample freetype libpng avutil swscale postproc

下面给出编译的具体make文件

#APP_ABI := armeabi armeabi-v7a x86
ifeq ($(APP_ABI), x86)
LIB_NAME_PLUS := x86
else
LIB_NAME_PLUS := armeabi
endif

LOCAL_PATH:= $(call my-dir)

LOCAL_ALLOW_UNDEFINED_SYMBOLS := true

include $(CLEAR_VARS)
LOCAL_MODULE:= avcodec-prebuilt-$(LIB_NAME_PLUS)
LOCAL_SRC_FILES:= prebuilt/$(LIB_NAME_PLUS)/libavcodec.a
include $(PREBUILT_STATIC_LIBRARY)

include $(CLEAR_VARS)
LOCAL_MODULE := swresample-prebuilt-$(LIB_NAME_PLUS)
LOCAL_SRC_FILES := prebuilt/$(LIB_NAME_PLUS)/libswresample.a
include $(PREBUILT_STATIC_LIBRARY)

include $(CLEAR_VARS)
LOCAL_MODULE := avresample-prebuilt-$(LIB_NAME_PLUS)
LOCAL_SRC_FILES := prebuilt/$(LIB_NAME_PLUS)/libavresample.a
include $(PREBUILT_STATIC_LIBRARY)


include $(CLEAR_VARS)
LOCAL_MODULE := x264-prebuilt-$(LIB_NAME_PLUS)
LOCAL_SRC_FILES := prebuilt/$(LIB_NAME_PLUS)/libx264.a
include $(PREBUILT_STATIC_LIBRARY)


include $(CLEAR_VARS)
LOCAL_MODULE := swscale-prebuilt-$(LIB_NAME_PLUS)
LOCAL_SRC_FILES := prebuilt/$(LIB_NAME_PLUS)/libswscale.a
include $(PREBUILT_STATIC_LIBRARY)

include $(CLEAR_VARS)
LOCAL_MODULE :=  freetype-prebuilt-$(LIB_NAME_PLUS)
LOCAL_SRC_FILES := prebuilt/$(LIB_NAME_PLUS)/libfreetype.a
include $(PREBUILT_STATIC_LIBRARY)

include $(CLEAR_VARS)
LOCAL_MODULE:= avfilter-prebuilt-$(LIB_NAME_PLUS)
LOCAL_SRC_FILES:= prebuilt/$(LIB_NAME_PLUS)/libavfilter.a
include $(PREBUILT_STATIC_LIBRARY)

include $(CLEAR_VARS)
LOCAL_MODULE:= avformat-prebuilt-$(LIB_NAME_PLUS)
LOCAL_SRC_FILES:= prebuilt/$(LIB_NAME_PLUS)/libavformat.a
include $(PREBUILT_STATIC_LIBRARY)

include $(CLEAR_VARS)
LOCAL_MODULE :=  avutil-prebuilt-$(LIB_NAME_PLUS)
LOCAL_SRC_FILES := prebuilt/$(LIB_NAME_PLUS)/libavutil.a
include $(PREBUILT_STATIC_LIBRARY)


include $(CLEAR_VARS)
LOCAL_MODULE :=  postproc-prebuilt-$(LIB_NAME_PLUS)
LOCAL_SRC_FILES := prebuilt/$(LIB_NAME_PLUS)/libpostproc.a
include $(PREBUILT_STATIC_LIBRARY)


include $(CLEAR_VARS)
LOCAL_MODULE := libpng17-prebuilt-$(LIB_NAME_PLUS)
LOCAL_SRC_FILES := prebuilt/$(LIB_NAME_PLUS)/libpng17.a
include $(PREBUILT_STATIC_LIBRARY)

include $(CLEAR_VARS)
ifeq ($(APP_ABI), x86)
TARGET_ARCH:=x86
TARGET_ARCH_ABI:=x86
else
LOCAL_ARM_MODE := arm
endif

LOCAL_ALLOW_UNDEFINED_SYMBOLS := true
LOCAL_MODULE := libffmpegjni
LOCAL_SRC_FILES := CarEyeJni.c CarEyeEncoderAPI.cpp FFVideoFilter.cpp CarEyeOSDAPI.cpp CarEyeMPEGAPI.cpp CarEyeDecoderAPI.cpp
LOCAL_LDLIBS := -L$(SYSROOT)/usr/lib -llog -lz -lm
LOCAL_STATIC_LIBRARIES := avformat-prebuilt-$(LIB_NAME_PLUS) \
avfilter-prebuilt-$(LIB_NAME_PLUS) \
avcodec-prebuilt-$(LIB_NAME_PLUS) \
x264-prebuilt-$(LIB_NAME_PLUS) \
avresample-prebuilt-$(LIB_NAME_PLUS) \
swresample-prebuilt-$(LIB_NAME_PLUS) \
freetype-prebuilt-$(LIB_NAME_PLUS) \
libpng17-prebuilt-$(LIB_NAME_PLUS) \
avutil-prebuilt-$(LIB_NAME_PLUS) \
swscale-prebuilt-$(LIB_NAME_PLUS) \
postproc-prebuilt-$(LIB_NAME_PLUS)

LOCAL_C_INCLUDES += -L$(SYSROOT)/usr/include
LOCAL_C_INCLUDES += $(LOCAL_PATH)/include

ifeq ($(APP_ABI), x86)
LOCAL_CFLAGS := -DUSE_X86_CONFIG
else
LOCAL_CFLAGS := -DUSE_ARM_CONFIG
endif

include $(BUILD_SHARED_LIBRARY) 


相关代码请参考car-eye 开源网站和github为准

car-eye开源官方网址:www.car-eye.cn  

car-eye 流媒体平台网址:www.liveoss.com   

car-eye 技术官方邮箱: support@car-eye.cn    
car-eye技术交流QQ群: 590411159     


CopyRight©  car-eye 开源团队 2018

详细的FFmpeg编译流程与脚本分析 FFmpeg是一个跨平台的多媒体库,也是目前音视频领域应用最广泛的库。它包括llibavcodec、libavformat、libavutil、libavdevice、libavfilter、libswscale、libswresample、libpostproc等模块,其中avcodec用于编解码,avformat用于解封装,avutil是提供工具类,avdevice用于各平台的设备接入 阅读详情

相关推荐

ffmpeg减少编译包体积技巧

ffmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。 其实ffmpeg只是对该框架的通俗称呼,该框架本质上为libav,ffmpeg也只是基于libav开发的一套工具。 libav框架可以编译在其他平台进行使用,在下载的源码中,包含有configure程序来进行编译工作,但是单纯的运行该程序进行编译,编译生成的包体积是非常大的,所以我们需要进行一些配置来减小编译包...

TuGeLe的博客 5024

android编译ffmpeg x264 freetype

1、X264编译NDK=/home/lb/Android/NDk/android-ndk-r14b SYSROOT=$NDK/platforms/android-19/arch-arm/ TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64 CPREFIX=$TOOLCHAIN/bin/arm-linux...

libin534226097的博客 1360

Android-ffmpeg-android.zip

Android-ffmpeg-android.zip,ffmpeg for android使用x264、libass、fontconfig、freetype、fribidi和lame编译(支持android 4.1 ),安卓系统是谷歌在2008年设计和制造的。操作系统主要写在爪哇,C和C 的核心组件。它是在linux内核之上构建的,具有安全性优势。

FFmpeg 音频重采样的两种方法libavcodec和libswresample

1、libavcodec 2、libswresample

myvest的专栏 7423

CrewAI 多 Agent 实战包 v1(Mock免Key跑通+通义千问可选+流水线样例)

本资源是 CrewAI 风格多 Agent 可运行工程包:研究→写作→审校等流水线样例。无 API Key 时自动降级 Mock 引擎跑通;有 DASHSCOPE_API_KEY 时可接真实 CrewAI + 通义千问。含中文 README、samples、smoke 留档、单元测试。本包不含密钥。关联博客:https://blog.youkuaiyun.com/mtl1994

不带DDR的ZYNQ使用OCM加载程序运行的方法

软件版本:Vivado Vitis2019.2 第一步: 在Vivado的ZYNQ Block Design时候不配置DDR 第二步: 在Vitis中: 1、 在Vitis中新建Platform,选择xsa文件: 2、 在xparameters.h中添加DDR的地址空间定义,如下: 3、 修改链接文件,修改每个段都到ram_0,因为ram_1空间全部给到应用程序 4、 修改fsbl工程的main.c,增加XPAR_PS7_DDR_0条件编译 5、 修改fsbl.h,重定义DDR_EN

hpf247的博客 5533

ubuntu下编译ffmpeg+x264库(android和Linux)(三)

前言 ffmpeg是一个跨平台的音视频处理库,为了跨平台那么就需要编译出适用于各个平台的ffmpeg库。前文分别实现了在windows平台和Mac平台下编译安卓,mac,windows使用的库,本文的目的就是在Linux平台下编译用于Linux和安卓使用的ffmpeg库。这里采用的Linux为Ubuntu系统,基本上Mac平台的编译脚本只需要做少量的修改就可以移植到Ubuntu系统。 编译环境准备 1、安装Ubuntu系统虚拟机: 我这里用的是Mac电脑(ps:mac电脑的可以直接使用脚本编译a

翻肚鱼儿的博客 626

【数学建模】 进化计算与群体智能

遗传算法(GA)是一种用于优化和搜索问题的启发式算法。它模拟了自然选择的过程,其中个体通过遗传和变异进行繁殖,逐渐进化出更优的解。基本步骤初始化:生成初始种群。适应度评估:评估种群中每个个体的适应度。选择:根据适应度选择个体进行繁殖。交叉:选定个体对进行基因交换,生成新的后代。变异:对一些个体进行基因变异,以增加多样性。迭代:重复评估和繁殖过程,直至达到停止条件。粒子群优化算法(PSO)是一种基于群体智能的优化算法,由Kennedy和Eberhart于1995年提出。其灵感来源于鸟群觅食的行为。

weixin_42914989的博客 1113

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

视音频编辑器前言有时候我们想对音视频进行加工处理,比如视频编辑、添加字幕、裁剪等功能处理,虽然 Github 上开源了一些比较不错的项目,但是如果我们想在此项目上进行二次开发,比如我想拿...

音视频开发进阶 1749

105. replace( )函数

【目录】

weixin_63986098的博客 1万+

群晖Lucky套件高级玩法-——更新证书同步更新群晖自带证书

群晖Lucky套件高级玩法-——更新证书同步更新群晖自带证书

wojuzi的博客 2454

FFMPEG学习【libswresample】

一、函数 const AVClass *  swr_get_class (void) 获取 SwrContext的AVClass。 二、选项常数 这些常量用于lswr的AVOptions接口。 enum   SwrDitherType {    SWR_DITHER_NONE = 0, SWR_DI

一世豁然的专栏 8274

第一届“龙信杯”电子数据取证竞赛Writeup

第一届“龙信杯”电子数据取证竞赛Writeup

toto的博客 1万+

FFmpeg中libswresample库简介及测试代码

libswresample库功能主要包括高度优化的音频重采样、rematrixing和样本格式转换操作。 以下是测试代码(test_ffmpeg_libswresample.cpp),对音频了解较少,测试代码是参考examples中的: #include "funset.hpp" #include <iostream> #ifdef __cplusplus extern "C"...

网络资源是无限的 3734

无需qt-creator,使用Trae从0到1生成qt的开发、构建、调试环境

没有使用qt creator,也没有在trae中安装qt相关的插件,我也没有写一行代码,纯粹聊天使用trae开发出了一个qt程序

cpp加油站的专栏 2946

179、运动控制中的行业标准:机器人安全标准ISO 10218

今天这篇笔记,就把我踩过的坑和标准里的硬骨头掰开揉碎讲清楚。

m0_50546716的博客 168

FFMEPG 平台移植,接口简化和外部模块接入 (一)ffmpeg android移植(ndk 编译)

Car-eye-FFMPEG项目是Car-eye 开源平台的一个新项目,目的是在FFMPEG项目和其外部模块,如freetype,X264的基础上建立一个多平台编译,接口调用简单的工具集。本博客是一个连载,首先从android开始写吧。因为FFMPEG本身对android编译的支持就不是特别好。本文开发环境是ubuntu分步来做:1. 建立NDK编译环境,请参考外面的博客讲ndk安装到ubuntu...

Car_eye的博客 525

Vue3 - Element Plus 日期选择器 el-date-picker,设置 type=week 变成周选择器后,将选择周时修改为 “周一至周日“ 为一组范围(详细示例代码,新手小白秒会)

vue3,element-plus,DatePicker日期选择器,el-date-picker,周,type=week,周选择器,日期选择器week怎么拿到具体的时间范围,如何取week周选择器的value值,format如何设置,时间选择器按周选择时展示具体日期范围,vue3elementPlus日期选择器选择一周7天的数据格式怎么拿到,el-date-picker设置type等于week后怎么设置format属性,format和value-format怎么设置,范围选择器周,一周,选择一周7天时间

🏆 前端领域优质创作者 1万+

FFmpeg API 变更记录

最近一两年内FFmpeg项目发展的速度很快,本来是一件好事。但是随之而来的问题就是其API(接口函数)一直在发生变动。这么一来基于旧一点版本的FFmpeg的程序的代码在最新的类库上可能就跑不通了。例如一年前的程序中,获取媒体信息使用的函数是av_find_stream_info()。但是最近的版本中,av_find_stream_info()函数已经无法使用了,取而代之的是avformat_fin

雷霄骅(leixiaohua1020)的专栏 3万+

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

利用ffmpeg中的libswresample模块对音频进行重采样

在工作中,需要对音频进行重采样,比如说采样率为44.1kHz变为48kHz,通过研究ffmpeg中提供的例子,自己写了一段测试代码,贴出来供大家参考(当然,重采样还有另外一种方法,就是用ffmpeg中的libavfilter模块,后面我也会把该方法的代码贴出来)。测试代码仅测试过AAC格式,其它格式需要稍加改动(主要在fwrite的那一段,AAC解码出来的format为FLTP类型,如果不是该格式

TopsLuo的专栏 2476

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

FFmpeg模块介绍

□ libavutil 核心工具库,最基础模块之一,其他模块都会依赖该库做一些基本的音视频处理操作 □ libavformat 文件格式和协议库,封装了Protocol层和Demuxer、Muxer层,使得协议和格式对于开发者来说是透明的 □ libavcodec 编解码库,封装了Codec层,但是有一些codec是具备自己的License的,FFmpe不会默认添加像libx264、FDK-AAC...

weixin_33976072的博客 736

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

ffmpeg之音频视频合成

需求: 把音频文件和视频文件进行合成操作 脚本: ffmpeg -i c:/db/1.mp3 -i c:/db/annew.mp4 c:/db/last.mp4  

smallnetvisitor的博客 7241

Android Java调用ffmpeg命令

0. 前言ffmpeg命令很强大,但是在Android工程中无法执行可执行文件ffmpeg,即无法使用ffmpeg。 本文介绍把ffmpeg改造成库文件,然后通过JNI调用它,即可实现在Java中使用ffmpeg命令。PS: 本工程依赖于前文Android 编译FFmpeg x264。1. ffmpeg1.1 main to run(1)ffmpeg.h 进入ffmpeg源代码,修改ffmpe

矩阵实验室 5010
上一篇: Keil5 编译UTF8码字符串报错解决办法
下一篇: FFMEPG 平台移植,接口简化和外部模块接入 (六)ffmpeg android移植(ffmpeg android 下解码器)
路过&
博客等级 码龄19年 126粉丝 91原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值