ffmpeg(2.6) rockplayer android 下编译 小记.
最近因为一些需求,开始学习 ffmgeg 在android 上使用.
使用的环境:
1,VMware V8 虚似机 安装的 FedoraV18 系统.(下载地址,请baidu),虚似机,最好有20-30G的空间,ndk解压占用,1.5G android-ndk-r10b
2,android-ndk32-r10b-linux-x86.tar.tar 下载地址(目前 天C 的力量,所以 http://developer.android.com/sdk/index.html 无法打开 ):
http://wear.techbrood.com/tools/sdk/ndk/index.html(据说 sdk是同步的.)
3,ffmpeg-2.6.tar.bz2
下载地址:http://ffmpeg.org/download.html#releases
4,rockplayer_ffmpeg_git_20100418.zip
rockplayer 是什么?
Rockplayer受益于开源项目,也回报开源社区。
1.7.0开始使用的FFmpeg库
包含了取自git master repository的FFmpeg源码、RockPlayer使用的脚本。脚本内含详细的文档。
1.7.0之前使用的FFmpeg库
包含了FFmpeg源码,NDK需要的android.mk。请根据需要注释或放出所需要的变量组,更多说明见zip包里的readme.rockplayer。
- ...
下载地址:http://www.rockplayer.com/download/rockplayer_ffmpeg_git_20100418.zip
5,SSH Secure Shell Client 连接linux .(baidu SSH Secure Shell Client 下载).
感谢:
褐色狸花猫 的文章 <FFmpeg在Android上的移植之第一步>:http://blog.sina.com.cn/s/blog_69a04cf40100x1fr.html
ROMAN10 的文章 <How to Build FFmpeg for Android> :http://www.roman10.net/how-to-build-ffmpeg-for-android/
http://stackoverflow.com/questions/24853599/compiling-ffmpeg-2-3-with-android-ndk-r10
http://www.roman10.net/how-to-build-android-applications-based-on-ffmpeg-by-an-example/
开始:
1,解压 ndk.使用 tar 命令解压 android-ndk32-r10b-linux-x86.tar.tar 包 (tar --help 查看帮助) 解压到指定位置,\
本例中是:/home/android-ndk-r10b .
2,解压 ffmpge,或 rockplayer . (unzip --help)
本例中是:/home/test
3,build ffmpeg 或rockplayer .
3.1 ffmpeg 的 build_andriod_ffmpeg_right.sh 是:
正确sh
#!/bin/bash ######################################################
# FFmpeg builds script for Android+ARM platform
#
# This script is released under term of
# CDDL (http://www.opensource.org/licenses/cddl1)
# Wrote by pinxue (~@gmail.com) from RockPlayer.com
# 2010-8 ~ 2011-4
###################################################### ######################################################
# Usage:
# put this script in top of FFmpeg source tree
# ./build_android
#
# It generates binary for following architectures:
# ARMv6
# ARMv6+VFP
# ARMv7+VFPv3-d16 (Tegra2)
# ARMv7+Neon (Cortex-A8)
#
# Customizing:
# 1. Feel free to change ./configure parameters for more features
# 2. To adapt other ARM variants
# set $CPU and $OPTIMIZE_CFLAGS
# call build_one
###################################################### NDK=/home/android-ndk-r10b
PLATFORM=$NDK/platforms/android-18/arch-arm/
PREBUILT=$NDK/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86 function build_one
{
./configure --target-os=linux \
--prefix=$PREFIX \
--enable-cross-compile \
--extra-libs="-lgcc" \
--arch=arm \
--cc=$PREBUILT/bin/arm-linux-androideabi-gcc \
--cross-prefix=$PREBUILT/bin/arm-linux-androideabi- \
--nm=$PREBUILT/bin/arm-linux-androideabi-nm \
--sysroot=$PLATFORM \
--extra-cflags=" -O3 -fpic -DANDROID -DHAVE_SYS_UIO_H=1 -Dipv6mr_interface=ipv6mr_ifindex -fasm -Wno-psabi -fno-short-enums -fno-strict-aliasing -finline-limit=300 $OPTIMIZE_CFLAGS " \
--disable-shared \
--enable-static \
--extra-ldflags="-Wl,-rpath-link=$PLATFORM/usr/lib -L$PLATFORM/usr/lib -nostdlib -lc -lm -ldl -llog" \
--disable-everything \
--enable-demuxer=mov \
--enable-demuxer=h264 \
--disable-ffplay \
--enable-protocol=file \
--enable-avformat \
--enable-avcodec \
--enable-decoder=rawvideo \
--enable-decoder=mjpeg \
--enable-decoder=h263 \
--enable-decoder=mpeg4 \
--enable-decoder=h264 \
--enable-parser=h264 \
--disable-network \
--enable-zlib \
--disable-avfilter \
--disable-avdevice \
$ADDITIONAL_CONFIGURE_FLAG make clean
make -j4 install
$PREBUILT/bin/arm-linux-androideabi-ar d libavcodec/libavcodec.a inverse.o
$PREBUILT/bin/arm-linux-androideabi-ld -rpath-link=$PLATFORM/usr/lib -L$PLATFORM/usr/lib -soname libffmpeg.so -shared -nostdlib -z noexecstack -Bsymbolic --whole-archive --no-undefined -o $PREFIX/libffmpeg.so libavcodec/libavcodec.a libavformat/libavformat.a libavutil/libavutil.a libswscale/libswscale.a -lc -lm -lz -ldl -llog --warn-common --dynamic-linker=/system/bin/linker $PREBUILT/lib/gcc/arm-linux-androideabi/4.8/libgcc.a
} # arm v6
CPU=armv6
OPTIMIZE_CFLAGS="-marm -march=$CPU"
PREFIX=./android/$CPU
ADDITIONAL_CONFIGURE_FLAG=
build_one #arm v7vfpv3
CPU=armv7-a
OPTIMIZE_CFLAGS="-mfloat-abi=softfp -mfpu=vfpv3-d16 -marm -march=$CPU "
PREFIX=./android/$CPU
ADDITIONAL_CONFIGURE_FLAG=
build_one #arm v7vfp
CPU=armv7-a
OPTIMIZE_CFLAGS="-mfloat-abi=softfp -mfpu=vfp -marm -march=$CPU "
PREFIX=./android/$CPU-vfp
ADDITIONAL_CONFIGURE_FLAG=
build_one #arm v7n
CPU=armv7-a
OPTIMIZE_CFLAGS="-mfloat-abi=softfp -mfpu=neon -marm -march=$CPU -mtune=cortex-a8"
PREFIX=./android/$CPU-v7n
ADDITIONAL_CONFIGURE_FLAG=--enable-neon
build_one #arm v6+vfp
CPU=armv6
OPTIMIZE_CFLAGS="-DCMP_HAVE_VFP -mfloat-abi=softfp -mfpu=vfp -marm -march=$CPU"
PREFIX=./android/${CPU}_vfp
ADDITIONAL_CONFIGURE_FLAG=
build_one
rockplayer 的 build_andriod_rockplayer_right.sh 是:
正确sh
#!/bin/bash ######################################################
# FFmpeg builds script for Android+ARM platform
#
# This script is released under term of
# CDDL (http://www.opensource.org/licenses/cddl1)
# Wrote by pinxue (~@gmail.com) from RockPlayer.com
# 2010-8 ~ 2011-4
###################################################### ######################################################
# Usage:
# put this script in top of FFmpeg source tree
# ./build_android
#
# It generates binary for following architectures:
# ARMv6
# ARMv6+VFP
# ARMv7+VFPv3-d16 (Tegra2)
# ARMv7+Neon (Cortex-A8)
#
# Customizing:
# 1. Feel free to change ./configure parameters for more features
# 2. To adapt other ARM variants
# set $CPU and $OPTIMIZE_CFLAGS
# call build_one
###################################################### NDK=/home/android-ndk-r10b
PLATFORM=$NDK/platforms/android-18/arch-arm/
PREBUILT=$NDK/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86 function build_one_r6
{
./configure \
--disable-shared \
--enable-static \
--enable-gpl \
--enable-version3 \
--enable-nonfree \
--disable-doc \
--disable-ffmpeg \
--disable-ffplay \
--disable-ffprobe \
--disable-ffserver \
--disable-avdevice \
--disable-avfilter \
--disable-postproc \
--enable-small \
--cross-prefix=$PREBUILT/bin/arm-linux-androideabi- \
--enable-cross-compile \
--target-os=linux \
--extra-cflags="-I$PLATFORM/usr/include" \
--extra-ldflags="-L$PLATFORM/usr/lib -nostdlib" \
--arch=arm \
--disable-symver \
--disable-debug \
--disable-stripping \
$ADDITIONAL_CONFIGURE_FLAG
sed -i 's/HAVE_LRINT 0/HAVE_LRINT 1/g' config.h
sed -i 's/HAVE_LRINTF 0/HAVE_LRINTF 1/g' config.h
sed -i 's/HAVE_ROUND 0/HAVE_ROUND 1/g' config.h
sed -i 's/HAVE_ROUNDF 0/HAVE_ROUNDF 1/g' config.h
sed -i 's/HAVE_TRUNC 0/HAVE_TRUNC 1/g' config.h
sed -i 's/HAVE_TRUNCF 0/HAVE_TRUNCF 1/g' config.h
make clean
make -j4 install
$PREBUILT/bin/arm-linux-androideabi-ar d libavcodec/libavcodec.a inverse.o
$PREBUILT/bin/arm-linux-androideabi-ld -rpath-link=$PLATFORM/usr/lib -L$PLATFORM/usr/lib -soname libffmpeg.so -shared -nostdlib -z noexecstack -Bsymbolic --whole-archive --no-undefined -o $PREFIX/libffmpeg.so libavcodec/libavcodec.a libavformat/libavformat.a libavutil/libavutil.a libswscale/libswscale.a -lc -lm -lz -ldl -llog --warn-common --dynamic-linker=/system/bin/linker $PREBUILT/lib/gcc/arm-linux-androideabi/4.8/libgcc.a
}
function build_one_r6_2
{
$PREBUILT/bin/arm-linux-androideabi-ar d libavcodec/libavcodec.a inverse.o
$PREBUILT/bin/arm-linux-androideabi-ld -rpath-link=$PLATFORM/usr/lib -L$PLATFORM/usr/lib -soname libffmpeg.so -shared -nostdlib -z noexecstack -Bsymbolic --whole-archive --no-undefined -o $PREFIX/libffmpeg.so libavcodec/libavcodec.a libavformat/libavformat.a libavutil/libavutil.a libswscale/libswscale.a -lc -lm -lz -ldl -llog --warn-common --dynamic-linker=/system/bin/linker $PREBUILT/lib/gcc/arm-linux-androideabi/4.8/libgcc.a
} #arm armv6
CPU=armv6-a
OPTIMIZE_CFLAGS="-marm -march=$CPU"
PREFIX=./android/$CPU
ADDITIONAL_CONFIGURE_FLAG=
build_one_r6 #arm v7vfpv3
CPU=armv7-a
OPTIMIZE_CFLAGS="-mfloat-abi=softfp -mfpu=vfpv3-d16 -marm -march=$CPU "
PREFIX=./android/$CPU-vfpv3
ADDITIONAL_CONFIGURE_FLAG=
build_one_r6 #arm v7vfp
CPU=armv7-a
OPTIMIZE_CFLAGS="-mfloat-abi=softfp -mfpu=vfp -marm -march=$CPU "
PREFIX=./android/$CPU-vfp
ADDITIONAL_CONFIGURE_FLAG=
build_one_r6 #arm v7n
CPU=armv7-a
OPTIMIZE_CFLAGS="-mfloat-abi=softfp -mfpu=neon -marm -march=$CPU -mtune=cortex-a8"
PREFIX=./android/$CPU
ADDITIONAL_CONFIGURE_FLAG=--enable-neon
build_one_r6 #arm v6+vfp
CPU=armv6
OPTIMIZE_CFLAGS="-DCMP_HAVE_VFP -mfloat-abi=softfp -mfpu=vfp -marm -march=$CPU"
PREFIX=./android/${CPU}_vfp
ADDITIONAL_CONFIGURE_FLAG=
build_one_r6 #arm v7vfp
#CPU=armv7-a
#OPTIMIZE_CFLAGS="-mfloat-abi=softfp -mfpu=vfp -marm -march=$CPU "
#PREFIX=./android/$CPU-vfp
#ADDITIONAL_CONFIGURE_FLAG=
#build_one
#arm v7n
#CPU=armv7-a
#OPTIMIZE_CFLAGS="-mfloat-abi=softfp -mfpu=neon -marm -march=$CPU -mtune=cortex-a8"
#PREFIX=./android/$CPU
#ADDITIONAL_CONFIGURE_FLAG=--enable-neon
#build_one
#arm v6+vfp
#CPU=armv6
#OPTIMIZE_CFLAGS="-DCMP_HAVE_VFP -mfloat-abi=softfp -mfpu=vfp -marm -march=$CPU"
#PREFIX=./android/${CPU}_vfp
#ADDITIONAL_CONFIGURE_FLAG=
#build_one
将 build_andriod_rockplayer_right.sh 放入 /home/test/rockplayer 目录下.
将 build_andriod_ffmpeg_right.sh 放入 /home/test/ffmpeg-2.6 目录下.
//给执行的权限
[root@localhost ffmpeg-2.6]# chmod 777 build_andriod_ffmpeg_right.sh
//执行
[root@localhost ffmpeg-2.6]# ./build_andriod_ffmpeg_right.sh
经过等待就可以见结果了.
INSTALL libavutil/libavutil.a
INSTALL doc/ffprobe.1
INSTALL doc/ffprobe-all.1
INSTALL doc/ffmpeg-utils.1
INSTALL doc/ffmpeg-scaler.1
INSTALL doc/ffmpeg-resampler.1
INSTALL doc/ffmpeg-codecs.1
INSTALL doc/ffmpeg-bitstream-filters.1
INSTALL doc/ffmpeg-formats.1
INSTALL doc/ffmpeg-protocols.1
INSTALL doc/libavutil.3
INSTALL doc/libswscale.3
INSTALL doc/libswresample.3
INSTALL doc/libavcodec.3
INSTALL doc/libavformat.3
INSTALL doc/ffprobe.1
INSTALL doc/ffprobe-all.1
INSTALL doc/ffmpeg-utils.1
INSTALL doc/ffmpeg-scaler.1
INSTALL doc/ffmpeg-resampler.1
INSTALL doc/ffmpeg-codecs.1
INSTALL doc/ffmpeg-bitstream-filters.1
INSTALL doc/ffmpeg-formats.1
INSTALL doc/ffmpeg-protocols.1
INSTALL doc/libavutil.3
INSTALL doc/libswscale.3
INSTALL doc/libswresample.3
INSTALL doc/libavcodec.3
INSTALL doc/libavformat.3
CP ffprobe
STRIP ffprobe
INSTALL install-progs-yes
INSTALL ffprobe
[root@localhost ffmpeg-2.6]#
编译结果:
在这个目录中"PREFIX=./android/$CPU ".
rockplayer 的so文件,比ffmpeg的so文件小了一半.
可以开始在android 中开整了.....-_-......
说明可能出现的错误:
Q1:PLATFORM=$NDK/platforms/android-18/arch-arm/
选择不同android对应的平台:
Q2:PREBUILT=$NDK/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86
选择可执行的文件:
arm-linux-androideabi-4.8 这个版本要与
function build_one 中或 function build_one_r6 中
最后:
make clean
make -j4 install
$PREBUILT/bin/arm-linux-androideabi-ar d libavcodec/libavcodec.a inverse.o
$PREBUILT/bin/arm-linux-androideabi-ld -rpath-link=$PLATFORM/usr/lib -L$PLATFORM/usr/lib -soname libffmpeg.so -shared -nostdlib -z noexecstack -Bsymbolic --whole-archive --no-undefined -o $PREFIX/libffmpeg.so libavcodec/libavcodec.a libavformat/libavformat.a libavutil/libavutil.a libswscale/libswscale.a -lc -lm -lz -ldl -llog --warn-common --dynamic-linker=/system/bin/linker $PREBUILT/lib/gcc/arm-linux-androideabi/4.8/libgcc.a
}
这个版本相对应.
不然会报
/home/android-ndk-r10b/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86/bin/arm-linux-androideabi-ld: error: cannot open /home/android-ndk-r10b/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86/lib/gcc/arm-linux-androideabi/4.1/libgcc.a: No such file or directory
/home/android-ndk-r10b/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86/bin/arm-linux-androideabi-ld: error: cannot open /home/android-ndk-r10b/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86/lib/gcc/arm-linux-androideabi/4.1/libgcc.a: No such file or directory
libavcodec/error_resilience.c:725: error: undefined reference to '__aeabi_idivmod'
libavcodec/error_resilience.c:1177: error: undefined reference to '__aeabi_idiv'
libavcodec/error_resilience.c:1178: error: undefined reference to '__aeabi_idiv'
libavcodec/error_resilience.c:1179: error: undefined reference to '__aeabi_idiv'
libavcodec/error_resilience.c:1180: error: undefined reference to '__aeabi_idiv'
libavcodec/error_resilience.c:403: error: undefined reference to '__aeabi_idivmod'
./libavutil/mem.h:95: error: undefined reference to '__aeabi_uidiv'
./libavutil/mem.h:95: error: undefined reference to '__aeabi_uidiv'
libavcodec/error_resilience.c:220: error: undefined reference to '__aeabi_uidiv'
libavcodec/error_resilience.c:224: error: undefined reference to '__aeabi_ldivmod'
libavcodec/h263dec.c:634: error: undefined reference to '__aeabi_idivmod'
libavcodec/h264.c:466: error: undefined reference to '__aeabi_idivmod'
libavcodec/h264_ps.c:495: error: undefined reference to '__aeabi_uidiv'
libavcodec/h264_slice.c:1754: error: undefined reference to '__aeabi_uidivmod'
libavcodec/mpeg4videodec.c:2320: error: undefined reference to '__aeabi_ldivmod'
libavcodec/mpeg4videodec.c:2307: error: undefined reference to '__aeabi_ldivmod'
libavcodec/mpeg4videodec.c:2308: error: undefined reference to '__aeabi_ldivmod'
libavformat/dump.c:121: error: undefined reference to '__aeabi_uldivmod'
libavformat/dump.c:123: error: undefined reference to '__aeabi_uldivmod'
libavformat/dump.c:121: error: undefined reference to '__aeabi_uldivmod'
libavformat/dump.c:123: error: undefined reference to '__aeabi_uldivmod'
libavformat/dump.c:93: error: undefined reference to '__aeabi_l2d'
libavformat/dump.c:99: error: undefined reference to '__aeabi_l2d'
libavformat/dump.c:93: error: undefined reference to '__aeabi_l2d'
libavformat/dump.c:99: error: undefined reference to '__aeabi_l2d'
libavformat/mov.c:2517: error: undefined reference to '__aeabi_uidivmod'
libavformat/mov.c:2517: error: undefined reference to '__aeabi_uidivmod'
libavformat/utils.c:2282: error: undefined reference to '__aeabi_l2f'
libavutil/camellia.c:139: error: undefined reference to '__aeabi_llsl'
libavutil/camellia.c:139: error: undefined reference to '__aeabi_llsr'
libavutil/camellia.c:140: error: undefined reference to '__aeabi_llsl'
libavutil/camellia.c:140: error: undefined reference to '__aeabi_llsr'
libavutil/eval.c:211: error: undefined reference to '__aeabi_d2ulz'
libavutil/eval.c:211: error: undefined reference to '__aeabi_ul2d'
libavutil/eval.c:287: error: undefined reference to '__aeabi_d2lz'
libavutil/eval.c:287: error: undefined reference to '__aeabi_d2lz'
libavutil/eval.c:211: error: undefined reference to '__aeabi_d2ulz'
libavutil/eval.c:211: error: undefined reference to '__aeabi_ul2d'
libavutil/eval.c:287: error: undefined reference to '__aeabi_d2lz'
libavutil/eval.c:287: error: undefined reference to '__aeabi_d2lz'
libavutil/timecode.c:64: error: undefined reference to '__aeabi_uidivmod'
libswscale/utils.c:299: error: undefined reference to '__aeabi_llsl'
Q3:gcc is unable to create an executable file.
If gcc is a cross-compiler, use the --enable-cross-compile option.
Only do this if you know what cross compiling means.
C compiler test failed.
sh 中 gcc的路径配置出错.
"--cc=$PREBUILT/bin/arm-linux-androideabi-gcc \"
arm-linux-androideabi-gcc 是 gcc for android apk 里的一个linux可执行文件
winhex arm-linux-androideabi-gcc 这个文件可见:
可参考: hhhbbb 的文章<elf格式分析> :http://blog.csdn.net/hhhbbb/article/details/6855004
Q4:错误error: undefined reference to 'atexit' ,noexecstack: unknown -z option,
unknown --warn-once
$PREBUILT/bin/arm-eabi-ld -rpath-link=$PLATFORM/usr/lib -L$PLATFORM/usr/lib -soname libffmpeg.so -shared -nostdlib -z,noexecstack -Bsymbolic --whole-archive --no-undefined -o $PREFIX/libffmpeg.so libavcodec/libavcodec.a libavformat/libavformat.a libavutil/libavutil.a -lc -lm -lz -ldl -llog --warn-once --dynamic-linker=/system/bin/linker $PREBUILT/lib/gcc/arm-eabi/4.4.0/libgcc.a
"-z,noexecstack" 语法错误
通过 arm-eabi-ld --help可知(可能不同的版本,命令参数不同.)
应是 -z noexecstack
--warn-once 改为 --warn-common
有问题的sh文件:
http://roman10.net/src/build_android_r6.txt
Q5:其它错误信息,怎么查看:
详细的错误信息: ffmpeg/config.log 可以查看
ffmpeg(2.6) rockplayer android 下编译 小记.的更多相关文章
- 【转】Android下编译jni库的二种方法(含示例)
原文网址:http://blog.sina.com.cn/s/blog_3e3fcadd01011384.html 总结如下:两种方法是:1)使用Android源码中的Make系统2)使用NDK(从N ...
- 【转】Android下编译jni库的二种方法(含示例) -- 不错
原文网址:http://blog.sina.com.cn/s/blog_3e3fcadd01011384.html 总结如下:两种方法是:1)使用Android源码中的Make系统2)使用NDK(从N ...
- 【记录一个问题】libtask无法在android下编译通过
源码来自:https://github.com/msteinert/libtask 首先是asm.S无法编译通过. 其次,编译context.c出现这些错误: .//context.c:124:19: ...
- linux下编译ffmpeg 引入外部库x264
Found no assembler Minimum version is nasm-2.13 If you really want to compile without asm, configure ...
- Android 环境下编译FFmpeg
Android 环境下编译FFmpeg 开发环境:Ubuntu 12.04.2 LTS , android-sdk-linux, android-ndk-r8e 一 .X264 编译 1. X2 ...
- 编译Android下可用的FFmpeg+x264
编译Android下可用的FFmpeg+x264 编译x264: 下载最新版的x264 ftp://ftp.videolan.org/pub/videolan/x264/snapshots/ 1.解压 ...
- [原]如何用Android NDK编译FFmpeg
我们知道在Ubuntu下直接编译FFmpeg是很简单的,主要是先执行./configure,接着执行make命令来编译,完了紧接着执行make install执行安装.那么如何使用Android的ND ...
- 手把手图文并茂教你用Android Studio编译FFmpeg库并移植
转载请把头部出处链接和尾部二维码一起转载,本文出自逆流的鱼yuiop:http://blog.csdn.net/hejjunlin/article/details/52661331 之前曾写过一篇&l ...
- 一步步实现windows版ijkplayer系列文章之四——windows下编译ijkplyer版ffmpeg
一步步实现windows版ijkplayer系列文章之一--Windows10平台编译ffmpeg 4.0.2,生成ffplay 一步步实现windows版ijkplayer系列文章之二--Ijkpl ...
随机推荐
- print、sp_helptext的限制与扩展
在SQL中,使用动态SQL是很常见的.有些复杂的计算,或是存储过程,代码很长,中间可能有多次执行SQL语句.而调试拼串的SQL语句却是件痛苦的事,很难看出来运行的语句是什么.所以我会经常使用print ...
- 墙裂推荐一本案例驱动的PhoneGap入门书,早看早收货
清华大学出版社推出的<构建跨平台APP:PhoneGap移动应用实战> 零门槛学APP开发 从无到有 循序渐进 20余个示例APP 3个项目APP 全平台à跨终端à移动开发 完美生命周期: ...
- Qml 写的弹出层控件
QML弹出窗口组件,灯箱效果.动画效果,可拖拽 核心思路:一个mask层,一个最顶层,都用rectangle,禁止事件穿透 使用 Popup { id: popup width: 200; heigh ...
- opencv二值化处理
#include "stdafx.h"//对一张图片进行二值化处理 IplImage *pSrclmg =NULL;//载入的图片IplImage *pDeclmg =NULL;/ ...
- C段渗透+cain嗅探
其实吧这篇文件也是一个大概的了解和思路篇...没什么技术含量,但是你可以你可以从思路中来获得;其他的技术都是靠自己去摸索,我说了半天还是别人的,不如自己直接试试,这样效果比我直接告诉你的更加的深刻.. ...
- 简单介绍一下python Queue中常用的方法
Queue.qsize() 返回队列的大小 Queue.empty() 如果队列为空,返回True,反之False Queue.full() 如果队列满了,返回True,反之FalseQueue.fu ...
- shutil复制粘贴和压缩
shutil复制粘贴和压缩 shutil 高级的文件.文件夹.压缩包处理模块 @1).将文件内容拷贝到另一个文件中 import shutil shutil.copyfileobj(open(&quo ...
- ListView加checkBox可以实现全选等功能
1.效果图 2.LIteView_item布局 <?xml version="1.0" encoding="utf-8"?> <Relativ ...
- 【Network】UDP 大包怎么发? MTU怎么设置?
这里主要用UDP来发送视频,当发送的数据大于1500时分包发送,保证每包小于1500.发送好办,分割后循环发就可以了,关键是接收时的处理.先做一下处理的方法 :发送时每包上面加上标识,比如RTP的做法 ...
- MySQL学习笔记(2/2)
SQL种类 DDL/DML/DQL/DCL 中括号[]里面的表示可选,大括号{}里面的表示必须从里面选一个,FEILED表示字段. 数据定义语言(DDL):CREATE.DROP.ALTER 用于定义 ...