https://github.com/windsome/ffmpeg-android.git
为了能在android平台上播放全格式的多媒体文件,我们需要自己做一个多媒体播放器。android自带的opencore系统解码格式较少,只支持 mp4和ogg,并且结构不是很好理解。如果要加其他的解码方式实在太费劲。经过考虑,基于ffmpeg实现全功能的播放器比较容易并且成本比较低。(ffmpeg移植后的内容我已经放到git@github.com:windsome/ffmpeg-android.git上,有兴趣的可以直接下载,在android2.1上编过,不知道在其他android版本上能不能编过)
本文讨论制作全格式多媒体播放器的第一步:ffmpeg 移植。
第一步:得到别人已经移植过的一个比较旧的android平台上的ffmpeg。地址为 http://gitorious.org/~olvaffe/ffmpeg/ffmpeg-android ,我们将使用其*.mk 文件。我将此源码放到一个临时目录中。
第二步:得到新版本的ffmpeg。地址为 http://ffmpeg.org/download.html 。一般用git clone 得到。我将源码放到了android源码树的external/目录下。
第三步:configure ffmpeg ,目的是得到android平台上的config.mak和config.h文件。所以只需要configure成功即可,不必编译,稍候我们会在android源码树下编译。
export PREBUILT=/home/Dev/android/prebuilt/linux-x86/toolchain/arm-eabi-4.4.0
./configure --target-os=linux
--arch=armv41
--enable-cross-compile
--cc=$PREBUILT/bin/arm-eabi-gcc
--cross-prefix=$PREBUILT/bin/arm-eabi-
--nm=$PREBUILT/bin/arm-eabi-nm
--extra-cflags="-fPIC -DANDROID"
--enable-static
--disable-shared
--disable-asm
--disable-yasm
--prefix=`pwd`/android_bin
--extra-ldflags="-Wl,-T,$PREBUILT/arm-eabi/lib/ldscripts/armelf.x -Wl,-rpath-link=/home/Dev/android/out/target/product/generic/obj/lib -L/home/Dev/android/out/target/product/generic/obj/lib -nostdlib $PREBUILT/lib/gcc/arm-eabi/4.4.0/crtbegin.o $PREBUILT/lib/gcc/arm-eabi/4.4.0/crtend.o -lc -lm -ldl"
解释一下,PREBUILT为我的android编译器路径,我使用的是android源码树下的tool-chian。configure命令中除了目录可能不一样外,其他的应该不需要做改动。
第四步:将临时目录中的ffmpeg-android下的*.mk拷贝到android源码树的external/ffmpeg目录下。这样就完成了移植。(这一步中,可能需要做修改,我将需要修改的文件打了个包,放在附件中)
第五步:在android目录下make libavutil libavcodec libavformat libswscale。
注:我已经基于最新的ffmpeg(0.6版本-git-6157eab)做的改动上传了。你只需要将附件解压,并替换源ffmpeg中相应的文件,即可直接执行第五步。
分享到:
相关推荐
总结起来,FFmpeg for Android 的集成主要包括源码编译、库文件拷贝、JNI 接口定义以及 API 调用四个主要步骤。这个过程可能需要一定的 C/C++ 和 Android NDK 开发经验,但一旦完成,就能为 Android 应用带来强大的...
本项目是基于网上高手编译优化的FFmpeg for Android源码,它已经适应了Android环境,并且可以直接在Eclipse中导入,无需NDK编译步骤,简化了开发流程。 FFmpeg 的核心组件包括: 1. Libavcodec:这是FFmpeg的编码库...
资源文件为FFmpeg编译的Android平台动态库(so库),FFmpeg版本是3.4.2,支持架构:arm(armv7-a)、arm64、x86、x86_64。 库基本未裁减,若需要自己编译或裁减FFmpeg,可参看此脚本:...
资源文件为FFmpeg编译的Android平台静态库(.a库),FFmpeg版本是3.4.2,支持架构:arm(armv7-a)、arm64、x86、x86_64。 库基本未裁减,若需要自己编译或裁减FFmpeg,可参看此脚本:...
FFmpeg For Android (三) 移植main函数到安卓上执行ffmpeg命令 完整源码 执行在安卓上执行ffmpeg命令, 示范了音频剪切和视频格式转换 有了它 你可以做很多有趣的app
总的来说,"ffmpeg for android"是一个涉及多媒体处理、Android原生开发和跨平台编译等多个领域的复杂技术话题,需要开发者具备一定的音视频处理知识、NDK编程经验以及对Android系统内核的理解。
FFmpeg for Android Introduction ======================================================= FFmpeg for Android is a set of Android makefiles which enable configuration and building FFmpeg library under ...
标题"ffmpeg for Android编译好的库"表明这是已经针对Android系统编译完成的FFmpeg库,可以直接用于Android应用程序的开发,免去了开发者自行编译的复杂过程。这通常涉及到交叉编译,因为需要将适用于Linux环境的...
标题中的“ffmpeg for Android包含头文件和编译好的so库 可直接使用”表明,这个压缩包是一个预配置的FFmpeg版本,专门为Android平台定制,包含了开发者进行音视频处理所需的所有必要组件。头文件用于编译时的链接,...
总结起来,编译FFmpeg for Android涉及到多个环节,包括获取源代码、配置编译环境、执行编译、整合到Android项目以及编写JNI接口。这个过程需要对Android原生开发有一定的了解,同时也需要耐心和细致的工作态度。...
综上所述,"ubuntu下 编译 ffmpeg for Android armv7-a armv8-a"涉及到的知识点包括Ubuntu环境、FFmpeg项目、Android架构、交叉编译、NDK、配置脚本以及硬件加速等。通过这样的编译过程,我们可以创建针对Android...
在这个“4.0.2的编译过的ffmpeg全款so for Android”压缩包中,包含的是预编译的动态链接库(.so文件),这些是FFmpeg库在Android上的二进制形式。动态链接库是Android应用可以直接调用的本地代码,它们负责执行底层...
在Android 4.4.4版本上使用FFmpeg,需要对FFmpeg库进行编译和集成,以便在Android应用中调用其功能。 FFmpeg的核心组成部分包括: 1. Libavformat:负责多媒体容器格式的解析与封装,如MP4、FLV、MKV等。 2. ...
一个简单的FFMPEG示例程序源代码,可直接编译运行在Arm Android设备上。 详细请阅http://blog.csdn.net/u013007470/article/details/53821264
在Linux环境下编译FFmpeg for Android,我们需要考虑多个因素以确保其在Android设备上运行良好。"enable --freetype"这一设置是关键步骤之一,因为FreeType是一个高质量的字体渲染库,它允许FFmpeg支持各种字体和...
FFmpeg for Android是一款强大的多媒体处理工具,它在Android平台上提供了音视频编码、解码、转换、流媒体处理等功能。这个"ffmpeg4android_demo_studio_322_02.zip"压缩包包含了官方提供的示例项目,适用于Android ...
在Android项目中使用FFmpeg,首先需要获取FFmpeg源码,并进行定制编译,以适应Android的不同架构(armeabi, armeabi-v7a, arm64-v8a, x86, x86_64)。编译过程中需要添加对x264、x265和xfade的支持。这通常涉及到...
综上所述,这个 FFmpeg 6.0 for Android 包含了对 V4L2 视频采集和 PulseAudio 音频采集的支持,使用 NDK25C 进行编译,专为 ARMv7 架构设计。它为 Android 开发者提供了强大的多媒体处理能力,特别是对于那些需要...