010003 最艰难的时候请再坚持一下
2014-07-05 23:44
204 查看
上一个帖子记录了Android开发视频录像的方法,本想写成很长很长的一篇,除了记录方法,也把开发的过程记录下来。但是当技术宅附体的时候,文艺范就不在了,融合技术和心理变化很难,于是重新写一篇,记录一下自入职以来第一次自我怀疑,心生放弃,最终又坚持下来的历程。
项目是一个基于人脸技术的实时交互APP,项目以一份被表扬的很狠的产品说明书开始,一切似乎顺风顺水,按计划一个周做完了UI设计,又用了半周时间做完音频自动录制、中断、播放和分享功能。似乎一个月的工作两个周就可以搞定,最后的一步就是视频录制,本以为这是一个很容易的事情,因为从接触Android这段时间,觉得Android封装了很多功能,使用很方便。但是深入做之后发现问题并没有那么简单,正如上一篇提到基本方法,Android封装的太封闭,无法满足要求,悟出这一点用了一个星期,这段时间不断和人讨论视频录制的效率和可能存在的同步问题,一直没有实质性的开始研究方法。从当时的心理来看,对这件事是有一种恐惧感的,因为涉及到音频、视频编码,写文件以及音频和视频的同步问题,总觉得设备已经做了很多图像分析的计算,如果再加入这些很耗资源和CPU的操作,根本无法正常工作。担心变成一种恐惧,因为恐惧迟迟不迈出第一步,这可能从一开始就注定了这件事的坎坷。
当一个星期之后,实在无法逃避,只能硬着头皮开始,这个时候依然幻想Android有其他现成的解决方案,于是不断的对最基本的录制方法进行调试,最终只有一个收获,Android4.1之后可以调用硬编码器,4.3之后有视频和音频混合器。可是APP需要支持现有的大部分设备,于是4.1勉强可以接受,但4.3是不可以接受的。那么编码解决了,封装成文件成了一个问题。由于对于视频的存储方式基本处于无知状态,所以心里的畏惧感愈发强烈。直到调试了一个星期,基本没有太多进展,工作也就是试图把原来的代码通过小幅改动能完成功能。可是尝试一一失败,此时,心里已经不是恐惧,而是已经准备放弃,甚至向别人表露放弃的意愿。可是公司毕竟已经不再是学校,分配的任务就只能完成。又找方法,那个时候觉得只要找个方法跑通,然后证明效率不行,让负责人觉得这个功能不可实现,就可以堂而皇之的放弃。而由于连日的毫无进展,让自己开始产生各种怀疑,怀疑自己是否适合干这个,怀疑自己的选择是否是对的,抱怨周围的人,抱怨公司,急躁、易怒,上班以来,最严重的一次自信心受挫,就感觉在无边的黑暗中,无法挣脱了。
在经过一段时间的纠结,最后决定开始尝试用C++的库,但是查了好多例子,看到很多人用ffmpeg,但是没有一个很清晰的demo,然后又看到很多人说这个库很复杂,心里又有些排斥。然后又继续搜索,终于找到了一个可以跑通的C++库mp4v2,有位朋友提供的demo直接可以测试,而且写得很清晰。但是需要用这个东西涉及到jni和Android库的编译,跨开发语言的调用,一直都觉得很复杂。特别在这种信心极其不足的时候,这个难度被放大,又是纠结徘徊,去搜索其他方法。可是转悠了一圈,还是回来了,因为已经过去两个星期了,如果再搞不定,就不知道怎么交代了。真是天意,如果电脑上没有配置cgwin不知道到现在是什么样子。已经配置过的cgwin环境多少给了一些安慰。于是向别人请教如何写jni,开始照着例子一点点写,不了解规则,第一次做,导致过程很艰难。没有清晰的认识,因此很迷茫,就和摸石头过河一样。但是最终这条河还是被顺利趟过去。
此时,似乎最困难的那个黎明前的黑暗已经过去了,当阳光照射进来之后,一切都开始变得顺利,中间虽然又因为一个设置耽搁了半天时间,但是基本按设计的思路,做完了整套的流程,而且测试可行,可以满足要求。此时几天的沉郁之气瞬间散开,心里由于不顺滋长起来的怨气、不满和急躁瞬间消融,一切又如此美好。
这个过程前后总共3个周,从很顺利,转到一筹莫展,再到手忙脚乱,最终梳理思路,一步步做完,对知识有了一个新的补充,同时又一次验证,当最艰难的时候,也是离成功最近的时候,此时需要的是耐心和坚韧,在坚持一会,黑暗就会过去,黎明就来到了。记起有部电视剧中不断重复一句话:一切都会是好的,如果不好,那么就还没有到最后。生活、工作中很多事情都是这样,遇到这样的经历让自己进步很大,而度过这样经历的方法很简单,就是尽自己最大的努力,然后多坚持一会儿,相信下一刻奇迹就会出现。
项目是一个基于人脸技术的实时交互APP,项目以一份被表扬的很狠的产品说明书开始,一切似乎顺风顺水,按计划一个周做完了UI设计,又用了半周时间做完音频自动录制、中断、播放和分享功能。似乎一个月的工作两个周就可以搞定,最后的一步就是视频录制,本以为这是一个很容易的事情,因为从接触Android这段时间,觉得Android封装了很多功能,使用很方便。但是深入做之后发现问题并没有那么简单,正如上一篇提到基本方法,Android封装的太封闭,无法满足要求,悟出这一点用了一个星期,这段时间不断和人讨论视频录制的效率和可能存在的同步问题,一直没有实质性的开始研究方法。从当时的心理来看,对这件事是有一种恐惧感的,因为涉及到音频、视频编码,写文件以及音频和视频的同步问题,总觉得设备已经做了很多图像分析的计算,如果再加入这些很耗资源和CPU的操作,根本无法正常工作。担心变成一种恐惧,因为恐惧迟迟不迈出第一步,这可能从一开始就注定了这件事的坎坷。
当一个星期之后,实在无法逃避,只能硬着头皮开始,这个时候依然幻想Android有其他现成的解决方案,于是不断的对最基本的录制方法进行调试,最终只有一个收获,Android4.1之后可以调用硬编码器,4.3之后有视频和音频混合器。可是APP需要支持现有的大部分设备,于是4.1勉强可以接受,但4.3是不可以接受的。那么编码解决了,封装成文件成了一个问题。由于对于视频的存储方式基本处于无知状态,所以心里的畏惧感愈发强烈。直到调试了一个星期,基本没有太多进展,工作也就是试图把原来的代码通过小幅改动能完成功能。可是尝试一一失败,此时,心里已经不是恐惧,而是已经准备放弃,甚至向别人表露放弃的意愿。可是公司毕竟已经不再是学校,分配的任务就只能完成。又找方法,那个时候觉得只要找个方法跑通,然后证明效率不行,让负责人觉得这个功能不可实现,就可以堂而皇之的放弃。而由于连日的毫无进展,让自己开始产生各种怀疑,怀疑自己是否适合干这个,怀疑自己的选择是否是对的,抱怨周围的人,抱怨公司,急躁、易怒,上班以来,最严重的一次自信心受挫,就感觉在无边的黑暗中,无法挣脱了。
在经过一段时间的纠结,最后决定开始尝试用C++的库,但是查了好多例子,看到很多人用ffmpeg,但是没有一个很清晰的demo,然后又看到很多人说这个库很复杂,心里又有些排斥。然后又继续搜索,终于找到了一个可以跑通的C++库mp4v2,有位朋友提供的demo直接可以测试,而且写得很清晰。但是需要用这个东西涉及到jni和Android库的编译,跨开发语言的调用,一直都觉得很复杂。特别在这种信心极其不足的时候,这个难度被放大,又是纠结徘徊,去搜索其他方法。可是转悠了一圈,还是回来了,因为已经过去两个星期了,如果再搞不定,就不知道怎么交代了。真是天意,如果电脑上没有配置cgwin不知道到现在是什么样子。已经配置过的cgwin环境多少给了一些安慰。于是向别人请教如何写jni,开始照着例子一点点写,不了解规则,第一次做,导致过程很艰难。没有清晰的认识,因此很迷茫,就和摸石头过河一样。但是最终这条河还是被顺利趟过去。
此时,似乎最困难的那个黎明前的黑暗已经过去了,当阳光照射进来之后,一切都开始变得顺利,中间虽然又因为一个设置耽搁了半天时间,但是基本按设计的思路,做完了整套的流程,而且测试可行,可以满足要求。此时几天的沉郁之气瞬间散开,心里由于不顺滋长起来的怨气、不满和急躁瞬间消融,一切又如此美好。
这个过程前后总共3个周,从很顺利,转到一筹莫展,再到手忙脚乱,最终梳理思路,一步步做完,对知识有了一个新的补充,同时又一次验证,当最艰难的时候,也是离成功最近的时候,此时需要的是耐心和坚韧,在坚持一会,黑暗就会过去,黎明就来到了。记起有部电视剧中不断重复一句话:一切都会是好的,如果不好,那么就还没有到最后。生活、工作中很多事情都是这样,遇到这样的经历让自己进步很大,而度过这样经历的方法很简单,就是尽自己最大的努力,然后多坚持一会儿,相信下一刻奇迹就会出现。
相关文章推荐
- 艰难的时候总会过去,只要你能坚持下来~
- c++在遍历vector数组的时候,发生的传出引用的错误,特别记录一下
- 做设计越迷茫的时候越要坚持
- MSSQL中获取里当前时间最近的数据(个人Coding 的时候用到了,记一下)
- 睿城_技术02----说一下关于平台在属性查询,以及空间查询分析等时候遇到的问题
- 以前开发时候做的笔记都存在word里,现在发到这里,标记一下
- 小结一下在函数使用的时候加括号和不加括号的区别
- 当坚持不下去的时候(节选)
- ubuntu11.10,32位操作系统,编译源码的时候出现一下错误
- 最近在做ShareSDK的微信分享的时候遇到了点问题,就是分享的时候选择微信好友或者微信朋友圈会打开一下微信然后界面都还没加载出来就闪退。这个问题我在网上找了好多种的可能的情况以及处理办法,最终找到了
- 换了电脑了,之前电脑上安装svn和git的时候,图标是都可以正常显示的,但是这次出了问题,废了好多时间才解决了,所以想记录一下解决
- 虚幻4UI和游戏Game切换的时候,鼠标的隐藏和显示需要多点一下问题的解决方法
- 循环的时候坚持使用(signed) 的数据类型的变量作为循环变量
- 晚上写程序的时候就是不知道STDAPI这些东西是搞什么的,分享一下!
- 解决问题最重要的习惯不是一直盯着屏幕和编写修改代码,某些时候,阻止你成功的东西恰恰会是过于努力。这时候你需要暂停一下,平缓你的思绪,换一种方法或许能带给你不一样的效果。
- 记录一下Appium中使用swipe方法时候出现的问题(Appium1.0.0.3版本)
- 为什么在定义能够使用函数适配器的函数的时候要继承一下std::unary_function或者std::binary_function
- 来自佛学的181条智慧, 心情不好的时候一定要看一下
- 是时候思考一下到底要不要干程序员了
- 用于 Linux* 的英特尔® 图形驱动程序 以后买本本的时候,先注意一下