Menu Home

Mac OS X: “can’t be opened because it is from an unidentified developer”

OS: MAC OS X 10.9 系统升级到MAX OS X 10.9后,在安装非App Store中的App时,经常会出现下面的报错: 出现这个错误的原因是Apple在新系统中增加了一个叫”GateKeeper”的安全机制。 解决方法 方法一:选择App,弹出上右键 —-> 选择Open:     在弹出的对话框中选择Open:     接下来就是正常的安装过程了。   方法二: 打开System Preference —-> Security&Privacy —-> Allow apps downloaded from:     打开Anywhere后就可以直接安装非App Store中的App了。

Android VideoGallery

activity_main.xml : <LinearLayout xmlns:android=”http://schemas.android.com/apk/res/android” android:layout_width=”fill_parent” android:layout_height=”fill_parent” android:orientation=”vertical” > <ListView android:id=”@+id/lv” android:layout_width=”fill_parent” android:layout_height=”fill_parent” /> </LinearLayout> list_view.xml : <LinearLayout xmlns:android=”http://schemas.android.com/apk/res/android” android:layout_width=”fill_parent” android:layout_height=”fill_parent” android:orientation=”horizontal” > <ImageView android:id=”@+id/imgView” android:layout_width=”80dp” android:layout_height=”80dp” /> <TextView android:id=”@+id/tv” android:layout_width=”wrap_content” android:layout_height=”wrap_content” /> </LinearLayout> MainActivity.java : public class MainActivity extends Activity implements OnItemClickListener { Cursor cursor; @Override protected void onCreate(Bundle savedInstanceState) […]

linux c 解析FLV文件

FLV文件组成 FLV文件由Header和Body两部分组成。 FLV Header 域名 类型 说明 Signature UI8 Signature byte always ‘F’ (0x46) Signature UI8 Signature byte always ‘L’ (0x4C) Signature UI8 Signature byte always ‘V’ (0x56) Version UI8 File version (for example, 0x01 for FLV version 1) TypeFlagsReserved UB[5] Must be 0 TypeFlagsAudio UB[1] Audio tags are present […]

Android使用MediaPlayer播放视频步骤

