FFmpeg Android(demo);移植FFmpeg到Android平台,编译为.so文件(2)

FFmpeg源码- https://github.com/FFmpeg/FFmpeg
FFmpeg各个版本的Releases- http://ffmpeg.org/download.html#releases
【FFmpeg 3.x API应用一】视频解码- https://blog.csdn.net/shaosunrise/article/details/79316422
Code samples about FFmpeg API basic usage- https://github.com/lmshao/FFmpeg-Basic
this is port of ffmpeg for android- https://github.com/havlenapetr/FFMpeg
a system for building custom ffmpeg binaries for Android- https://github.com/guardianproject/android-ffmpeg
Android Videokit - basic FFMPEG+X264 build for Android- https://github.com/halfninja/android-ffmpeg-x264

最简单的基于FFmpeg的视频解码器- https://github.com/leixiaohua1020/simplest_ffmpeg_mobile
利用FFmpeg视频录制微信小视频与其压缩处理- https://github.com/mabeijianxi/small-video-record  
Android Studio编译FFmpeg库并移植- https://pan.baidu.com/s/1eRVON4m
实现了一款基于FFMpeg的支持多路视频的实时流媒体播放器:https://github.com/huweijian5/RtspPlayer

A simaple video player with FFmpeg and SDL2.0- https://github.com/brookicv/FSplayer

ffmpeg+fd_aac+x264+sdl.

> 基于FFmpeg的视频解码器,基于FFmpeg的推流器,基于FFmpeg的Android 视频转码器,基于FFmpeg的Android 自带播放器;  基于安卓自带多媒体框架OpenCore的视频播放器,SDL Android HelloWorld;

-- FFmpeg库打包的方法。Android平台下FFmpeg类库一共包含下面几个:
 1.libavformat-56.so;
 2.libavcodec-56.so;
 3.libavfilter-5.so;
 4.libavdevice-56.so;
 5.libavutil-54.so;
 6.libpostproc-53.so;
 7.libswresample-1.so;
 8.libswscale-3.so;
或打包成一个libffmpeg.so

> ffmpeg编译包,可以下载直接使用
complie ffmpeg to use in android(CMake+CMakeLists.txt)- https://github.com/voiddog/FFmpeg-Android
FFmpeg-release-3.4(so下载地址在文末)- https://blog.csdn.net/dnybz/article/details/78520859
CMake编译FFmpeg(v3.3)并使用- https://github.com/WangShuo1143368701/FFmpegAndroid
FFmpeg4Android(v3.2.5)- https://github.com/mabeijianxi/FFmpeg4Android
FFmpeg Android so编译以及普通调用- https://download.csdn.net/download/t1_one/9550614

android学习例子(如ffmpeg)- https://github.com/eastmoon1117/StudyTestCase
使用独立工具链交叉编译可在android系统中运行的so包CrossCompileForAndroid- https://github.com/MingHuang1024/CrossCompileForAndroid
ffmpeg编译的android可用的so文件,多个版本- http://download.csdn.net/download/cdsun/9410696
 --ffmpeg编译android的so库- http://blog.csdn.net/u013654125/article/details/73527778
ffmpeg-3.0版本,则可去- https://github.com/zhu12345618/ffmpeg-android

> Window 平台下编译FFmpeg
  -- Cygwin编译FFmpeg
Window 平台 Cygwin编译FFmpeg Android .so文件编译- https://blog.csdn.net/t1_one/article/details/51684343
Windows下使用Cygwin编译FFmpeg注意事项.- https://blog.csdn.net/FearlessChen/article/details/51026901
  -- minGw编译ffmpeg
window7 android-ndk-r10d 编译ffmpeg(minGw编译) 3.4- https://blog.csdn.net/dnybz/article/details/78520859
windows环境下android studio 2.3 NDK编译FFmpeg(MinGW编译)- https://blog.csdn.net/gongxp123456/article/details/60479637
FFmpeg第一篇之Android平台上的so编译- http://blog.csdn.net/Yu_aishui/article/details/51121100
  -- Android NDK系列(二)-AS使用CmakeLists生成so文件
Android开发学习之路--Android Studio cmake编译ffmpeg- https://blog.csdn.net/eastmoon502136/article/details/52806640
AS使用javah生成so文件- https://blog.csdn.net/sw5131899/article/details/77183352
windows下编译最新版ffmpeg3.3-android,并通过CMake方式移植到Android studio2.3中- https://blog.csdn.net/king1425/article/details/70338674

> MAC平台下编译FFmpeg
手把手图文并茂教你用Android Studio编译FFmpeg库并移植- https://blog.csdn.net/hejjunlin/article/details/52661331
FFmpeg-3.3.1移植到Android平台- https://www.jianshu.com/p/b53369d6905f

> Linux下编译FFmpeg
FFmpeg在Linux下安装编译过程- https://blog.csdn.net/hejjunlin/article/details/52402759
Ubuntu FFmpeg的Android平台移植—编译篇- https://blog.csdn.net/tanzhongqiao/article/details/50845271
Ubuntu14.04编译Android FFmpeg详细教程- http://blog.csdn.net/poison_h/article/details/51146754
Windows下安装VM和Linux,请见- http://blog.csdn.net/shareus/article/details/78043212
Window下使用虚拟机Ubuntu编译Ffmpeg(编译的只有arm平台下的)- http://blog.csdn.net/u012808234/article/details/52066079
ffmpeg编译android的so库- http://blog.csdn.net/u013654125/article/details/73527778
Linux 编译Android平台FFMPEG- http://blog.csdn.net/itheimach/article/details/53868575
使用NDK编译FFmpeg到Android下使用- https://www.jianshu.com/p/228f38e9aa9c
Linux执行.sh文件,提示No such file or directory的问题的解决方法- http://blog.csdn.net/huangjin0507/article/details/45044115
完成FFmepg的移植,编译ffmpeg4Android- http://blog.csdn.net/quan648997767/article/details/70172166

