基于ffmpeg的Android 2.2播放器开源代码
2012-07-24 20:30
369 查看
本开源Android播放器基于ffmpeg开发,音视频在jni层直接输出,不使用java层的bmp和audiotrack输出,支持arm汇编加速,超级精简。
本开源代码播放器使用的音视频解码代码来源于ffmpeg-0.6.3(http://www.ffmpeg.org),
jni衔接代码和java层代码来源于havlenapetr(https://github.com/havlenapetr/FFMpeg)。
移植ffmpeg到android的常规关键点网上有很多的帖子可以参考,也可以用文件夹比较工具比较一下,看看添加修改删除了那些文件。
本开源代码的编译环境
1: Android SDK 2.2版,
2: NDK r4版,注意要导出NDK宏,
3: IDE开发环境是 eclips 3.5 版
4: libffplay.so是在Android 2.2版源码目录树中编译出来的,使用Ubuntu10.04和VMware7.1.1版,目前源码不公开
5: libffmpeg.so编译步骤,cd /cygwin/c/ffplay, ./config_r4.sh, $NDK/ndk-build
6: PC主机开发环境是windows xp。
特别注意,此demo只能在 Android SDK 2.2版上使用,其他版本有修改源码,重新编译才行。
此开源代码解决了几个特别关键点,达到实用水平。几个关键点如下:
1:arm汇编代码编译支持,主要是在几个.mk文件中添加LOCAL_ARM_MODE := arm语句,
在config_r4.sh文件中添加--arch=armv5te和--enable-asm 等开关。
2:在ffmpeg config_r4.sh配置文件中关闭了一些不用的选项后,连接时总是报一些莫名其妙的连接错误,
本开源代码给出终极解决方案(在/jni/jni/Android.mk文件中添加 LOCAL_LDLIBS += C:/ffplay/bin/ndk/local/armeabi/libavcodec.a等语句)。
3:修改havlenapetr中的视频显示错误bug,经测试havlenapetr原始代码在模拟器设置为320x480时显示正确,在更大的分辨率下显示错误,
本开源代码已修改好此bug,现在无论什么分辨率都可以正确显示。
此开源代码其他注意事项:
1:jni衔接代码相比havlenapetr精简了几个数量级,更方便网友们研习。
2:此开源代码不包括play,pause,stop,seek和视音频同步等功能实现代码,这部分代码不开源。
3:Android jni层直接输出音频示例,Android jni层直接输出视频示例,基于ffmpeg的Android播放器开源代码,三个工程使用相同的库,相同的方法和技巧,可相互参考。
在moto defy me525上测试通过。
欢迎下载研习: http://files.cnblogs.com/mcodec/ffplay1.7z
apk包下载: http://files.cnblogs.com/mcodec/ffplay1.apk.7z
转帖:http://www.cnblogs.com/mcodec/articles/2114714.html
本开源代码播放器使用的音视频解码代码来源于ffmpeg-0.6.3(http://www.ffmpeg.org),
jni衔接代码和java层代码来源于havlenapetr(https://github.com/havlenapetr/FFMpeg)。
移植ffmpeg到android的常规关键点网上有很多的帖子可以参考,也可以用文件夹比较工具比较一下,看看添加修改删除了那些文件。
本开源代码的编译环境
1: Android SDK 2.2版,
2: NDK r4版,注意要导出NDK宏,
3: IDE开发环境是 eclips 3.5 版
4: libffplay.so是在Android 2.2版源码目录树中编译出来的,使用Ubuntu10.04和VMware7.1.1版,目前源码不公开
5: libffmpeg.so编译步骤,cd /cygwin/c/ffplay, ./config_r4.sh, $NDK/ndk-build
6: PC主机开发环境是windows xp。
特别注意,此demo只能在 Android SDK 2.2版上使用,其他版本有修改源码,重新编译才行。
此开源代码解决了几个特别关键点,达到实用水平。几个关键点如下:
1:arm汇编代码编译支持,主要是在几个.mk文件中添加LOCAL_ARM_MODE := arm语句,
在config_r4.sh文件中添加--arch=armv5te和--enable-asm 等开关。
2:在ffmpeg config_r4.sh配置文件中关闭了一些不用的选项后,连接时总是报一些莫名其妙的连接错误,
本开源代码给出终极解决方案(在/jni/jni/Android.mk文件中添加 LOCAL_LDLIBS += C:/ffplay/bin/ndk/local/armeabi/libavcodec.a等语句)。
3:修改havlenapetr中的视频显示错误bug,经测试havlenapetr原始代码在模拟器设置为320x480时显示正确,在更大的分辨率下显示错误,
本开源代码已修改好此bug,现在无论什么分辨率都可以正确显示。
此开源代码其他注意事项:
1:jni衔接代码相比havlenapetr精简了几个数量级,更方便网友们研习。
2:此开源代码不包括play,pause,stop,seek和视音频同步等功能实现代码,这部分代码不开源。
3:Android jni层直接输出音频示例,Android jni层直接输出视频示例,基于ffmpeg的Android播放器开源代码,三个工程使用相同的库,相同的方法和技巧,可相互参考。
在moto defy me525上测试通过。
欢迎下载研习: http://files.cnblogs.com/mcodec/ffplay1.7z
apk包下载: http://files.cnblogs.com/mcodec/ffplay1.apk.7z
转帖:http://www.cnblogs.com/mcodec/articles/2114714.html
相关文章推荐
- 基于ffmpeg的Android 2.2播放器开源代码
- 基于ffmpeg的Android 2.2播放器开源代码
- 基于ffmpeg的Android播放器开源代码
- 基于ffmpeg的Android播放器开源代码
- 基于ffmpeg的Android播放器开源代码
- 基于ffmpeg的Android播放器开源代码[转]
- 基于ffmpeg的Android播放器开源代码
- [Android实例] 基于ffmpeg的Android播放器开源代码
- 基于ffmpeg的Android播放器开源代码 Posted on
- android基于ffmpeg的简单视频播发器 三线程实现播放器(完)
- android ffmpeg内核 开源播放器编译与使用 支持2.3及4.0
- 深入理解init_4``````````init控制service(基于Android2.2,代码源自Google)
- 2048聚合版开源代码,cocos2d-js编写,基于CocosEditor开发工具,可运行Android,ios,html5等
- 一个基于ffmpeg的android播放器
- 最简单的基于FFmpeg的移动端样例附件:Android 自带播放器
- EasyDarwin开源音频解码项目EasyAudioDecoder:基于ffmpeg的安卓音频(AAC、G726)解码库(第一部分,ffmpeg-android的编译)
- 深入理解init_2-----解析配置文件init.rc(基于Android 2.2,代码源于Google)
- EasyDarwin开源音频解码项目EasyAudioDecoder:基于ffmpeg的安卓音频(AAC、G726)解码库(第一部分,ffmpeg-android的编译)
- 自写、开源 Android播放器代码
- 最简单的基于FFmpeg的移动端例子附件:Android 自带播放器