android vplayer 源码,【关于ffmpeg和Android的种种】【VPlayer不开源】【Android常用调试方法】...
首先为自己的错误郑重的道歉,第一个错误是声明为”free forever“的VPlayer最后成了收费的了,第二个是没有及时的公布用到的FFmpeg源码。错了就是错了,没有什么值得为自己辩解的,得让实际行动证明一切。
VPlayer使用了FFmpeg的代码,基于LGPLv3协议,修改过的代码可以点击这里下载。
下载之后使用非常简单,FFmpeg的代码没做任何修改,不需要configure,编译过程使用的是其中的Android标准编译文件Android.mk。只要把代码放到一个标准的Android工程中的jni目录下,运行ndk-build即可。
之前写过一篇用Android NDK编译FFmpeg,写的过于繁琐,一直承诺会更新一个简单易用的方法,现在算是兑现了。
从那之后,这个博客也很少更新了,其实不只这里,我的Twitter等帐号也算是废弃了,基本上都是在开发VPlayer这个播放器,期间有很多学习和成功的快乐,也有各种纠结的事情,幸好有大家的支持,更幸运的是有星星陪我。
顺便说一下,随着Android NDKr5的发布,一切都变的简单起来,只要你会普通Linux上的编译流程,你应该也会用它。我也不介绍这种了,因为我没试过,只简单的看了下更新日志里有提到。
依然不停的思考 AND 编码,为了美好明天。。。
附注:现在好多Android上的播放器在使用FFmpeg,似乎都公布了FFmpeg的代码,可它们公布的貌似不是自己用到的。简单的验证:按照他们的文档介绍看一下能否正常编译,如果能正常编译,把得到的libffmpeg.so与他们程序里的对比一下大小是否一致,然后替换他们程序里的libffmpeg.so,看看还有没有同样的效果。
最后大家兔子年快乐~
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
2. http://blog.csdn.net/lxglxt/archive/2011/02/18/6193999.aspx
把ffmpeg移植到android的总结
终于成功做到了,现在才有时间来写一些关于技术的总结。
在这个工程中,有几个重要的参考,在我的链接中有。
冯晓东的博客,有一篇文章《Android用NDK编译Ffmpeg》,讲述ndk编译Ffmpeg设置步骤,基本上是按照这个来做的,很成功。
havlenapetr的档案中,有一个完整的开源源码,实现了播放。这个给我的帮助很大,很多技术是从这里得到的。本来想在这个基础上更改成为一个播放器,后来还是放弃了。其对音视频同步处理并不成功,再就是显示部分我可以运行他的,但模仿不成功。
tewilove的档案,是另一个开源代码,但有很大的不同。
JesseZhao(赵光)博客园,对Ffmpeg的代码分析和音视频同步处理讲解的非常好。
参照这些,基本框架和Ffmpeg的编译就可以完成了。从网络上的一些交流看,最大的技术难点还是显示和音视频同步处理。
我的显示处理实现:
视频祯在使用Ffmpeg解码后,使用sws_scale()进行格式转换和缩放。Ffmpeg解码出来是YUV420P的格式数据,在我的android2.2中,是不支持的,无法直接显示的。因此转换为RGB565格式的数据。
在java代码中,创建了一个view,将其Surface句柄传递给C代码层。C代码显示,基本就是对Surface操作了。Surface的lock操作后,获取buffer指针,sws_scale()数据转换时,将输出直接到这里就可以了。
音视频同步,参照赵光的博客,注意的一点就是,要把视频同步到音频是很关键的。因为对毫秒级别的延迟,人对声音比图像更敏感。
在完成这些后,新机型出来了,在我的10寸屏上,播放高清,简直是灾难,图像很卡。
对于多媒体,如果使用较高分辨率,更多的是依赖于硬件解码,软件解码,只能适合低分辨率,小屏幕的产品。
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
3. 好问题,不过尚未解决:
android的开源多媒体播放器havlenapetr-FFMpeg,视频显示是调用libjnivideo.so里的函数AndroidSurface_update();
我想自己在native 层直接调用库等里面的函数来绘图,应该怎么做呢?
在Cpp代码里面,直接导进来 是找不到的:
#include
#include
编译时报错:
error:SkBitmap.h : No such file or directory
求教高人指点一下,不胜感激!
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
4. 好问题,不过尚未解决:
http://www.eoeandroid.com/thread-78932-1-1.html
下了havlenapetr的FFMpeg
他自带了libjniaudio.so和libjnivideo.so
编译通过后运行,当点播放时程序挂了,查看日志显示:
06-07 09:46:29.365: DEBUG/dalvikvm(356): Shared lib
'/data/data/cz.havlena.ffmpeg.ui/lib/libjniaudio.so' already loaded in
same CL 0x43d0b8d8
06-07 09:46:29.384: INFO/dalvikvm(356): Unable to dlopen
(/data/data/cz.havlena.ffmpeg.ui/lib/libjnivideo.so): Cannot load
library: find_library[1156]: 30 'libjnivideo.so' failed to load
previously
06-07 09:46:29.435: INFO/dalvikvm(356): Unable to dlopen
(/data/data/cz.havlena.ffmpeg.ui/lib/libffmpeg_jni.so): Cannot load
library: find_library[1156]: 30 'libffmpeg_jni.so' failed to load
previously
用系统自带的libjniaudio.so和libjnivideo.so运行显示错误:
06-07 10:04:58.765: INFO/dalvikvm(434): Unable to dlopen(/data/data/cz.havlena.ffmpeg.ui/lib/libjniaudio.so): Cannot load library: reloc_library[1244]: 30 cannot locate '_ZN7android10AudioTrack3setEijiiijPFviPvS1_ES1_iRKNS_2spINS_7IMemoryEEEbi'...
06-07 10:04:58.885: INFO/dalvikvm(434): Unable to dlopen(/data/data/cz.havlena.ffmpeg.ui/lib/libjnivideo.so): Cannot load library: link_image[1721]: 30 could not load needed library 'libsurfaceflinger_client.so' for 'libjnivideo.so' (load_library[1051]: Library 'libsurfaceflinger_client.so' not found)
06-07 10:04:58.936: INFO/dalvikvm(434): Unable to dlopen(/data/data/cz.havlena.ffmpeg.ui/lib/libffmpeg_jni.so): Cannot load library: link_image[1721]: 30 could not load needed library 'libjniaudio.so' for 'libffmpeg_jni.so' (find_library[1156]: 30 'libjniaudio.so' failed to load previously)
谁用过他的FFMpeg,也来说一下这个libjniaudio.so和libjnivideo.so怎么弄呗,按他官方说要从他自己的framework/base下重新编译,怎么编译,我把他的Framework/base替换android源码中的framwork/base,编译报错
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Android调试程序正确进行方式
摘要:
第一种是用Debug,设个断点就可以跟踪,但是我觉得不爽,我用System.out用惯了,不用System.out也可以用Log的。
第二种就是我要介绍的Log,看了别人介绍的方法之后,自己亲身试验了再写上来的哦~。首先简单介绍一下Android,Android实际上应该算是一种Linux移动平台的另一个版本(我对Android研究不深,我就是这么认为的),那么既然是Linux就必定会用到命令。那么如何用命令运行程序呢?用adb命令!键入“cmd”,再键入“adb shell”,出现了个“#”号,恭喜恭喜,你可以使用命令来控制Android了。
运行“am -help”,可以查看“am”命令的帮助信息,试试运行“
am start -n com.google.android.browser/com.google.android.browser.BrowserActivity
”
看看?呵呵,在模拟器里面可以看到运行了浏览器,哈哈,Android调试程序就是这么简单(简单个P,为了找这个东西花了我好久的时间)。
tag是一个标识,可以是任意字符串,通常可以使用类名+方法名, 主要是用来在查看日志时提供一个筛选条件.
程序运行后 并不会在 ide的控制台内输出任何信息,那么如何查看日志输出?使用"adb logcat" 命令:
adb logcat
当执行 adb logcat 后会以tail方式实时显示出所有的日志信息.
+++++++++++++++
DDMS 视图 + adb +LogCat
android vplayer 源码,【关于ffmpeg和Android的种种】【VPlayer不开源】【Android常用调试方法】...相关推荐
- Android项目源码分享
├─android web应用 │ jqmDemo_static.zip │ jqmMobileDemo-master.zip │ jqmMobileDemo1_1-ma ...
- Android官方源码资料博客
From 跟大家分享一些常用的Android相关的网址资料 一.Android系统 1.1 Android系统源码 网站 备注 https://android.googlesource.com Goo ...
- Android 11源码 Framework修改默认usb连接模式为MTP模式
Android 11源码 Framework修改默认usb连接模式为MTP模式 Android 11源码 Framework修改默认usb连接模式为MTP模式 修改Framework层源码 编译修改后 ...
- 【Android 10 源码】深入理解 Omx 初始化
MediaCodec 系列文章: [Android 10 源码]深入理解 MediaCodec 硬解码初始化 [Android 10 源码]深入理解 Omx 初始化 [Android 10 源码]深入 ...
- 【Android 10 源码】深入理解 software Codec2 服务启动
MediaCodec 系列文章: [Android 10 源码]深入理解 MediaCodec 硬解码初始化 [Android 10 源码]深入理解 Omx 初始化 [Android 10 源码]深入 ...
- android 示例源码
Android开发又将带来新一轮热潮,很多开发者都投入到这个浪潮中去了,创造了许许多多相当优秀的应用.其中也有许许多多的开发者提供了应用开源项目,贡献出他们的智慧和创造力.学习开源代码是掌握技术的一个 ...
- android项目源码
Android开发又将带来新一轮热潮,很多开发者都投入到这个浪潮中去了,创造了许许多多相当优秀的应用.其中也有许许多多的开发者提供了应用开源项目,贡献出他们的智慧和创造力.学习开源代码是掌握技术的一个 ...
- 【Android 10 源码】深入理解 MediaCodec 组件分配
MediaCodec 系列文章: [Android 10 源码]深入理解 MediaCodec 硬解码初始化 [Android 10 源码]深入理解 Omx 初始化 [Android 10 源码]深入 ...
- Source Insight 基本使用(1)-使用Source Insight查看Android Framework 源码
一.下载framework源码: google已经把framework源码托管在了gitHub上: https://github.com/android/platform_frameworks_ba ...
- quado编辑Android代码步骤,Ubuntu11.10下编译android内核源码
编译android源码时并不会自动编译android内核,因此需要手动编译这部分代码.编译内核所用的时间比编译android源码要少得多,只需一会就编译完成. 1.确定内核版本 进入存放android ...
最新文章
- 卡内基梅隆大学提出基于学习的动作捕捉模型,用自监督学习实现人类3D动作追踪
- SpringBoot ElasticSearch 全文搜索
- Linux yum包管理工具常用命令示例
- maven provided_Maven 教程之 pom.xml 详解
- 敏捷软件开发学习笔记(四)之结构型设计模式
- 外键 级联操作 mysql
- 消息长度_nsq消息队列源码分析
- 如何生成微信小程序二维码(uniapp开发)
- html颜色渐变配色方案,WebGradients – 提供180种渐变配色灵感的网站
- 融云CTO杨攀:以技术为先导 全面聚焦“互联网通信云”
- VS-( 图片的上传 )
- Z490 AORUS PRO AX+i9-10850K黑苹果EFI引导文件
- 网络安全一哥的奇安信发布了全球高级可持续威胁年度报告 值得学习
- 卫生事业单位计算机科学与技术,卫生事业单位考试-计算机科学与技术的知识点.doc...
- 深入理解JavaScript系列(7):S.O.L.I.D五大原则之开闭原则OCP
- Python爬虫 之 seleniun模块
- python批量下载ECMWF欧洲中心数据
- 【Echarts】关于关闭点击地图时显示黄色的方法
- 如何重现难以重现的bug
- linux+显卡超频软件,安装和使用GreenWithEnvy在Linux上超频Nvidia显卡
热门文章
- 如何修改搜索关键词内容
- 学到了林海峰,武沛齐讲的Day16完
- Android自定义view之围棋动画(化繁为简)
- 唱响艾泽拉斯_战争篇
- 文本摘要(text summarization)任务:研究范式,重要模型,评估指标(持续更新ing...)
- Python -- 关于函数的学习(五) — 传递任意数量的实参
- 基于layui2.x的通用后台管理系统
- Convert Binary Search Tree to Sorted Doubly Linked List
- 计算机本科结题验收报告怎么写,课题结题鉴定书
- 室内红外线防盗报警器matlab,红外防盗报警系统毕业设计论文.doc