libavutil       55.78.100
libavcodec      57.107.100
libavformat     57.83.100
libavdevice     57.10.100
libavfilter     6.107.100
libavresample   3.7.0
libswscale      4.8.100
libswresample   2.9.100
libpostproc     54.7.100

压缩tar zip文件:
tar czvf ffmpeg_3.4.1.tar ffmpeg
zip -r ffmpeg_3.4.1.zip ./ffmpeg

1.安装yasm
sudo apt-get install yasm
sudo apt-get install git

2.下载FFmpeg
git clone https://git.ffmpeg.org/ffmpeg.git

3.配置NDK环境
解压tar包:tar -xzvf  **.tar.gz
解压zip包:unzip *.zip
/home/desaco/Desktop/source_compile/envir_jdk_ndk_sdk/android-ndk-r13
/home/desaco/Desktop/source_compile/envir_jdk_ndk_sdk/android-sdk-linux
/home/desaco/Desktop/source_compile/envir_jdk_ndk_sdk/jdk1.8.0_144

vim ~/.bashrc(sudo gedit /.bashrc)
export NDK="/home/desaco/Desktop/source_compile/envir_jdk_ndk_sdk/android-ndk-r13"
export PATH=$NDK:$PATH
source ~/.bashrc

4.新建build_shell.sh文件,并写入脚本内容
touch build_shell.sh
sudo gedit /build_shell.sh(将脚本写入build_shell.sh文件中,直接打开时没有内容的)
重新打开需要命令sudo gedit /build_shell.sh,才能看到文件里有内容
#!/bin/bash
make clean
export NDK=/home/desaco/Desktop/source_compile/envir_jdk_ndk_sdk/android-ndk-r13
export SYSROOT=$NDK/platforms/android-9/arch-arm/
export TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64
export CPU=arm
export PREFIX=$(pwd)/android/$CPU
export ADDI_CFLAGS="-marm"
./configure --target-os=linux \
--prefix=$PREFIX --arch=arm \
--disable-doc \
--enable-shared \
--disable-static \
--disable-yasm \
--disable-symver \
--enable-gpl \
--disable-ffmpeg \
--disable-ffplay \
--disable-ffprobe \
--disable-ffserver \
--disable-doc \
--disable-symver \
--cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi- \
--enable-cross-compile \
--sysroot=$SYSROOT \
--extra-cflags="-Os -fpic $ADDI_CFLAGS" \
--extra-ldflags="$ADDI_LDFLAGS" \
$ADDITIONAL_CONFIGURE_FLAG
make clean
make
make install

5.修改FFmpeg执行权限和ndk执行权限
shell脚本执行,会关联许多文件,需要文件有可以执行的权限: 
chmod 777 -R ffmpeg;
chmod 777 -R ndk

6.修改配置文件,FFmpeg根目录下的configure文件 sudo gedit /configure
#SLIBNAME_WITH_MAJOR='$(SLIBNAME).$(LIBMAJOR)'
#LIB_INSTALL_EXTRA_CMD='
(RANLIB) "$(LIBDIR)/$(LIBNAME)"' #SLIB_INSTALL_NAME='$(SLIBNAME_WITH_VERSION)' #SLIB_INSTALL_LINKS='$(SLIBNAME_WITH_MAJOR) $(SLIBNAME)'  将以上几行注释,修改成下面几行-> #jmodified SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME)-$(LIBMAJOR)$(SLIBSUF)' LIB_INSTALL_EXTRA_CMD='
(RANLIB) "$(LIBDIR)/$(LIBNAME)"' #SLIB_INSTALL_NAME='$(SLIBNAME_WITH_VERSION)' #SLIB_INSTALL_LINKS='$(SLIBNAME_WITH_MAJOR) $(SLIBNAME)'  将以上几行注释,修改成下面几行-> #jmodified SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME)-$(LIBMAJOR)$(SLIBSUF)' LIB_INSTALL_EXTRA_CMD='
(RANLIB)"$(LIBDIR)/$(LIBNAME)"'
SLIB_INSTALL_NAME='$(SLIBNAME_WITH_MAJOR)'
SLIB_INSTALL_LINKS='$(SLIBNAME)'

7.执行shell脚本
chmod 777 build_shell.sh
./build_shell.sh

-- Linux编译还是不行,改了格式还是不行?
ffmpeg build_ff_android.sh编译出现No such file or directory错误:原因:在windows中写好shell脚本测试正常,但是上传到 Linux 上以脚本方式运行命令时提示No such file or directory错误,那么一般是文件格式是dos格式的缘故,改成unix 格式即可。
【解决办法一】:
重新设置下文件格式(在命令模式下):sudo vim build_ff_android.sh
:set ff=unix  
保存退出:
:wq  
 再执行,就可以了。

【解决方法二】
如果linux系统已安装了dos2unix服务,可以直接执行:
dos2unix {filename}
apt install dos2nuix
dos2unix build_ff_android.sh
这样就将dos格式的文件转换为linux平台下的文件。

sudo apt-get install tofrodos
实际上它安装了两个工具:todos(相当于unix2dos),和fromdos(相当于dos2unix)。
dos2unix build_ff_android.sh

sudo chmod +x build_ff_android.sh
./build_ff_android.sh

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值