H264Android 搜索名字可以知道了,不知道哪位高人编写的程序,还提供了 一些测试的。github上面下载的
下载后发现一个问题,就是编译失败。这可能是很多人会遇到的问题,而且就算直接拿lib下面的so文件,运行后也会有问题的。
于是,在这段日子的研究积累后,决定这次要把它编译成功。
下载工程解压:
直接ndk-build会有问题,因为jni目录下的Android.mk文件需要指定ndk的目录,要一些小的修改。
发现修改完目录还是无法成功, 因为lib找不到的原因,这是因为有一句没有指定目录。#LOCAL_C_INCLUDES +=$(LOCAL_PATH)/libx264/include少了前面的$(LOCAL_PATH)会不知道在哪里。
这是我修改后的文件:我把原来的libx264替换了,因为在编译时出现一个问题,所以又下载了最新版的x264,再编译。
LOCAL_PATH := $(call my-dir)
ARM_ROOT = $ANDROID_NDK
ARM_INC=$(ARM_ROOT)/build/platforms/android-8/arch-arm/usr/include/
ARM_LIB=$(ARM_ROOT)/build/platforms/android-8/arch-arm/usr/lib/
include $(CLEAR_VARS)
#LOCAL_C_INCLUDES +=$(LOCAL_PATH)/libx264/include
#LOCAL_MODULE := H264Android
#LOCAL_SRC_FILES := H264Android.c cabac.c common.c dsputil.c golomb.c h264.c h264utils.c mpegvideo.c
#LOCAL_LDFLAGS += libx264/lib/libx264.a -nostdlib -Bdynamic -Wl,--no-undefined -Wl,-z,noexecstack -Wl,-z,nocopyreloc -Wl,-soname,/system/lib/libz.so -Wl,-rpath-link=$(ARM_LIB),-dynamic-linker=/system/bin/linker -L$(ARM_LIB) -nostdlib -lc -lm -ldl -lgcc
#LOCAL_LDFLAGS += -L$(LOCAL_PATH)libx264/lib
#LOCAL_STATIC_LIBRARIES := libx264
#LOCAL_LDFLAGS += $(LOCAL_PATH)/libx264/lib/libx264.a
#LOCAL_LDLIBS := -L$(SYSROOT)/usr/lib -lgcc
#include $(BUILD_SHARED_LIBRARY)
#------------------------------
LOCAL_C_INCLUDES +=$(LOCAL_PATH)/x264lib/include
LOCAL_MODULE := H264Android
LOCAL_SRC_FILES := H264Android.c cabac.c common.c dsputil.c golomb.c h264.c h264utils.c mpegvideo.c
LOCAL_LDFLAGS += $(LOCAL_PATH)/x264lib/lib/libx264.a
LOCAL_LDLIBS := -L$(SYSROOT)/usr/lib -lgcc
include $(BUILD_SHARED_LIBRARY)
下载git版本名字为x264进入目录,建一个文件:compile.sh
#!/bin/bash
NDK=$ANDROID_NDK
PLATFORM=$NDK/platforms/android-8/arch-arm/
PREBUILT=$NDK/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86
function configure_one(){
./configure --target-os=linux \
--prefix=$PREFIX \
--enable-cross-compile \
--extra-libs="-lgcc" \
--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="-I$PLATFORM/usr/include" \
--enable-pic \
--disable-asm \
$ADDITIONAL_CONFIGURE_FLAG
}
function make_one(){
make clean
make -j4 install
$PREBUILT/bin/arm-linux-androideabi-ld -rpath-link=$PLATFORM/usr/lib -L$PLATFORM/usr/lib -lc -lm -lz -ldl -llog --warn-once --dynamic-linker=/system/bin/linker $PREBUILT/lib/gcc/arm-linux-androideabi/4.4.3/libgcc.a
}
function build_one
{
if test ! -s "../configure" ; then
echo "configure"
#../bootstrap
configure_one
fi
#configure_one
make_one
}
function build_arm_v7_vfp
{
#arm v7vfp
CPU=armv7-a
OPTIMIZE_CFLAGS="-mfloat-abi=softfp -mfpu=vfp -marm -march=$CPU "
#PREFIX=./android/$CPU-vfp
#ADDITIONAL_CONFIGURE_FLAG="--arch=armv7-a --enable-armv5te --enable-armv6 --enable-armvfp --enable-memalign-hack"
build_one
}
function main
{
build_arm_v7_vfp
}
main
强调一下:ANDROID_NDK是一个环境变量,定义好的,在/root/.bashrc文件中
然后就可以运行了./compile.sh一分钟就成功了,生成了libx264.a文件与x264文件在x264目录下。
然后依样,建立与libx264一样的目录x264lib,把对应的文件放进去,文件都在这里,自己找了,注意,x264.h还需要一个x264_config.h,复制过去就可以了。
然后再回到上层目录开始ndk-build。一会就成功了。生成的so大约是1m,原来的是400k左右,然后把/home/dev/H264Android/libs/libH264Android.rar这个文件移到别处去,就可以打包apk 了。
运行工程,生成的/sdcard/camera.h264是可以播放的,我在手机里用VLC(官方的sdk我下载修改的java部分)程序可以播放的,放到pc上用smplayer也可以播放,但与原来的相比,速度快很多。
具体这货如何使用,还得研究研究。
顺便提供一整个附件工程吧,环境是ubuntu 12.04 update to 2012.7.18。顺便说一下,gedit真不能用,kate算是linux下不错的东西了。
分享到:
相关推荐
对应的文章《【Android 视频硬件编码】在Native层实现MediaCodec H264 编码 Demon》 压缩包中含源代码,转换前后的图片,编译后的可执行程序
在h264.h的#define DEST_IP "192.168.0.30"和#define DEST_PORT 1234这两行修改就行了。同时w.sdp文件里也要改成一致的IP和端口号,不然VLC是接受不到数据的。在c=IN IP4 192.168.0.30 和m=video 1234 RTP/AVP 96这...
|---------h264的编解码库和头文件,采用ffmpeg和x264编译(h264交叉编译ffmpeg) |--------- H264Player.rar(H264播放器源代码纯C++) |--------- |--------- H264的经典算法优化 |--------- JM H264解码程序 ...
【Android RTMP】安卓直播推流总结 ( 直播服务器搭建 | NV21 图像采集 | H.264 视频编码 | PCM 音频采集 | AAC 音频编码 | RTMP 包封装推流 ) https://hanshuliang.blog.csdn.net/article/details/106863889 001_...
Android 会同一系列核心应用程序包一起发布,该应用程序包包括 email 客户端, SMS 短消息程序,日历, 地图,浏览器,联系人管理程序等。所有的应用程序都是使用 JAVA 语言编写的。 应用程序框架 开发人员也可以...
支持视频格式: H.264 、流媒体、 3GPP 、 MPEG4 和 Codec 3GP ;支持音频格式: MP3 、 AAC 、 AAC+ 、 W MA 、 MPEG4 、 WAV 、 MIDI 、 REAL 、 AUDIO 和 OGG ;支持墙纸格式: JPG 、 BMP 、 PNG 和 GIF ;铃声 ...
能完成这篇文章,打心底里十分高兴,一直在研究Android程序的逆向与解密方法,每次都使用传统的反编译与回编APK,这样需要花费大量时间去测试,而且很多时候反编译出的程序无法回编回去,这着实让我郁闷了好些日子。...
1 Android build system 4 1.1 Basic 4 1.2 Executable 6 1.3 Shared Library 9 2 Android Initialization Process 11 3 Android JAVA AIDL Analysis 15 4 Android JAVA Binder IPC ...31 编译Native C的helloworld 118
使用它,您可以轻松地将其组合到您的程序中。 仅支持target 22您需要使用它们,例如: theme="@android:style/Theme.Holo.Light"如何使用摇动步骤1.将JitPack存储库添加到您的构建文件中将其添加到存储库末尾的root...
Fmpeg 是一款流行的开源...3. 程序的编译、链接和加载机制:了解源代码如何编译成机器码,链接过程以及加载到内存中的过程。 4. C/C++语言特性背后的思想:深入了解语言的设计哲学,掌握指针、内存管理、虚函数等特
它结合反编译技术和污点流分析来分析应用程序的内容,寻找可能泄露敏感数据的日志语句。 有关详细信息,请参阅以下论文。 如果您使用该工具,也请引用这篇论文: R. Zhou、M. Hamdaqa、H. Cai 和 A. Hamou-Lhadj,In...
等待几秒钟,该应用程序现在已在您的手机上打开 :grinning_face_with_big_eyes: $ dryrun -h Usage: dryrun GIT_URL [OPTIONS] Options -m, --module MODULE_NAME Custom module to run -b, --branch BRANCH_...
支持H264,H265和PS封装。 支持订阅,通知功能。 支持录音播放,录音下载,支持语音通话和音频广播。 它通过GB28181自动测试工具进行了测试,已经通过海康威视,华为,大华,Uniview等大多数知名制造商的GB28181...
ignition location 一个可以直接编译到应用程序中的Android AspectJ库项目 能够让定位应用在不需要Activity位置更新处理的情况下获取到最新的位置信息 ">29 [开源][安卓]ignition master 在编写Android应用时 通过...
Windows下编译.so文件步骤(这里我使用NDK(android-ndk-1.6_r1)加Cygwin 在windows下编译,如果没有请安装, 注:android-ndk-1.6_r1只支持android 1.6或更早版本,所以这里必须将你的android工程的Target设为1.6): ...
maven {url“ h Rx键盘检测器简单的Android库,以使用RxJava2检测键盘的打开/关闭状态。下载Project build.gradle allprojects {存储库{... maven {url” https://jitpack.io“}}}应用程序build.gradle依赖项{......
使用 Android Studio 将项目编译为应用程序并在手机上运行 依赖关系 Java 6 SE 开发环境 安卓SDK 一个(虚拟)Android 设备 ## Android SDK 目标 最低 SDK:16 目标 SDK:16 测试 可以使用 Android Studio 并右键...
头文件:adb_api.h 库:AdbWinApi.lib 来源:使用VS2010编译adb源码后提取的内容,可自行下载adb源码编译 使用例子:Manager.cpp,通过USB枚举得到的设备路径后,使用adb接口获取手机序列号。
$h*! 出事了 拆箱 Unbox是一个方便的一键式解包和反编译工具,它封装了现有的 3rd 方应用程序,如IDA Pro、JD-Cli、Dex2Src等,以提供方便的存档器类似命令行界面来解压和反编译各种类型的文件。 它目前支持编译的二...
是一个Android终端应用程序和Linux环境。 是.Net Framework在包括Android在内的各种平台上的实现。 是Mono(和.Net)中的默认构建系统。 如果要使用预构建的二进制文件,请转到最后一部分。 从源代码构建Mono ...