欠揍的ffmpeg,调试android里的ffmpeg (1)
2019独角兽企业重金招聘Python工程师标准>>>
目标问题
对于jpeg的编码为什么不用libjpeg而是用mpeg(没错就是这电影老古董格式)里代码?
其实发现就连wmv等等一些平时用不着的破东西,都是和mpeg老古董共用一套代码。jpeg和mpeg没什么关系吧?overhead不大吗?
为什么mjpeg(就是连续的jpeg)编码输出时,编码第N+1副图时才真正的输出第N幅图的jpeg编码结果?
每得到一副原图输入数据,那么内存就似乎被copy到新内存,然后废弃,巨大的图片的时候,这种copy很浪费CPU,如何让他不要copy而是直接用原始内存。反正一幅幅图来也不着急,干嘛要copy 呢。
先编一个android里用的ffmpeg命令行,要debug版的,关键是configure时加上
--enable-debug --disable-stripping
例如:
从NDK里准备一个标准的gcc tool chain以便后面的跨平台编译。
echo ---------------make standard GCC Tool Chain from Android NDK--------------------
ls -d ./std_toolchain && { echo ./std_toolchain already exist; exit 0; }printenv ANDROID_NDK_ROOT > /dev/null || { echo please export ANDROID_NDK_ROOT=root_dir_of_your_android_ndk; exit 1; }PLATFORM=$(basename $(ls -d $ANDROID_NDK_ROOT/platforms/android-8)); test -z $PLATFORM && exit 1
TOOLCHAIN=$(basename $(ls -d $ANDROID_NDK_ROOT/toolchains/arm-linux-androideabi-[4-5].* | tail -n 1)); test -z $TOOLCHAIN && exit 1
WORK_SYSTEM=$(basename $(ls -d $ANDROID_NDK_ROOT/toolchains/arm-linux-androideabi-[4-5].*/prebuilt/* | tail -n 1)); test -z $WORK_SYSTEM && exit 1
$ANDROID_NDK_ROOT/build/tools/make-standalone-toolchain.sh --install-dir=./std_toolchain --platform=$PLATFORM --toolchain=$TOOLCHAIN --system=$WORK_SYSTEM --arch=arm --verboseecho ""; echo ok; echo ""export PATH="$PWD/std_toolchain/bin:$PATH"
export CC=arm-linux-androideabi-gcc
然后到ffmpeg的源码下执行configure
./configure --enable-cross-compile --cross-prefix=arm-linux-androideabi- --target-os=linux \--arch=armv7 --cpu=armv7-a \--disable-doc --disable-ffplay --disable-ffprobe --disable-ffserver --disable-symver --enable-debug --disable-stripping --disable-everything \--enable-static \--enable-protocol=pipe \--enable-filter=scale --enable-filter=crop --enable-filter=transpose \--enable-demuxer=rawvideo --enable-decoder=rawvideo \--enable-muxer=image2 --enable-muxer=image2pipe --enable-muxer=mjpeg --enable-encoder=mjpeg
只是一个例子而已,只留下了rawvideo输入格式和mjpeg输出格式的支持。
然后make, 得到ffmpeg。
传到android的/data/local/tmp/上。
(一些更具体的准备性质的步骤参照Android native debug: 手动使用gdbserver远程调试C代码)
然后,开始启动gdbserver,
待续。
转载于:https://my.oschina.net/osexp2003/blog/469976
欠揍的ffmpeg,调试android里的ffmpeg (1)相关推荐
- android平台移植ffmpeg 播放器
引用:http://blog.csdn.net/ouyangtianhan/article/details/7943543 IT行业是一个踩在巨人肩膀上前进的行业,否则做的事情不一定有意义,所以我也是 ...
- 解决Android平台移植ffmpeg的一揽子问题
原文地址: http://blog.csdn.net/moruite/article/details/6305944 IT行业是一个踩在巨人肩膀上前进的行业,否则做的事情不一定有意义,所以我也是基于h ...
- 解决Android平台移植ffmpeg的一些问题
转自 http://blog.csdn.net/moruite/article/details/6305944 IT行业是一个踩在巨人肩膀上前进的行业,否则做的事情不一定有意义,所以我也是基于havl ...
- 【Android】解决Android平台移植ffmpeg的一揽子问题
IT行业是一个踩在巨人肩膀上前进的行业,否则做的事情不一定有意义,所以我也是基于havlenapetr移植的ffmpeg基础上做了些改进,他做的主要贡献有: 1. 移植了ffmpeg并将与媒体相关的结 ...
- 【Android FFMPEG 开发】Android 中执行 FFMPEG 指令 ( 集成 FFmpegAndroid 框架 )
文章目录 一.推荐开源项目 二.Android 中执行 FFMPEG 指令 1.导入依赖 2.Java 代码编写 3.使用时的代码示例 三.博客资源 一.推荐开源项目 最近需要在 Android 中进 ...
- android ffmpeg 优点_在Android中使用FFmpeg(android studio环境)
1.首先我们需要一个已经编译好的libffmpeg.so文件.(怎么编译是个大坑,可以参考windows环境下编译android中使用的FFmpeg,也可以用网上下载的现成的,本文相关的github项 ...
- FFmpeg的Android平台移植—编译篇(验证可用)
摘要:本文主要介绍将FFmpeg音视频编解码库移植到Android平台上的编译和基本测试过程. 环境准备: Ubuntu12.04 TLS android-ndk-r9d-linux-x86_64.t ...
- 基于NDK编译Android平台的FFmpeg动态库
需求 FFmpeg在Linux平台(如Ubuntu)上的支持已经比较完善了,如前述文章介绍 http://blog.csdn.net/ericbar/article/details/73702061, ...
- Android交叉编译OpenCV+FFmpeg+x264的艰难历程
前言 如果你没有兴趣看完本文,只想获得可编译的代码或编译后的产物,可以直接点击下面的链接,跟随步骤编译代码或直接下载我编译好的产物 注:编译顺序要按照 x264 -> FFmpeg -> ...
最新文章
- python ipaddr_python之IP地址或IP段处理模块-ipaddr
- python多种推导式的实现
- 超声换能器的原理及设计_超声波发生器、变幅杆、焊头的匹配介绍
- 谷歌联合 Adobe 发布 Noto 字体【免费下载】
- 在Javascript中闭包(Closure)
- RecycleView添加setEmptyView
- 树莓派安装摄像头、耳机、话筒
- 创业码农被公司套路最惨的一次经历
- halcon学习之图像增强、平滑和去噪
- 手把手教你搭建FastDFS集群(中)
- 金融直播三大常用场景一文解析
- linux下查看mysql配置文件位置
- 手机连接USB通过宽带免费上网
- 基于FPGA的遥控数字时钟设计
- 给网页的标签头部添加小图标方法
- POSIX正则表达式
- PowerApps 中管理本地数据网关
- C#:实现康托尔集cantor set算法 (附完整源码)
- 第五章:B视频Include包含文件
- FireDebug使用