热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

FFmpeg源码-https:github.comFFmpegFFmpegFFmpeg各个版本的Releases-http:ffmpeg.orgdownload.html#rele

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


推荐阅读
  • CF:3D City Model(小思维)问题解析和代码实现
    本文通过解析CF:3D City Model问题,介绍了问题的背景和要求,并给出了相应的代码实现。该问题涉及到在一个矩形的网格上建造城市的情景,每个网格单元可以作为建筑的基础,建筑由多个立方体叠加而成。文章详细讲解了问题的解决思路,并给出了相应的代码实现供读者参考。 ... [详细]
  • 云原生边缘计算之KubeEdge简介及功能特点
    本文介绍了云原生边缘计算中的KubeEdge系统,该系统是一个开源系统,用于将容器化应用程序编排功能扩展到Edge的主机。它基于Kubernetes构建,并为网络应用程序提供基础架构支持。同时,KubeEdge具有离线模式、基于Kubernetes的节点、群集、应用程序和设备管理、资源优化等特点。此外,KubeEdge还支持跨平台工作,在私有、公共和混合云中都可以运行。同时,KubeEdge还提供数据管理和数据分析管道引擎的支持。最后,本文还介绍了KubeEdge系统生成证书的方法。 ... [详细]
  • 本文介绍了设计师伊振华受邀参与沈阳市智慧城市运行管理中心项目的整体设计,并以数字赋能和创新驱动高质量发展的理念,建设了集成、智慧、高效的一体化城市综合管理平台,促进了城市的数字化转型。该中心被称为当代城市的智能心脏,为沈阳市的智慧城市建设做出了重要贡献。 ... [详细]
  • Android中高级面试必知必会,积累总结
    本文介绍了Android中高级面试的必知必会内容,并总结了相关经验。文章指出,如今的Android市场对开发人员的要求更高,需要更专业的人才。同时,文章还给出了针对Android岗位的职责和要求,并提供了简历突出的建议。 ... [详细]
  • 如何用UE4制作2D游戏文档——计算篇
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了如何用UE4制作2D游戏文档——计算篇相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 本文介绍了Hyperledger Fabric外部链码构建与运行的相关知识,包括在Hyperledger Fabric 2.0版本之前链码构建和运行的困难性,外部构建模式的实现原理以及外部构建和运行API的使用方法。通过本文的介绍,读者可以了解到如何利用外部构建和运行的方式来实现链码的构建和运行,并且不再受限于特定的语言和部署环境。 ... [详细]
  • 本文介绍了作者在开发过程中遇到的问题,即播放框架内容安全策略设置不起作用的错误。作者通过使用编译时依赖注入的方式解决了这个问题,并分享了解决方案。文章详细描述了问题的出现情况、错误输出内容以及解决方案的具体步骤。如果你也遇到了类似的问题,本文可能对你有一定的参考价值。 ... [详细]
  • imx6ull开发板驱动MT7601U无线网卡的方法和步骤详解
    本文详细介绍了在imx6ull开发板上驱动MT7601U无线网卡的方法和步骤。首先介绍了开发环境和硬件平台,然后说明了MT7601U驱动已经集成在linux内核的linux-4.x.x/drivers/net/wireless/mediatek/mt7601u文件中。接着介绍了移植mt7601u驱动的过程,包括编译内核和配置设备驱动。最后,列举了关键词和相关信息供读者参考。 ... [详细]
  • flowable工作流 流程变量_信也科技工作流平台的技术实践
    1背景随着公司业务发展及内部业务流程诉求的增长,目前信息化系统不能够很好满足期望,主要体现如下:目前OA流程引擎无法满足企业特定业务流程需求,且移动端体 ... [详细]
  • Go Cobra命令行工具入门教程
    本文介绍了Go语言实现的命令行工具Cobra的基本概念、安装方法和入门实践。Cobra被广泛应用于各种项目中,如Kubernetes、Hugo和Github CLI等。通过使用Cobra,我们可以快速创建命令行工具,适用于写测试脚本和各种服务的Admin CLI。文章还通过一个简单的demo演示了Cobra的使用方法。 ... [详细]
  • 本文介绍了在CentOS上安装Python2.7.2的详细步骤,包括下载、解压、编译和安装等操作。同时提供了一些注意事项,以及测试安装是否成功的方法。 ... [详细]
  • 本文讨论了如何在codeigniter中识别来自angularjs的请求,并提供了两种方法的代码示例。作者尝试了$this->input->is_ajax_request()和自定义函数is_ajax(),但都没有成功。最后,作者展示了一个ajax请求的示例代码。 ... [详细]
  • 微信开放外链的第二阶段:腾讯和阿里巴巴的博弈
    2021年11月30日,微信开始进行“开放外链”的第二阶段,允许在微信个人会话中打开外部链接和在微信群中打开电商链接。虽然这是腾讯和阿里巴巴都能接受的阶段性结果,但双方都不会太满意。接下来几个月,腾讯和阿里将展开复杂的博弈,我们作为外人很难看清全过程。工信部从未要求腾讯无条件开放微信API,本次开放的也只是普通的HTTP链接。 ... [详细]
  • 树莓派语音控制的配置方法和步骤
    本文介绍了在树莓派上实现语音控制的配置方法和步骤。首先感谢博主Eoman的帮助,文章参考了他的内容。树莓派的配置需要通过sudo raspi-config进行,然后使用Eoman的控制方法,即安装wiringPi库并编写控制引脚的脚本。具体的安装步骤和脚本编写方法在文章中详细介绍。 ... [详细]
  • 本文介绍了在Mac上安装Xamarin并使用Windows上的VS开发iOS app的方法,包括所需的安装环境和软件,以及使用Xamarin.iOS进行开发的步骤。通过这种方法,即使没有Mac或者安装苹果系统,程序员们也能轻松开发iOS app。 ... [详细]
author-avatar
松恋崖
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有