标签:des android style blog http color io os 使用
JNI(Java Native Interface,JAVA原生接口)
使用JNI可以使Java代码和其他语言写的代码(如C/C++代码)进行交互。
问:为什么要进行交互?
|- 首先,Java语言提供的类库无法满足要求,且在数学运算,实时渲染的游戏上,音视频处理等方面上与C/C++相比效率稍低。
|- 然后,Java语言无法直接操作硬件,C/C++代码不仅能操作硬件而且还能发挥硬件最佳性能。
|- 接着,使用Java调用本地的C/C++代码所写的库,省去了重复开发的麻烦,并且可以利用很多开源的库提高程序效率。
C语言常见术语:
库函数:
|- 为了代码重用,在C语言中提供了一些常用的、用于执行一些标准任务(如输入/出)的函数,这些函数事先被编译,并生成目标代码,然后将生成的目标代码打包成一个库文件,以供再次使用。 库文件中的函数被称为库函数,库文件被称为函数库。
|- 在Windows中C语言库函数中的目标代码都是以.obj为后缀的,Linux中是以 .o为后缀。
提示:单个目标代码是无法直接执行的,目标代码在运行之前需要使用连接程序将目标代码和其他库函数连接在一起后生成可执行的文件。
头文件:
|- 头文件中存放的是对某个库中所定义的函数、宏、类型、全局变量等进行声明,它类似于一份仓库清单。若用户程序中需要使用某个库中的函数,则只需要将该库所对应的头文件include到程序中即可。
|- 头文件中定义的是库中所有函数的函数原型。而函数的具体实现则是在库文件中。
|- 简单的说:头文件是给编译器用的,库文件是给连接器用的。
|- 在连接器连接程序时,会依据用户程序中导入的头文件,将对应的库函数导入到程序中。头文件以.h为后缀名。
函数库:
|- 动态库:在编译用户程序时不会将用户程序内使用的库函数连接到用户程序的目标代码中,只有在运行时,且用户程序执行到相关函数时才会调用该函数库里的相应函数,因此动态函数库所产生的可执行文件比较小。
|- 静态库:在编译用户程序时会将其内使用的库函数连接到目标代码中,程序运行时不再需要静态库。使用静态库生成可执行文件比较大。
在Linux中:
|- 静态库命名一般为:lib+库名+.a 。
|- 如:libcxy.a 其中lib说明此文件是一个库文件,cxy是库的名称,.a说明是静态的。
|- 动态库命名一般为:lib+库名+.so 。.so说明是动态的。
交叉编译:
|- 将目标代码连接成当前计算机可执行的二进制程序时,连接程序会根据当前计算机的CPU、操作系统的类型来转换。
根据运行的设备的不同,可以将cpu分为:
armeabi
armeabi-v7a
mips
x86
|- arm结构 :主要在移动手持、嵌入式设备上。
|- x86结构 : 主要在台式机、笔记本上使用。如Intel和AMD的CPU 。
若想在使用了基于x86结构CPU的操作系统中编译出可以在基于arm结构CPU的操作系统上运行的代码,就必须使用交叉编译。
交叉编译:在一个平台下编译出在另一个平台中可以执行的二进制代码。Google提出的NDK就可以完成交叉编译的工作。
NDK全称:Native Development Kit 。
|- NDK是一系列工具的集合,它有很多作用。
|- 首先,NDK可以帮助开发者快速开发C(或C++)的动态库。
|- 其次,NDK集成了交叉编译器。使用NDK,我们可以将要求高性能的应用逻辑使用C开发,从而提高应用程序的执行效率。
NDK工具必须在Linux下运行,它可以在linux环境下编译出可以在arm平台下运行的二进制库文件。(NDK-R7版本以上也可以在window上运行了)
使用JNI技术,其实就是在Java程序中,调用C语言的函数库中提供的函数,来完成一些Java语言无法完成的任务。由于Java语言和C语言结构完全不相同,因此若想让它们二者交互,则需要制定一系列的规范。JNI就是这组规范,此时 Java只和JNI交互,而由JNI去和C语言交互。
JNI技术分为两部分:Java端和C语言端。且以Java端为主导。
|- 首先,Java程序员在Java端定义一些Native方法,并将这些方法以C语言头文件的方式提供给C程序员。
|- 然后,C程序员使用C语言,来实现Java程序员提供的头文件中定义的函数。
|- 接着,C程序员将函数打包成一个库文件,并将库文件交给Java程序员。
|- 最后,Java程序员在Java程序中导入库文件,然后调用native方法。
在Java程序执行的时候,若在某个类中调用了native方法,则虚拟机会通过JNI来转调用库文件中的C语言代码。提示:C代码最终是在Linux进程中执行的,而不是在虚拟机中。
问题:在Android中可执行的文件,在Linux中一定可以执行吗? arm处理的linux下是可以的,但是在x86下就不一定可以执行;
那为什么要说,NDK会交叉编译。
ffmpeg 获取视频 音频 :
ffmpeg -i F:\VideoConverter\123.avi F:\VideoConverter\123.mp3
ps:当前路径直接写;ffmpeg -i 123.avi 123.mp3
ffmpeg 视频转换:
ffmpeg -y -i F:\VideoConverter\123.avi -ab 56 -ar 22050 -b 1500 -r 15 -qscale 10 -s 480x350 F:\VideoConverter\234.flv
ffmpeg截图:
ffmpeg -i F:\VideoConverter\123.flv -y -f image2 -t 0.05 -s 480x350 –ss 8 F:\VideoConverter\234.jpg
-ss 8 截第8秒
Mencoder 视频转换参数:
-i F:\VideoConverter\123.avi -o F:\VideoConverter\234.flv + " -of lavf -oac mp3lame -lameopts abr:br=56 -ovc lavc -lavcopts vcodec=flv:vbitrate=150:mbd=2:mv0:trell:v4mv:cbp:last_pred=3 -vf scale=480:-3 -ofps 12 -srate 22050";
删除网站中相对路径下的某一文件:
File.Delete(Server.MapPath("img/Sunset.jpg"));
PK:Server的MapPath方法是返回web服务器上的指定虚拟路径相对应的物理文件路径
删除网站中相对路径下的某一文件夹:
Directory.Delete(Server.MapPath("img"),true);
前台传值后台接
前台传值
‘XXX.aspx?id= ??值??
后台接收
String a= Request.QueryString["id"].ToString().Trim();
后台传值前台接
String a="XXXX";
??赋值对象?? = <%=a%>
Datalist删除一条记录的解决方法
datalist不同gridView 用Findcontrol方法行不通。
设置DataList的DataKeyField=主键,Button的CommandName="Delete"
在DataList的ItemCommand的事件里面:
ItemCommand:
if (e.CommandName=="Delete")
{
int ID =(int)DataList1.DataKeys[e.Item.Itemindex]
//int就是要删的主键,删除这条纪录就行了
}
protected void DataList1_ItemCommand(object source, DataListCommandEventArgs e)
{
if (e.CommandName == "Delete")
{
int id = (int)DataList1.DataKeys[e.Item.ItemIndex];
Response.Write(id);
}
}
D:\samy\projects\24jni\音频转码>ffmpeg -i test_a.avi test_a.mp3
D:\samy\projects\24jni\音频转码>ffmpeg -y -i test_a.avi -ab 56 -ar 22050 -b 15
0 -r 15 -qscale 10 -s 480x350 test_a_new.flv
FFmpeg version UNKNOWN, Copyright (c) 2000-2008 Fabrice Bellard, et al.
configuration: --disable-shared --enable-memalign-hack --enable-gpl --cpu=i68
--enable-libfaac --enable-libfaad --enable-libxvid --enable-liba52 --enable-li
amr-nb --enable-libamr-wb
libavutil 49. 9. 0 / 49. 9. 0
libavcodec 51.64. 0 / 51.64. 0
libavformat 52.20. 0 / 52.20. 0
libavdevice 52. 1. 0 / 52. 1. 0
built on Sep 4 2008 17:14:49, gcc: 4.2.1-sjlj (mingw32-2)
Input #0, avi, from ‘test_a.avi‘:
Duration: 00:19:53.00, start: 0.000000, bitrate: 153 kb/s
Stream #0.0: Video: camtasia, bgr24, 1280x800, 6.00 tb(r)
Stream #0.1: Audio: mp3, 48000 Hz, mono, s16, 64 kb/s
WARNING: The bitrate parameter is set too low. It takes bits/s as argument, not
kbits/s
[imgconvert @ 00E0CE90]PIX_FMT_YUV420P will be used as an intermediate format f
r rescaling
Output #0, flv, to ‘test_a_new.flv‘:
Stream #0.0: Video: flv, yuv420p, 480x350, q=2-31, 1 kb/s, 15.00 tb(c)
Stream #0.1: Audio: adpcm_swf, 22050 Hz, mono, s16, 0 kb/s
Stream mapping:
Stream #0.0 -> #0.0
Stream #0.1 -> #0.1
Press [q] to stop encoding
frame= 1567 fps=259 q=10.0 size= 2913kB time=104.47 bitrate= 228.4kbits/s
frame= 1700 fps=259 q=10.0 size= 3166kB time=113.33 bitrate= 228.9kbits/s
frame= 1827 fps=259 q=10.0 size= 3425kB time=121.80 bitrate= 230.3kbits/s
frame= 1962 fps=260 q=10.0 size= 3664kB time=130.80 bitrate= 229.5kbits/s
frame= 2095 fps=260 q=10.0 size= 3918kB time=139.67 bitrate= 229.8kbits/s
frame= 2227 fps=260 q=10.0 size= 4168kB time=148.47 bitrate= 230.0kbits/s
frame= 2365 fps=261 q=10.0 size= 4432kB time=157.67 bitrate= 230.3kbits/s
frame= 2495 fps=261 q=10.0 size= 4686kB time=166.33 bitrate= 230.8kbits/s
frame= 2628 fps=261 q=10.0 size= 4939kB time=175.20 bitrate= 231.0kbits/s
frame= 2763 fps=261 q=10.0 size= 5194kB time=184.20 bitrate= 231.0kbits/s
frame= 2895 fps=261 q=10.0 size= 5450kB time=193.00 bitrate= 231.3kbits/s
frame= 3027 fps=261 q=10.0 size= 5708kB time=201.80 bitrate= 231.7kbits/s
frame= 3165 fps=262 q=10.0 size= 5948kB time=211.00 bitrate= 230.9kbits/s
frame= 3300 fps=262 q=10.0 size= 6193kB time=220.00 bitrate= 230.6kbits/s
frame= 3432 fps=262 q=10.0 size= 6460kB time=228.80 bitrate= 231.3kbits/s
frame= 3565 fps=262 q=10.0 size= 6743kB time=237.67 bitrate= 232.4kbits/s
frame= 3693 fps=262 q=10.0 size= 6991kB time=246.20 bitrate= 232.6kbits/s
frame= 3825 fps=262 q=10.0 size= 7217kB time=255.00 bitrate= 231.8kbits/s
frame= 3957 fps=262 q=10.0 size= 7445kB time=263.80 bitrate= 231.2kbits/s
frame= 4083 fps=262 q=10.0 size= 7706kB time=272.20 bitrate= 231.9kbits/s
frame= 4215 fps=262 q=10.0 size= 7967kB time=281.00 bitrate= 232.3kbits/s
frame= 4347 fps=262 q=10.0 size= 8218kB time=289.80 bitrate= 232.3kbits/s
frame= 4475 fps=261 q=10.0 size= 8465kB time=298.33 bitrate= 232.4kbits/s
frame= 4602 fps=261 q=10.0 size= 8702kB time=306.80 bitrate= 232.4kbits/s
frame= 4730 fps=261 q=10.0 size= 8958kB time=315.33 bitrate= 232.7kbits/s
frame= 4860 fps=261 q=10.0 size= 9211kB time=324.00 bitrate= 232.9kbits/s
frame= 4992 fps=261 q=10.0 size= 9466kB time=332.80 bitrate= 233.0kbits/s
frame= 5118 fps=261 q=10.0 size= 9702kB time=341.20 bitrate= 232.9kbits/s
frame= 5242 fps=260 q=10.0 size= 10015kB time=349.47 bitrate= 234.8kbits/s
frame= 5370 fps=260 q=10.0 size= 10405kB time=358.00 bitrate= 238.1kbits/s
frame= 5493 fps=260 q=10.0 size= 10720kB time=366.20 bitrate= 239.8kbits/s
frame= 5617 fps=259 q=10.0 size= 11060kB time=374.47 bitrate= 242.0kbits/s
frame= 5737 fps=259 q=10.0 size= 11468kB time=382.47 bitrate= 245.6kbits/s
frame= 5857 fps=259 q=10.0 size= 11862kB time=390.47 bitrate= 248.9kbits/s
frame= 5975 fps=258 q=10.0 size= 12256kB time=398.33 bitrate= 252.0kbits/s
frame= 6097 fps=258 q=10.0 size= 12652kB time=406.47 bitrate= 255.0kbits/s
frame= 6215 fps=257 q=10.0 size= 13041kB time=414.33 bitrate= 257.8kbits/s
frame= 6327 fps=256 q=10.0 size= 13403kB time=421.80 bitrate= 260.3kbits/s
frame= 6442 fps=256 q=10.0 size= 13771kB time=429.47 bitrate= 262.7kbits/s
frame= 6567 fps=256 q=10.0 size= 14192kB time=437.80 bitrate= 265.6kbits/s
frame= 6693 fps=256 q=10.0 size= 14586kB time=446.20 bitrate= 267.8kbits/s
frame= 6815 fps=255 q=10.0 size= 15005kB time=454.33 bitrate= 270.5kbits/s
frame= 6970 fps=256 q=10.0 size= 15441kB time=464.67 bitrate= 272.2kbits/s
frame= 7105 fps=257 q=10.0 size= 15765kB time=473.67 bitrate= 272.7kbits/s
frame= 7240 fps=257 q=10.0 size= 16051kB time=482.67 bitrate= 272.4kbits/s
frame= 7355 fps=256 q=10.0 size= 16334kB time=490.33 bitrate= 272.9kbits/s
frame= 7477 fps=256 q=10.0 size= 16651kB time=498.47 bitrate= 273.7kbits/s
frame= 7608 fps=256 q=10.0 size= 16968kB time=507.20 bitrate= 274.1kbits/s
frame= 7740 fps=256 q=10.0 size= 17211kB time=516.00 bitrate= 273.2kbits/s
frame= 7870 fps=256 q=10.0 size= 17522kB time=524.67 bitrate= 273.6kbits/s
frame= 8000 fps=256 q=10.0 size= 17818kB time=533.33 bitrate= 273.7kbits/s
frame= 8125 fps=256 q=10.0 size= 18206kB time=541.67 bitrate= 275.3kbits/s
frame= 8253 fps=256 q=10.0 size= 18542kB time=550.20 bitrate= 276.1kbits/s
frame= 8382 fps=256 q=10.0 size= 18864kB time=558.80 bitrate= 276.5kbits/s
frame= 8517 fps=256 q=10.0 size= 19128kB time=567.80 bitrate= 276.0kbits/s
frame= 8650 fps=257 q=10.0 size= 19389kB time=576.67 bitrate= 275.4kbits/s
frame= 8780 fps=257 q=10.0 size= 19653kB time=585.33 bitrate= 275.0kbits/s
frame= 8913 fps=257 q=10.0 size= 19916kB time=594.20 bitrate= 274.6kbits/s
frame= 9042 fps=257 q=10.0 size= 20178kB time=602.80 bitrate= 274.2kbits/s
frame= 9175 fps=257 q=10.0 size= 20442kB time=611.67 bitrate= 273.8kbits/s
frame= 9305 fps=257 q=10.0 size= 20726kB time=620.33 bitrate= 273.7kbits/s
frame= 9435 fps=257 q=10.0 size= 20994kB time=629.00 bitrate= 273.4kbits/s
frame= 9567 fps=257 q=10.0 size= 21273kB time=637.80 bitrate= 273.2kbits/s
frame= 9680 fps=257 q=10.0 size= 21514kB time=645.33 bitrate= 273.1kbits/s
frame= 9813 fps=257 q=10.0 size= 21807kB time=654.20 bitrate= 273.1kbits/s
frame= 9942 fps=257 q=10.0 size= 22094kB time=662.80 bitrate= 273.1kbits/s
frame=10077 fps=257 q=10.0 size= 22386kB time=671.80 bitrate= 273.0kbits/s
frame=10210 fps=257 q=10.0 size= 22682kB time=680.67 bitrate= 273.0kbits/s
frame=10345 fps=257 q=10.0 size= 22992kB time=689.67 bitrate= 273.1kbits/s
frame=10477 fps=257 q=10.0 size= 23283kB time=698.47 bitrate= 273.1kbits/s
frame=10608 fps=257 q=10.0 size= 23580kB time=707.20 bitrate= 273.1kbits/s
frame=10740 fps=257 q=10.0 size= 23877kB time=716.00 bitrate= 273.2kbits/s
frame=10875 fps=257 q=10.0 size= 24178kB time=725.00 bitrate= 273.2kbits/s
frame=11010 fps=257 q=10.0 size= 24472kB time=734.00 bitrate= 273.1kbits/s
frame=11142 fps=258 q=10.0 size= 24768kB time=742.80 bitrate= 273.2kbits/s
frame=11275 fps=258 q=10.0 size= 25062kB time=751.67 bitrate= 273.1kbits/s
frame=11407 fps=258 q=10.0 size= 25357kB time=760.47 bitrate= 273.2kbits/s
frame=11538 fps=258 q=10.0 size= 25653kB time=769.20 bitrate= 273.2kbits/s
frame=11670 fps=258 q=10.0 size= 25949kB time=778.00 bitrate= 273.2kbits/s
frame=11802 fps=258 q=10.0 size= 26245kB time=786.80 bitrate= 273.3kbits/s
frame=11932 fps=258 q=10.0 size= 26537kB time=795.47 bitrate= 273.3kbits/s
frame=12063 fps=258 q=10.0 size= 26829kB time=804.20 bitrate= 273.3kbits/s
frame=12187 fps=258 q=10.0 size= 27102kB time=812.47 bitrate= 273.3kbits/s
frame=12315 fps=258 q=10.0 size= 27389kB time=821.00 bitrate= 273.3kbits/s
frame=12435 fps=257 q=10.0 size= 27654kB time=829.00 bitrate= 273.3kbits/s
frame=12562 fps=257 q=10.0 size= 27923kB time=837.47 bitrate= 273.1kbits/s
frame=12687 fps=257 q=10.0 size= 28206kB time=845.80 bitrate= 273.2kbits/s
frame=12807 fps=257 q=10.0 size= 28470kB time=853.80 bitrate= 273.2kbits/s
frame=12927 fps=257 q=10.0 size= 28733kB time=861.80 bitrate= 273.1kbits/s
frame=13040 fps=257 q=10.0 size= 28978kB time=869.33 bitrate= 273.1kbits/s
frame=13155 fps=256 q=10.0 size= 29238kB time=877.00 bitrate= 273.1kbits/s
frame=13287 fps=256 q=10.0 size= 29532kB time=885.80 bitrate= 273.1kbits/s
frame=13413 fps=256 q=10.0 size= 29805kB time=894.20 bitrate= 273.1kbits/s
frame=13540 fps=256 q=10.0 size= 30095kB time=902.67 bitrate= 273.1kbits/s
frame=13670 fps=256 q=10.0 size= 30385kB time=911.33 bitrate= 273.1kbits/s
frame=13800 fps=256 q=10.0 size= 30682kB time=920.00 bitrate= 273.2kbits/s
frame=13917 fps=256 q=10.0 size= 30933kB time=927.80 bitrate= 273.1kbits/s
frame=14052 fps=256 q=10.0 size= 31248kB time=936.80 bitrate= 273.3kbits/s
frame=14185 fps=256 q=10.0 size= 31547kB time=945.67 bitrate= 273.3kbits/s
frame=14305 fps=256 q=10.0 size= 31822kB time=953.67 bitrate= 273.4kbits/s
frame=14420 fps=256 q=10.0 size= 32075kB time=961.33 bitrate= 273.3kbits/s
frame=14550 fps=256 q=10.0 size= 32370kB time=970.00 bitrate= 273.4kbits/s
frame=14677 fps=256 q=10.0 size= 32663kB time=978.47 bitrate= 273.5kbits/s
frame=14805 fps=256 q=10.0 size= 32936kB time=987.00 bitrate= 273.4kbits/s
frame=14808 fps=253 q=10.0 size= 32956kB time=987.20 bitrate= 273.5kbits/s
frame=14935 fps=253 q=10.0 size= 33229kB time=995.67 bitrate= 273.4kbits/s
frame=15063 fps=253 q=10.0 size= 33528kB time=1004.20 bitrate= 273.5kbits/s
frame=15183 fps=253 q=10.0 size= 33814kB time=1012.20 bitrate= 273.7kbits/s
frame=15310 fps=253 q=10.0 size= 34080kB time=1020.67 bitrate= 273.5kbits/s
frame=15442 fps=253 q=10.0 size= 34356kB time=1029.47 bitrate= 273.4kbits/s
frame=15573 fps=253 q=10.0 size= 34631kB time=1038.20 bitrate= 273.3kbits/s
frame=15702 fps=253 q=10.0 size= 34900kB time=1046.80 bitrate= 273.1kbits/s
frame=15815 fps=253 q=10.0 size= 35143kB time=1054.33 bitrate= 273.1kbits/s
frame=15935 fps=253 q=10.0 size= 35392kB time=1062.33 bitrate= 272.9kbits/s
frame=16062 fps=253 q=10.0 size= 35664kB time=1070.80 bitrate= 272.8kbits/s
frame=16188 fps=253 q=10.0 size= 35943kB time=1079.20 bitrate= 272.8kbits/s
frame=16315 fps=253 q=10.0 size= 36223kB time=1087.67 bitrate= 272.8kbits/s
frame=16445 fps=253 q=10.0 size= 36511kB time=1096.33 bitrate= 272.8kbits/s
frame=16565 fps=253 q=10.0 size= 36770kB time=1104.33 bitrate= 272.8kbits/s
frame=16698 fps=253 q=10.0 size= 37021kB time=1113.20 bitrate= 272.4kbits/s
frame=16833 fps=253 q=10.0 size= 37256kB time=1122.20 bitrate= 272.0kbits/s
frame=16955 fps=253 q=10.0 size= 37491kB time=1130.33 bitrate= 271.7kbits/s
frame=17082 fps=253 q=10.0 size= 37745kB time=1138.80 bitrate= 271.5kbits/s
frame=17205 fps=253 q=10.0 size= 38001kB time=1147.00 bitrate= 271.4kbits/s
frame=17330 fps=253 q=10.0 size= 38271kB time=1155.33 bitrate= 271.4kbits/s
frame=17460 fps=253 q=10.0 size= 38545kB time=1164.00 bitrate= 271.3kbits/s
frame=17592 fps=253 q=10.0 size= 38818kB time=1172.80 bitrate= 271.1kbits/s
frame=17722 fps=253 q=10.0 size= 39074kB time=1181.47 bitrate= 270.9kbits/s
frame=17847 fps=253 q=10.0 size= 39342kB time=1189.80 bitrate= 270.9kbits/s
frame=17892 fps=253 q=10.0 Lsize= 39450kB time=1192.80 bitrate= 270.9kbits/s
video:25850kB audio:12919kB global headers:0kB muxing overhead 1.757054%
D:\samy\projects\24jni\音频转码>
纯c语言开发程序 (在普通android 开发里面用的不多.)
一.导入程序:
1.将adb工具所在的环境变量加入path中,这样方便直接使用
2.列出所有目录文件:adb shell ls (如 adb -s emulator-5554 shell ls /data 列出emulator-5554模拟器指定目录data文件)(注意360手机助手可能会占用端口,提示ADB出现adb server is out of date, killing,后台关闭即可 )
3.创建文件夹: adb shell mkdir /data/c
3.导入文件命令:adb push 某路径文件 目标路径 (如 adb push c:/hello /data/c )
二.执行某文件夹下的程序
1.cmd 输入 adb shell,进入 shell
2.进入指定目录 cd /data/c/
3.改变文件权限:chmod 777 hello (7代表 二进制的 111 ,即3个7 各自代表 属主,属组,其他的 权限 都为 可读 ,可写,可执行)
4.运行程序:./hello
标签:des android style blog http color io os 使用
原文地址:http://www.cnblogs.com/hongfeiliuxing/p/102adb4e786630e8bde92d620a2c073b.html