首先为自己的错误郑重的道歉,第一个错误是声明为”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常用调试方法】...相关推荐

  1. Android项目源码分享

    ├─android web应用 │      jqmDemo_static.zip │      jqmMobileDemo-master.zip │      jqmMobileDemo1_1-ma ...

  2. Android官方源码资料博客

    From 跟大家分享一些常用的Android相关的网址资料 一.Android系统 1.1 Android系统源码 网站 备注 https://android.googlesource.com Goo ...

  3. Android 11源码 Framework修改默认usb连接模式为MTP模式

    Android 11源码 Framework修改默认usb连接模式为MTP模式 Android 11源码 Framework修改默认usb连接模式为MTP模式 修改Framework层源码 编译修改后 ...

  4. 【Android 10 源码】深入理解 Omx 初始化

    MediaCodec 系列文章: [Android 10 源码]深入理解 MediaCodec 硬解码初始化 [Android 10 源码]深入理解 Omx 初始化 [Android 10 源码]深入 ...

  5. 【Android 10 源码】深入理解 software Codec2 服务启动

    MediaCodec 系列文章: [Android 10 源码]深入理解 MediaCodec 硬解码初始化 [Android 10 源码]深入理解 Omx 初始化 [Android 10 源码]深入 ...

  6. android 示例源码

    Android开发又将带来新一轮热潮,很多开发者都投入到这个浪潮中去了,创造了许许多多相当优秀的应用.其中也有许许多多的开发者提供了应用开源项目,贡献出他们的智慧和创造力.学习开源代码是掌握技术的一个 ...

  7. android项目源码

    Android开发又将带来新一轮热潮,很多开发者都投入到这个浪潮中去了,创造了许许多多相当优秀的应用.其中也有许许多多的开发者提供了应用开源项目,贡献出他们的智慧和创造力.学习开源代码是掌握技术的一个 ...

  8. 【Android 10 源码】深入理解 MediaCodec 组件分配

    MediaCodec 系列文章: [Android 10 源码]深入理解 MediaCodec 硬解码初始化 [Android 10 源码]深入理解 Omx 初始化 [Android 10 源码]深入 ...

  9. Source Insight 基本使用(1)-使用Source Insight查看Android Framework 源码

    一.下载framework源码: google已经把framework源码托管在了gitHub上:  https://github.com/android/platform_frameworks_ba ...

  10. quado编辑Android代码步骤,Ubuntu11.10下编译android内核源码

    编译android源码时并不会自动编译android内核,因此需要手动编译这部分代码.编译内核所用的时间比编译android源码要少得多,只需一会就编译完成. 1.确定内核版本 进入存放android ...

最新文章

  1. 卡内基梅隆大学提出基于学习的动作捕捉模型,用自监督学习实现人类3D动作追踪
  2. SpringBoot ElasticSearch 全文搜索
  3. Linux yum包管理工具常用命令示例
  4. maven provided_Maven 教程之 pom.xml 详解
  5. 敏捷软件开发学习笔记(四)之结构型设计模式
  6. 外键 级联操作 mysql
  7. 消息长度_nsq消息队列源码分析
  8. 如何生成微信小程序二维码(uniapp开发)
  9. html颜色渐变配色方案,WebGradients – 提供180种渐变配色灵感的网站
  10. 融云CTO杨攀:以技术为先导 全面聚焦“互联网通信云”
  11. VS-( 图片的上传 )
  12. Z490 AORUS PRO AX+i9-10850K黑苹果EFI引导文件
  13. 网络安全一哥的奇安信发布了全球高级可持续威胁年度报告 值得学习
  14. 卫生事业单位计算机科学与技术,卫生事业单位考试-计算机科学与技术的知识点.doc...
  15. 深入理解JavaScript系列(7):S.O.L.I.D五大原则之开闭原则OCP
  16. Python爬虫 之 seleniun模块
  17. python批量下载ECMWF欧洲中心数据
  18. 【Echarts】关于关闭点击地图时显示黄色的方法
  19. 如何重现难以重现的bug
  20. linux+显卡超频软件,安装和使用GreenWithEnvy在Linux上超频Nvidia显卡

热门文章

  1. 如何修改搜索关键词内容
  2. 学到了林海峰,武沛齐讲的Day16完
  3. Android自定义view之围棋动画(化繁为简)
  4. 唱响艾泽拉斯_战争篇
  5. 文本摘要(text summarization)任务:研究范式,重要模型,评估指标(持续更新ing...)
  6. Python -- 关于函数的学习(五) — 传递任意数量的实参
  7. 基于layui2.x的通用后台管理系统
  8. Convert Binary Search Tree to Sorted Doubly Linked List
  9. 计算机本科结题验收报告怎么写,课题结题鉴定书
  10. 室内红外线防盗报警器matlab,红外防盗报警系统毕业设计论文.doc