MediaPlayer状态变换图: public class MainActivity extends Activity { Display display; SurfaceHolder surfaceHolder; SurfaceView surfaceView; MediaPlayer mediaPlayer; // 视频宽高 int width = 0; int height = 0; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); display = getWindowManager().getDefaultDisplay(); String file = Environment.getExternalStorageDirectory() .getAbsolutePath() + “/Movies/1.m4v”; surfaceView = (SurfaceView) findViewById(R.id.sv); surfaceHolder = surfaceView.getHolder(); […]

AudioRecord录制音频的基本步骤

采样定理,又称香农采样定理,奈奎斯特采样定理:         在进行模拟/数字信号的转换过程中,当采样频率fs.max大于信号中最高频率fmax的2倍时(fs.max >= 2fmax),采样之后的数字信号完整地保留了原始信号中的信息。         一般实际应用中保证采样频率为信号最高频率的5~10倍。要使实信号采样后能够不失真还原,采样频率必须大于信号最高频率的两倍。 //设置声音采样率 int frequency = 8000; //设置声道 int channelConfig = AudioFormat.CHANNEL_CONFIGURATION_MONO; //设置声音编码格式 int audioEncoding = AudioFormat.ENCODING_PCM_16BIT; //获取AudioRecord的最小缓冲区大小 int minSize = AudioRecord.getMinBufferSize(frequency, channelConfig, audioEncoding); //录制缓冲区 short audioBuffer = new short[BUFSZ]; AudioRecord audioRecord = new AudioRecord(MediaRecorder.AudioSource.MIC, frequency, channelConfig, audioEncoding,minSize); //开始录制 audioRecord.startRecording(); while(true) { audioRecord.read(audioBuffer, 0, BUFSZ); } ref:http://zh.wikipedia.org/zh-cn/%E5%A5%88%E5%A5%8E%E6%96%AF%E7%89%B9%E9%87%87%E6%A0%B7%E5%AE%9A%E7%90%86

编译ffmpeg使支持PIPE输入

查看ffmpeg支持的输入协议 ./configure –list-protocols 可能的输出: applehttp httpproxy rtmp bluray https rtmpe cache librtmp rtmps concat librtmpe rtmpt crypto librtmps rtmpte ffrtmpcrypt librtmpt rtmpts ffrtmphttp librtmpte rtp file md5 sctp gopher mmsh tcp hls mmst tls http pipe udp 增加PIPE支持 ./configure –enable-protocol=pipe 一个完整的编译参数 ./configure –enable-libmp3lame –enable-vdpau –enable-libx264 –enable-gpl –disable-static –enable-shared –disable-armv5te –disable-armv6 […]

linux c 使用socket处理HTTP请求

#include <stdio.h> #include <sys/socket.h> #include <sys/types.h> #include <time.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <netinet/in.h> #include <arpa/inet.h> #include <sys/select.h> #define BUFSIZE 4096 int main(int argc, char **argv) { int sockfd; struct sockaddr_in servaddr; charhttpRequest[BUFSIZE], buf[BUFSIZE]; bzero(httpRequest, sizeof(httpRequest)); //构建请求信息,这里请求http://192.168.2.184:8090/test.flv,这是一个由ffserver搭建的流媒体服务 strcat(httpRequest, “GET /test.flv HTTP/1.1\n”); strcat(httpRequest, “Host: 192.168.2.184:8090\n”); strcat(httpRequest, “User-Agent: Mozilla/5.0 (X11; […]

linux网络编程: AF_INET, AF_INET6, AF_UNSPEC

int getaddrinfo(const char *node, const char *service, const struct addrinfo *hints, struct addrinfo **res); struct addrinfo { int ai_flags; int ai_family; int ai_socktype; int ai_protocol; socklen_t ai_addrlen; struct sockaddr *ai_addr; char *ai_canonname; struct addrinfo *ai_next; }; ai_family参数指定调用者期待返回的套接口地址结构的类型。 它的值包括三种: AF_INET: 函数返回IPV4相关的地址信息 AF_INET6: 函数返回IPV6相关的地址信息 AF_UNSPEC: 函数返回的是适用于指定主机名和服务名且适合任何协议族的地址 如果某个主机既有AAAA记录(IPV6)地址,同时又有A记录(IPV4)地址,那么AAAA记录将作为sockaddr_in6结构返回,而A记录则作为sockaddr_in结构返回。 ref: http://blog.sina.com.cn/s/blog_8184e033010134c4.html

Android使用MediaRecorder录音

MediaRecorder状态流程 MediaRecorder输出格式 格式 描述 AAC_ADTS AAC ADTS格式 AMR_NB 自适应多速率窄带格式 AMR_WB 新型可变速率多模式宽带格式 DEFAULT MPEG_4 MPRG-4文件格式 RAW_AMR 不使用任何容器的原始文件,这个选项不适合有视频的录制文件,而且音频编码器是AMR_NB时才有效 THREE_GPP 3GP格式 MediaRecorder编码格式 格式 描述 AAC AAC Low Complexity (AAC-LC) audio codec HE_AAC High Efficiency AAC (HE-AAC) audio codec AAC_ELD Enhanced Low Delay AAC (AAC-ELD) audio codec AMR_NB AMR (Narrowband) audio codec AMR_WB AMR […]

ffmpeg常用命令

把mpg文件转换成一系列JPG图片 ffmpeg -i video.mpg image%d.jpg 其他支持的格式: PGM, PPM, PAM, PGMYUV, JPEG, GIF, PNG, TIFF, SGI … MP4转换MOV 这里只是转换了包装格式,不改变视频和音频编码格式。 -vcodec copy:拷贝源视频编码格式 -acodec copy:拷贝源音频编码格式 ffmpeg -i inputfile.mp4 -vcodec copy -acodec copy output.mov 其它常用参数: -s:设置视频大小 ffmpeg -i inputfile.mp4 -vcodec copy -acodec copy -s 1920×1080 output.mov -r:设置视频帧率 ffmpeg -i inputfile.mp4 -vcodec copy -acodec copy […]

jsoncpp的简单使用

OS:ubuntu 12.04 JSONCPP : 0.5.0 关于JSONCPP JSONCPP是一个比较流行的C/C++用来解析json的库,最新的版本是0.5.0,源代码下载地址点击 这里 JSONCPP的编译需要使用scons(ubuntu的用户直接apt-get install scons即可),编译成功后会在jsoncpp-src-0.5.0/libs/linux-gcc-4.7/ 下生成一个libjson_linux-gcc-4.7_libmt.so,开发头文件在include文件夹下。在编译自己的项目时需要加入-ljson_linux-gcc-4.7_libmt编译参数。 JSON结构 Value String Number Object json中的object是“名称/值”对的无序集合,类似于STL中的map。一个object以左大括号'{‘开始,右大括号结束’}’,名称和值之间使用冒号’:’分割,“名称/值”对与“名称/值”对之间使用逗号’,’分割。object可以被嵌套,可以作为其他类型的子元素。 一些例子: {“id” : 1} {“id” : 1, “name” : “lnmcc”, “age” : 100} Array json中的数组,以左方括号'[‘开始,右方括号’]’结束,元素跟元素之间以逗号’,’分割。 一个例子: { “teacher” : [ {“name” : “lnmcc”}, {“name” : “word”} ] } 使用JSONCPP解析json文件 文件test.json内容: { “id”:7, […]

Linux线程的调度策略与优先级

调度策略有3种: SCHED_OTHER: 分时调度策略。线程的默认策略。此策略不能设置线程优先级。 SCHED_FIFO: 实时调度策略,先到先服务。一旦线程占用cpu则一直运行。直到有更高优先级任务到达或自己放弃。此策略可设置线程优先级。 SCHED_RR: 实时调度策略,时间片轮转。当进程的时间片用完,系统将重新分配时间片,并置于就绪队列尾。保证了所有具有相同优先级的RR任务的调度公平此策略可设置线程优先级。 这3个宏在 sched.h 中定义。 线程优先级: 不同操作系统的优先级范围是不相同的,所以在设置线程优先级的时候需要先使用下面2个函数来查询其最大值和最小值: int sched_get_priority_max(int policy); int sched_get_priority_min(int policy); 参数policy是上面介绍的调度策略中的SCHED_FILO或SCHED_RR,注意不能是SCHED_OTHER,因为SCHED_OTHER不支持优先级。 查询和设置调度策略: int pthread_attr_setschedparam(pthread_attr_t *attr, const struct sched_param *param); int pthread_attr_getschedparam(pthread_attr_t *attr, struct sched_param *param); 查询和设置线程优先级: 查询: struct sched_param param; //首先查询线程的调度策略,赋给param //参数attr是create线程时所使用的线程属性 pthread_attr_getschedparam(attr, &param); //从sched_param结构中获取线程优先级 param.__sched_priority; 设置: pthread_attr attr; struct sched_param param; […]

ubuntu使用Fn调节屏幕亮度

OS: ubuntu 12.04 NVIDIA: 319.37 笔记本在ubuntu下更新了NVIDIA显卡驱动后,Fn快捷键调节屏幕亮度的功能失效了,可以使用下面的方法重新启用: 在 /etc/X11/xorg.conf的”Device”段加入一行: Option “RegistryDwords” “EnableBrightnessControl=1” 现在xorg.conf看起来可能是这样: Section “Device” Identifier “Device0” Driver “nvidia” VendorName “NVIDIA Corporation” Option “RegistryDwords” “EnableBrightnessControl=1” EndSection

MediaPlayer(一)——处理网络音频文件

Android MediaPlayer状态转换图 activity_main.xml: <LinearLayout xmlns:android=”http://schemas.android.com/apk/res/android” xmlns:tools=”http://schemas.android.com/tools” android:layout_width=”match_parent” android:layout_height=”match_parent” android:orientation=”vertical” tools:context=”.MainActivity” > <TextView android:id=”@+id/TV01″ android:layout_width=”wrap_content” android:layout_height=”wrap_content” android:text=”Status :” /> <TextView android:id=”@+id/statusTV” android:layout_width=”wrap_content” android:layout_height=”wrap_content” android:text=”Unknown” /> <TextView android:id=”@+id/bufferPercentTV” android:layout_width=”wrap_content” android:layout_height=”wrap_content” android:text=”Buffer Percentage : ” /> <ProgressBar android:id=”@+id/bufferSB” android:layout_width=”fill_parent” android:layout_height=”wrap_content” style=”@android:style/Widget.ProgressBar.Horizontal” android:max=”100″ /> <Button android:id=”@+id/startBtn” android:layout_width=”wrap_content” android:layout_height=”wrap_content” android:text=”Start” /> <Button android:id=”@+id/stopBtn” android:layout_width=”wrap_content” android:layout_height=”wrap_content” […]

android音乐文件搜索和播放

main_activity.xml <LinearLayout xmlns:android=”http://schemas.android.com/apk/res/android” xmlns:tools=”http://schemas.android.com/tools” android:layout_width=”fill_parent” android:layout_height=”fill_parent” android:orientation=”vertical” tools:context=”.MainActivity” > <Button android:id=”@+id/returnBtn” android:layout_width=”fill_parent” android:layout_height=”wrap_content” android:text=”return” /> <!– 如果在代码中需要使用simple_list_item布局,那么这里的id必须为list –> <ListView android:id=”@android:id/list” android:layout_width=”wrap_content” android:layout_height=”wrap_content” /> </LinearLayout> Main_activity.java public class MainActivity extends ListActivity implements LoaderCallbacks<Cursor> { //设置俩种选项状态:选择专辑或者选择歌曲 public static int STATE_SELECT_ALBUM = 0; public static int STATE_SELECT_SONG = 1; //默认当前状态为选择专辑 int currentState = […]

Android使用多点触摸(二)——绘图板

activity_main.xml <RelativeLayout xmlns:android=”http://schemas.android.com/apk/res/android” xmlns:tools=”http://schemas.android.com/tools” android:layout_width=”match_parent” android:layout_height=”match_parent” android:paddingBottom=”@dimen/activity_vertical_margin” android:paddingLeft=”@dimen/activity_horizontal_margin” android:paddingRight=”@dimen/activity_horizontal_margin” android:paddingTop=”@dimen/activity_vertical_margin” tools:context=”.MainActivity” > <ImageView android:id=”@+id/imageView” android:layout_width=”fill_parent” android:layout_height=”fill_parent” /> </RelativeLayout> MainAvtivity.java public class MainActivity extends Activity implements OnTouchListener{ ImageView imageView; Bitmap bitmap; Canvas canvas; Paint paint; float startx = 0f; float starty = 0f; float endx = 0f; float endy = 0f; […]

repo 1.12.4 gpg key错误

自从repo升级到 1.12.4后,repo init的时候就一直报错: repo 1.12.4 gpg: Signature made Wed Oct 2 00:44:27 2013 CST using RSA key ID 692B382C gpg: Can’t check signature: public key not found error: could not verify the tag ‘v1.12.4’ 查了半天原来是android doc没有更新,解决方法是不要使用 curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo 下载的repo,使用下面的网址即可: curl http://commondatastorage.googleapis.com/git-repo-downloads/repo > ~/bin/repo