mplayer播放pcm

2015 年 3 月 26 日

Tags

Mac下魔兽世界和风暴英雄适应1920×1200分辨率

2015 年 3 月 8 日

Mac下大部分非标准分辨率都可以这样搞定。

魔兽世界:
defaults write com.blizzard.worldofwarcraft DesktopModeIsDefault 1

风暴英雄:
defaults write com.blizzard.heroesofthestorm DesktopModeIsDefault 1

命令行里执行一下,再进游戏就能看到不变形的的1920×1200分辨率了。

梦醒时分

2015 年 2 月 28 日

胸中愁涟涟,秀手轻抚怜;
惊醒原是梦,今宵又无眠。

流光飞舞

2015 年 2 月 27 日

词曲:黄沾

迎浮生千重变
跟有情人 做快乐事
别问是劫是缘

这,谁做得到??

WordPress去掉google font的引用

2015 年 2 月 26 日

目前所有插件都不靠谱,手动来吧。

我的主题没有用到google font,如果主题使用了google font还要记得把主题里的引用也要去掉。

不信抬头看,苍天饶过谁 —— 《狼图腾》观后感

2015 年 2 月 25 日

  旧时代在慢慢死去,新时代里没有自己的位置。
  曾经无敌的技能慢慢变得一文不值不说,还拦别人前进的道。
  
  你们说,在这样的大环境下。作为一个个体,能怎么办呢?
  
  站在这个时刻的我们,怎样做才是最好?
  挣扎?反抗?屈服?接受?忍耐?
  
  陈阵作为一个有退路没顾忌的家伙,他当然可以养小狼。
  当然他可以抱住所爱,享受那轻轻一吻。
  
  甚至他可以在多年后写一本讲述这段故事的书。
  坐收版税的同时,收获人们的钦佩和道德的认可。
  来自新时代的人儿,无法他做什么,都透着那么轻松写意。
  
  可是心中真有“图腾”的毕利格老人怎么办?他无法突破自己去囚困心中的神。
  可是另外倾慕噶斯迈的藏族小伙子怎么办?他无法允许自己觊觎人别的妻子。
  
  甚至,那美丽而可怜的女人怎么办?那个带着孩子的活在现实里的女人,她怎么办?
  
  对于他们而言。
  心中那些曾经让自己强大的信念,一瞬间全变成绳索。
  依然还是那样强大,捆得自己动弹不得。
  想尝试挣扎一下,立马勒出血印子。
  
  怎么办?
  
  影片安排老人慢慢死去,年轻人光荣战死。
  虽然勾得我眼泪直流,但这大概已经是比较好的结局了。
  
  不然呢?拿枪上山,续集来一部《智取威虎山》?
  
  在文明更迭的最后,别说利益形势,就连道德标准也无法自善其身的。
  不及时战死,就要变成被镇压,被剿灭,被大快人心。连眼泪都骗不到了。
  
  怎么办?
  
  我真想不出答案。
  
  
  只是。
  那新时代来的人儿啊,地方是你的,神是你的,女人。。。你也拿走吧。
  但求你有没有可能慢一会儿,温柔一点,学习一点点技巧。
  没有前戏真的会痛。
  
  你是不是知道,天道好轮回。
  

时光是把杀猪刀,但爱直接割喉 —— 《消失的爱人》观后感

  代入感好强的片子,让我窒息。
  缓过来之后,有个疑问。
  
  Amy为什么不和富翁Neil在一起,最后隐身希腊。
  非要迈出最关键那一步,把自己陷入最后那样无可自拔的结局呢?
  如此坚决的她,到底在追求什么?
  
  她和Nick之间确实有经济问题,但Neil一起不就没这方面问题了么。
  为了她反复提及的安全感?这问题Neil一样可以解决,去希腊开始新的生活啊。
  控制欲?Neil被她操纵了那么多年还不够满足?
  被爱被重视的感觉?Neil给的还不够?
  
  Neil一口气给了她那么多那么多,他说:“只要你要,只要我有。”
  她居然用那么干脆残忍的一刀回答:“这些都不是我想要的!”
  
  说得那么大声。
  
  这个女人到底在追寻什么呢?
  如果此片是在隐喻婚姻的意义,那我们在婚姻关系中追寻的是什么呢?
  
  我想了好久。
  
  ……
  
  “归属感”?
  
  所谓归属感,就是这两个问题的明确答案:
  我属于谁?
  谁属于我?
  
  Neil属于Amy,但Amy不认为自己属于他。
  Amy也许觉得自己属于Nick,但她又感觉不到Nick属于她。
  
  如果女主是在追求这个玩意,那她必将获得苦痛的一生。
  她能力越强,越有力的挣扎,就会给自己越深重的伤痕。
  
  现代社会中,我们把自己的每一面都拿出来交换我们所需。
  把专业献给老板,换取工资。
  把激情献给女人,换取满足。
  
  但是若要说某一个具体的人,而不是他身上的某一个角色或者社会属性,一个完全的人。
  她完全地属于我。
  或者我完全属于她。
  
  这种可能性有没有呢?
  
  我觉得答案不乐观。
  
  电影《成为简·奥斯汀》中奥斯汀为什么和勒弗罗伊分手?他们都已经在私奔的路上了啊。
  因为奥斯汀发现勒弗罗伊有一大笔她不知道的债务。
  所以即使是私奔这么极端的行为,也不能说明她爱上的,不是她爱人的某一个或几个面。
  不能说明是一个“完全的人”爱上了另一个“完全的人”。
  
  一般意义下,私奔即意味着彼此是生命的最重要,重到大于其它一切的总和。
  但即是这样的关系,和相互归属的关系依然相去有日。
  勒弗罗伊的债务意味她要放弃“自由写作”的那部分自己。
  
  “我做不到,我又不属于你。”
  对吧?
  
  可谁能让自己完全地属于另一个人呢?
  如果没人可以做到,那谁又能得到一个这样的人呢?
  
  对于追寻不存在的东西的下场结局,庄子比开箱刀还利——
  
  “殆已。”
  

