设为首页 加入收藏

TOP

利用ffmpeg框架扩展Android平台解码器
2014-11-24 11:17:52 来源: 作者: 【 】 浏览:1
Tags:利用 ffmpeg 框架 扩展 Android 平台 解码器

下面开始我们的学习:


第一步:我们要下载ffmpeg源码并利用andorid ndk框架对ffmpeg编译为ffmpeg.so类库。源码下载地址大家可以查看http://www.ffmpeg.org/download.html有git和svn等几种下载方式。推荐大家用git方式下载,Git下载地址(git://git.videolan.org/ffmpeg.git)编译完成后会生成一个libffmpeg.so文件该动态链接库文件就是我们后边要用到的ffmpeg框架;这个so里的是jni方法,可以由java层调用的,而这些jni方法里用到的函数则就是来至libffmpeg.so


android.mk


#Copyright(C)2009 The Android Open SourceProject


#Licensed under the Apache License,Version2.0(the"License");


#you may not use this file except incompliance with the License.


#You may obtain a copy of the License at


#http://www.apache.org/licenses/LICENSE-2.0


#Unless required by applicable law oragreed to in writing,software


#distributed under the License isdistributed on an"AS IS"BASIS,


#WITHOUT WARRANTIES OR CONDITIONS OF ANYKIND,either express or implied.


#See the License for the specific languagegoverning permissions and


#limitations under the License.


#


LOCAL_PATH:=$(call my-dir)


include$(CLEAR_VARS)


PATH_TO_FFMPEG_SOURCE:=$(LOCAL_PATH)/ffmpeg


LOCAL_C_INCLUDES+=$(PATH_TO_FFMPEG_SOURCE)


LOCAL_LDLIBS:=-lffmpeg


LOCAL_MODULE:=hello-jni


LOCAL_SRC_FILES:=hello-jni.c


include$(BUILD_SHARED_LIBRARY)


PATH_TO_FFMPEG_SOURCE:=$(LOCAL_PATH)/ffmpeg


这行是定义一个变量,也就是ffmpeg源码的路径


LOCAL_C_INCLUDES+=$(PATH_TO_FFMPEG_SOURCE)



这行是指定源代码的路径,也就是刚才拷过去的ffmpeg源码,$(LOCAL_PATH)是根目录,如果没有加这行那么引入ffmpeg库中的h文件编译就会出错说找不到该h文件。


LOCAL_LDLIBS:=-lffmpeg


这行很重要,这是表示你这个so运行的时候依赖于libffmpeg.so这个库,再举个例子:如果你要编译的so不仅要用到libffmpeg.so这个库还要用的libopencv.so这个库的话,你这个参数就应该写成


LOCAL_LDLIBS:=-lffmpeg-lopencv


hello-jni.c



#include


这行是因为下面要用到avcodec_version()这个函数。


改完这两个文件以后就可以编译了~~用ndk-build命令编译完后在工程的libs/armeabi目录底下就会有一个libhello-jni.so文件了!(两行眼泪啊~终于编译成功了)编译完成后就可以进行测试了,记得将libffmpeg.so也拷到armeabi目录底下,并在java代码中写上


static{


System.loadLibrary("ffmpeg");


System.loadLibrary("hello-jni");


}


HelloJni.java




到此就完成了,将程序装到手机可看到打印出“3426306”,google搜索“ffmpeg 3426306”得知果然是ffmpeg的东西,证明成功的调用了libffmpeg.so库里的方法了。本例子只是一个测试的ffmpeg框架的测试demo,以后大家要扩展自己的解码器必须查看与ffmpeg的开发文档。


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Android ExpandbleView源码学习:E.. 下一篇Android程序启动画面之Splash总结

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·如何从内核协议栈到 (2025-12-27 03:19:09)
·什么是网络协议?有哪 (2025-12-27 03:19:06)
·TCP/ IP协议有哪些 (2025-12-27 03:19:03)
·怎样用 Python 写一 (2025-12-27 02:49:19)
·如何学习python数据 (2025-12-27 02:49:16)