最近花了一天时间将ffmpeg/tools/build_stagefright执行成功,主要是交叉编译所需要的各种动态库的支持没链接上,导致各种报错,基本上网络上问到的问题我都碰到了,特此记录下来. 编译环境:Ubuntu 14.04 + Android NDK + FFmpeg源码. 第一步:将ffmpeg/tools/build_stagefright移动到ffmpeg下面,修改执行权限. chmod u+x build_stagefright 第二步:打开build_stagefright…
环境 macOS 10.15.4    NDK 21.3.6528147   ffmpeg 4.2.3 1.执行sudo xcodebuild -license,防止编译的时候找不到一些文件报错 2.下载ffmpeg(4.2.3),解压后进入主目录,修改configure文件,找到 SLIBNAME_WITH_MAJOR='$(SLIBNAME).$(LIBMAJOR)' LIB_INSTALL_EXTRA_CMD='$$(RANLIB)"$(LIBDIR)/$(LIBNAME)"'…
初始化硬解码上下文 目录 初始化硬解码上下文 创建解码数据缓冲区 创建IDirectXVideoDecoder视频解码器 设置硬解码上下文 解码回调函数 创建解码数据缓冲区 这一步为了得到 LPDIRECT3DSURFACE9* 实例 m_pSurface,就是之前说过的那个数组. // m_surfaceNums 为希望创建的缓冲区个数,单路视频一个就够了,太多可能显存不够用 m_pSurface = (LPDIRECT3DSURFACE9*)av_mallocz(m_surfaceNums…
转载自http://www.apkbus.com/forum.php?mod=viewthread&tid=244752&extra=&_dsign=0b699c42 在此之前,相信大家都已经对Android API所提供的布局方式非常熟悉了.也许在接触Android的时候都有过这样的想法,如果可以按照百分比的方式进行界面布局,这样适配各种屏幕就简单多了吧!!以前的一个小梦想,现在终于得以实现,谷歌正式提供百分比布局支持库(percent-support-lib). <ign…
Android的布局支持百分比的设置进行开发,来学习如何去实现它,不过看起来会像网页的设置,比如宽度的设置属性是`layout_widthPercent`.在此之前,我们一般都会设置Linearlayout的weight权重来实现布局间的比例大小. Percent support Library提供了两个新的类: 1.PercentRelativeLayout 2.PercentFrameLayout 创建新项目 创建一个新的项目来测试,修改`build.gradle`,需要引入以下库 `app…
目录 前言 名词解释 代码实现逻辑 前言 关于视频软解码的资料网上比较多了,但是关于硬解可供参考的资料非常之有限,虽然总得来说软解和硬解的基本逻辑一样,但是实现细节上的差别还是比较多的.虽然目前功能已实现,但是理解不到位的地方还是有的,文中我会抛出来,希望大神们不吝赐教. 上图大致说明了软解和硬解的流程,其中红色箭头表示需要在系统内存与显存之前进行IO,比较费时. 名词解释 FFmpeg:通俗理解就是一套包含视音频编解码.采集.转码及处理等功能的开源库,源码由C语言编写. Dxva2:就是Dir…
FFmpeg是很好用的一个音视频库,功能强大,但是用起来并不是很方便.之前一直不想用FFmpeg,因为感觉编译太麻烦,但是到了不得不用的时候了,没办法,参考了网上大神的方法,在这里自己也记录一下方便以后再次查看. 一.环境 Ubuntu14.04 二.NDK环境配置 NDK下载链接:https://developer.android.google.cn/ndk/downloads/index.html 下载完后解压到任意路径即可,然后Alt+T打开终端执行以下命令,其中NDK_HOME的值改为你…
1.起因: 手上有一个用到了boost的asio库和thread库的工程要编译到手机上(Android版本和ios版本),本文只介绍如何编译到Android版本,ios版本之后再介绍,也许就不介绍了(注:因为mac下官方有教程如何编译) 2.准备工作 2.1 下载boost库,我这里用到的是1.58.0 2.2 下载NDK(注:Google官方地址,需要FQ),根据情况自己选择下载版本,我这里用的是android-ndk-r10d-windows-x86_64.exe 2.3 安装visual…
Android中提供了五种布局,其中用的最多的就是:LinearLayout, RelativeLayout 和 FrameLayout这三种布局,在对某一界面进行布局时最先想到也是通过这三种来布局的,不过当某一界面过于复杂时,往往会有多层嵌套,可能嵌套层数过深超过5层,比如,当我们有一个需求是这样的:界面中的一个按钮的长度需要是屏幕宽度的一半,而且需要在任何屏幕下都是屏幕宽度的一半,这个需求我们往往想到的就是用LinearLayout的weightSum属性和child的layout_weig…
解码及显示 目录 解码及显示 解码 显示 资源清理 解码 循环读取视频帧 AVPacket packet = { 0 }; while (av_read_frame(m_pFmtCtx, &packet) >= 0) { if (m_videoIndex == packet.stream_index) { Decode(m_pDecoderCtx, &packet); av_packet_unref(&packet); } } // 缓冲中的可能还有数据,所以需要将剩下的数据…