DarwinStreamingServer搭建RTSP服务器

2015 年 2 月 10 日

安装

修改配置

重启

Mac下为Android Studio编译Ffmpeg(二)Android Studio部分

2015 年 1 月 27 日

Android Studio和Eclipse不太一样,它有一定的自动生成Android.mk并自动搞定JNI的能力。
但目前还并不足以让我们使用起来Ffmpeg库。
因此我们的思路是禁用掉Android Studio自动ndk-build的功能,手动编译我们的C代码达到目的。

首先当然要新建一个Android Studio项目。
我们使用$ROOT_DIR指代项目根目录。

1、Android Studio配置ndk路径

$ROOT_DIR/local.properties原先只配置了sdk。

给它增加一行ndk的配置

2、配置build.gradle

项目里面有两个build.gradle,一个在根目录下,一个在$ROOT_DIR/app/src下,我们要修改的是后者。
A>添加这一段以禁用自动ndk-build。

B>添加这一段让它知道用库

修改后的build.gradle是这样的。

3、生成头文件

执行命令,注意路径要根据自己的情况更改。

会生成这个文件$ROOT_DIR/app/src/main/jni/com_example_chengang_myapplication_MainActivity.h

4、编写C文件

$ROOT_DIR/app/src/main/jni/ovsplayer.c内容如下:

5、编写Java文件

$ROOT_DIR/app/src/main/java/com/example/chengang/myapplication/MainActivity.java内容如下。
其中getStringFromNative()方法是我们实现的,打印了Ffmpeg库的版本号(我编译的这个是3673444)和视频文件的信息出来。

附上布局文件是这样的。

6、编写项目Android.mk

Android.mk放到$ROOT_DIR/app/build/intermediates/ndk/debug/下。
注意其中的绝对路径”/Users/chengang/Code/Android/MyApplication4″是咱们的$ROOT_DIR。

简单说下LOCAL_LDLIBS和LOCAL_SHARED_LIBRARIES的区别,前者链接系统库,后者链接第三方库。
并不能换着用。

7、编译C代码

在终端下执行这个命令编译C代码。

8、运行项目

回到Android Studio中Ctrl+R运行项目。
会看到手机上打印出Ffmpeg库的版本号(我编译的这个是3673444)和视频文件的信息出来。
Ffmpeg库已经可以调用了,然后继续写自己的逻辑就好了。

9、另外

另外说两个C代码中可能遇见的错误:
A>如果你通过标准库想得到文件大小,又写错了文件名。安卓上,在不存在的文件的句柄上执行fseek会报如下错误:”could not disable core file generation.”;
B>如果avformat_open_input()返回-1330794744了。那有两种可能,一是你忘记调用av_register_all()了,二是编译Ffmpeg的时候没有编译进对应的DEMUXER或者指定了disable-everything。

本文前半配置ndk的部分见这个链接:Mac下为Android Studio编译Ffmpeg(一)ndk部分

Tags

Mac下为Android Studio编译Ffmpeg(一)ndk部分

本文参考http://www.roman10.net/how-to-build-ffmpeg-with-ndk-r9/。
但它只适合做编码,而且没有Android Studio配置的部分。

1、下载ndk

我下的是r10d版本。

2、解压ndk

不要解压,文件权限会出错。执行之,会自动解压,然后mv到想放的地方。我放到了”/usr/local/bin/android-ndk-r10d”(此目录之后用$NDK_DIR指代)。

3、下载Ffmpeg

我下的是2.5.3版本。

4、解压Ffmpeg

解压Ffmpeg到$NDK_DIR/sources/ffmpeg-2.5.3。

5、修改Ffmpeg编译配置

在ffmpeg-2.5.3目录下把configure文件中的这几行,目的是去掉默认生成的库名字libavcodec.so.55最后那个”55″的版本号。

6、编译Ffmpeg

在ffmpeg-2.5.3目录下创建文件build_android.sh。
注意前三行要按照自己的路径正确配置。

保存后执行

编译会花上一段时间。

7、查看编译结果

编译完成后$NDK_DIR/sources/ffmpeg-2.5.3下面会多出一个android目录,里面就是我们想要的编译好的库。

其中libavcodec.so、libavfilter.so、libavformat.so、libavutil.so、libswresample.so、libswscale.so都是软链,没有用,可以删掉。

8、给Ffmpeg库写Android.mk使其可用

创建$NDK_DIR/sources/ffmpeg-2.5.3/android/arm/Android.mk文件,内容如下:
要注意其中.so前面的数字应该改成你的ffmpeg版本编译出来的数字。

至此ndk配置完毕,后面是配置Android Studio的部分。
见这个链接:Mac下为Android Studio编译Ffmpeg(二)Android Studio部分

Tags