Dragon  
Dragon
日历
<2010年12月>
2829301234
567891011
12131415161718
19202122232425
2627282930311
2345678
统计
  • 随笔 - 58
  • 文章 - 0
  • 评论 - 55
  • 引用 - 0

导航

常用链接

留言簿(3)

随笔分类(58)

随笔档案(58)

搜索

  •  

最新评论

阅读排行榜

评论排行榜

 
 

就以网上的那个《FFMPEG解码流程》中的例子来讲吧!

环境说明:在Windows下安装了Cygwin1.7.6版本。

我的NDK安装目录是:c:\cygwin\home\Dragon\Android\android-ndk-r4b

Cygwin设置了环境变量:

NDK_ROOT=~/Android/android-ndk-r4b

export NDK_ROOT

 

1. c:\cygwin\home\Dragon\Android\android-ndk-r4b\samples\创建一个文件夹,命名为Test

在里面再创建一个文件夹jni,在jni我们必须有这四个:

(1)       源码:main.c

(2)       Ffmpeg0.6源码,文件名ffmpeg

(3)       Android.mk

(4)       so文件夹,里面放好了编译好的lib*.so文件

      除了FFMPEG源码,这些文件我已经放到CSDN下载了。下载地址:

    http://download.csdn.net/source/2776066

2.然后启动cygwin

$ cd $NDK_ROOT

$ ndk-build NDK_PROJECT_PATH=$NDK_ROOT/samples/Test

就会产生一个在Test\libs\armeabi\Test

 

运行Android虚拟机,我的是2.2版本。

把所有用到的SO文件adb push /system/lib/

Test文件adb push /system/bin/

把要测试的文件clock.aviadb push /system/bin/

adb shell 进入到Android虚拟机。

 

# cd /system/bin/

# chmod 777 Test

# Test clock.avi

 

只要我们修改.c文件和Android.mk文件我们就可以编写jni native方法生成SO文件给JAVA调用,当你调试时如果你的JAVA程序调用SO文件时一定要把ffmpeg里用到的SO文件上传到/system/lib/不然调试不了。
posted on 2010-10-22 18:13 Dragon 阅读(7966) 评论(17)  编辑 收藏 引用 所属分类: FFMPEG
评论:
  • # re: NDK使用FFMPEG写的Android测试程序  小莫 Posted @ 2010-12-14 22:00
    对于:"(4) so文件夹,里面放好了编译好的lib*.so文件"
    请问 lib*.so文件哪里来的?

      回复  更多评论   

  • # re: NDK使用FFMPEG写的Android测试程序[未登录]  Dragon Posted @ 2010-12-15 19:49
    @小莫
    编译FFMPEG的  回复  更多评论   

  • # re: NDK使用FFMPEG写的Android测试程序  小莫 Posted @ 2010-12-18 18:49
    是用Android的ndk编译的吧?
    求过程!  回复  更多评论   

  • # re: NDK使用FFMPEG写的Android测试程序  小莫 Posted @ 2010-12-18 19:32
    Hi,首先谢谢的的回复,谢谢 。
    我对你使用Android NDK r4b编译ffmpeg生成lib*.so的过程非常感兴趣,非常崇拜啊!下面有几个问题请教一下:
    1 你使用的ffmeg的版本,0.4.8?跟你前面《FFMPEG解码流程》提到的一样?
    2 各个模块的“Android.mk”编写过程,关键点,分别编译还是同时编译?
    3 编译ffmpeg生成lib*.so的项目能给我发一份吗?如果可以,我将万分感谢,同时我会在项目加上对Android UI的现实控制,并返给你;如果不可以我只有慢慢学习,慢慢来请教你(530225731@qq.com)。
    4 有没有办法把 ib*.so加入到Test.os最后只有一个文件,应该用NDK连接编译?
    5 最好能给我一个你的email地址。谢谢,感谢。

    ps: 以上全部出于个人兴趣的研究.
    小莫
      回复  更多评论   

  • # re: NDK使用FFMPEG写的Android测试程序  Dragon Posted @ 2010-12-19 09:05
    在我的CSDN上的编译FFMPEG的教程里,是生成libffmpeg.so失败的,把各个模块都生成静态库,将ffmpeg目录下的Android.mk文件里的LOCAL_STATIC_LIBRARIES改成LOCAL_WHOLE_STATIC_LIBRARIES
    还要按照这文章修改build-binary.mk文件
    http://www.cnblogs.com/scottwong/archive/2010/12/17/1909455.html
    就可以生成一个SO文件了  回复  更多评论   

  • # re: NDK使用FFMPEG写的Android测试程序  xdiyer Posted @ 2011-02-23 09:16
    "运行Android虚拟机" 是指运行Android模拟器吗?
    我在“把Test文件adb push 到 /system/bin/” 的时候出现失败。提示是 /system/bin/ 是只读的。楼主是怎么做的?  回复  更多评论   

  • # re: NDK使用FFMPEG写的Android测试程序[未登录]  Dragon Posted @ 2011-02-24 17:37
    @xdiyer
    是指Android模拟器.
    下面那个问题我忘记我有没有遇到过了,好像没有~~
    你自己百度一下吧~~
      回复  更多评论   

  • # re: NDK使用FFMPEG写的Android测试程序  宏宇 Posted @ 2011-03-10 14:44
    xdiye:
    用adb remount 命令解决只读问题  回复  更多评论   

  • # re: NDK使用FFMPEG写的Android测试程序  he Posted @ 2011-04-28 15:03
    楼主,有个问题想请教下: 为什么要把.so文件push到system/lib下呢?那在真机上运行呢?  回复  更多评论   

  • # re: NDK使用FFMPEG写的Android测试程序  jichre Posted @ 2011-05-06 11:15
    我想问一下。。运行一下test之后产生了很多信息。。怎么知道是成功了。。。  回复  更多评论   

  • # re: NDK使用FFMPEG写的Android测试程序  Dragon Posted @ 2011-05-15 22:51
    里面会生成一些图片的,PPM格式 ,如果有就是成功了。  回复  更多评论   

  • # re: NDK使用FFMPEG写的Android测试程序  zhx Posted @ 2011-06-05 18:21
    你好!在哪个文件下可以看到生成的ppm格式的图片呢?
      回复  更多评论   

  • # re: NDK使用FFMPEG写的Android测试程序[未登录]  Dragon Posted @ 2011-06-09 00:16
    @zhx
    就在/system/bin/文件夹下
    你可以输入ls回车查看,然后用命令将文件下载到电脑中查看图片  回复  更多评论   

  • # re: NDK使用FFMPEG写的Android测试程序  小豪 Posted @ 2012-03-02 11:49
    hi 博主 你的那个main.c的代码 不要用jni规则修改下吗?能否讲下这个int main(int argc, char *argv[])用jni规则怎么处理的吗  回复  更多评论   

  • # re: NDK使用FFMPEG写的Android测试程序[未登录]  Dragon Posted @ 2012-03-05 16:08
    @小豪
    这个不需要JNI规则的,是纯C的,就好像你在Linux用C写控制台程序一样.  回复  更多评论   

  • # re: NDK使用FFMPEG写的Android测试程序  小豪 Posted @ 2012-03-06 14:12
    @Dragon
    谢谢博主的回复~,这个不需要jni规则,这个纯C的代码在android上怎么能用呢?java中不需要调用这个代码中的任何函数?那么jni 的native方法修改的是哪里的?这块的代码 能否让看看呢 或者有木有这个的博客呢?  回复  更多评论   

  • # re: NDK使用FFMPEG写的Android测试程序[未登录]  Dragon Posted @ 2012-03-06 22:11
    @小豪
    你android是基于Linux的,可以执行纯C程序,不一定要用JAVA,而你们学
    JAVA的只负责调用底层用C/C++写的JNI,而这个JNI的代码就要遵守JNI规则了,例如下面的纯C代码用NDK编译成执行程序后就可以adb push到android里用命令行执行了:

    #include <stdio.h>

    int main()
    {
    printf("Hello world!\n");
    return 0;
    }  回复  更多评论   


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


 
Copyright © Dragon Powered by: 博客园 模板提供:沪江博客