摘要: 转自http://bbs.tech.163.com/bbs/tech_0ik1/147645925.html,尊重原创在把jdk安装到计算机中之后,我们来进行设置使java环境能够使用。 首先右键点我的电脑。打开属性。然后选择“高级”里面的“环境变量”,在新的打开界面中的系统变量需要设置三个属性“JAVA_HOME”、“path”、“classpath”,其中在没安装过jdk的环境下。path属性是本来存在的。而JAVA_HOME和classpath是不存在的。 一:点“新建”,然后在变量名写上JAVA_HOME,顾名其意该变量的含义就是java的安装路径,呵呵,然后在变量值写入刚才安装的路径 阅读全文
posted @ 2012-12-24 16:27 little_star 阅读(187) 评论(0) 推荐(0) 编辑
摘要: 一、线程状态 线程的状态转换是线程控制的基础。线程状态总的可分为五大状态:分别是生、可运行、运行、等待/阻塞、死。 死亡态:当线程的run()方法完成时就认为它死去。这个线程对象也许是活的,但是,它已经不是一个单独执行的线程。线程一旦死亡,就不能复生。 如果在一个死去的线程上调用start()方法,会抛出java.lang.IllegalThreadStateException异常。二、阻止线程执行 阻止线程执行的三种方法:睡眠;等待;因为需要一个对象的锁定而被阻塞。 1、睡眠Thread.sleep() Thread.sleep(long millis)和Thread.sleep(long 阅读全文
posted @ 2012-12-24 16:26 little_star 阅读(203) 评论(0) 推荐(0) 编辑
摘要: 按(一)中所述,内存拷贝等很浪费空间,而且传递时容易出错。换种思路:在JNI层播放,将AudioTrack拿到底层来。尝试:先不管效率问题,解一帧播一帧,OK。效果:播放有些文件很卡,有些不是那么卡。思考卡的原因:解码慢?都是用这个解码,暂时排除; 解一帧播一帧中的间隙?修改,在JNI层开两个线程,一个解码,一个播放。实践:开播放线程时候遇到问题,JNIenv不能直接传递,子线程中不能直接使用,要新建JAVAVM再取,此处一直报错E:\myspace\videoActivity/jni/native.c:515: undefined reference to `JNI_CreateJavaVM 阅读全文
posted @ 2012-12-21 11:25 little_star 阅读(340) 评论(0) 推荐(0) 编辑
摘要: 音频播放全是噪声。思考:1、解码处没有正确解码;2、内存拷贝处地址有问题。验证:1、解码是否正确 方法:将解码后的数据写入PCM文件中,再测试 结果:下载了cool edit这个软件,将PCM文件直接转换为mp3文件,可正常播放,说明不是解码的问题。 2、内存拷贝处memcpy(audioBuf,audioBuffer+audio_offset,size); 仔细分析了一下len=avcodec_decode_audio2(ffmpeg_audio.pCodecCtx,(int16_t *)audioBuffer,&out_size,pktdata,pktsize)这句话,发现自己居然 阅读全文
posted @ 2012-12-14 15:27 little_star 阅读(462) 评论(0) 推荐(0) 编辑
摘要: 转自:http://blog.chinaunix.net/uid-20718335-id-3026906.html,尊重原创1 AVPackettypedef struct AVPacket { /** * Presentation timestamp in AVStream->time_base units; the time at which * the decompressed packet will be presented to the user. * Can be AV_NOPTS_VALUE if it is not stored in the file. * pts MU 阅读全文
posted @ 2012-12-11 14:47 little_star 阅读(302) 评论(0) 推荐(0) 编辑
摘要: 转自:http://blog.chinaunix.net/space.php?uid=20718335&do=blog&id=3025307,尊重原创1 avcodec_find_decoder()/*** Find a registered decoder with a matching codec ID.** @param id CodecID of the requested decoder* @return A decoder if one was found, NULL otherwise.*/AVCodec *avcodec_find_decoder(enum Co 阅读全文
posted @ 2012-12-11 14:46 little_star 阅读(469) 评论(0) 推荐(0) 编辑
摘要: 转自:http://blog.chinaunix.net/uid-20718335-id-3024436.html,尊重原创头文件引入方法:extern "C"{#include "libavcodec/avcodec.h"#include "libavformat/avformat.h"#include "libavutil/avutil.h"#include "libavutil/mem.h"#include "libavutil/fifo.h"#include &quo 阅读全文
posted @ 2012-12-11 14:45 little_star 阅读(330) 评论(0) 推荐(0) 编辑
摘要: 错误request for member 'GetByteArrayElements' in something is not a structure or union 或错误too few arguements to function (*env)->GetByteArrayElements 原因:在C的定义中,env是一个两级指针,而在C++的定义中,env是个一级指针 只有C++时才用: jbyte *arr = env-> GetByteArrayElements(jarr, 0); 在C中的写法应该是:jbyte * arr = (*env)-> G 阅读全文
posted @ 2012-12-11 10:39 little_star 阅读(903) 评论(0) 推荐(0) 编辑
摘要: 郑重声明:此文转自http://blog.csdn.net/cffishappy/article/details/7631424,尊重原创解码时发现avcodec_decode_audio2返回值总为-1,我程序中代码如下: int out_size = AVCODEC_MAX_AUDIO_FRAME_SIZE; //#define AVCODEC_MAX_AUDIO_FRAME_SIZE 2<<20 uint8_t * inbuf = (uint8_t *)malloc(out_size); FILE* pFileWav; i... 阅读全文
posted @ 2012-12-10 21:39 little_star 阅读(1222) 评论(0) 推荐(0) 编辑
摘要: 声明:本文转载自http://blog.sina.com.cn/s/blog_7aa2703601010jrx.html一、安装CDT、NDKCDT是一个在Eclipse下可以搞C++代码的插件。NDK 提供了一系列的工具,帮助开发者快速开发C(或C++)的动态库,并能自动将so 和java 应用一起打包成apk。怎么在eclipse装这两个我就不多说了。大家按照以前装adt和sdk的方法来搞就好了。不过有一点是要注意的:因为cygwin是在window上模拟linux的控制台环境,所以对于访问文件的路径是不能带有空格的,貌似也不能带中文。所以ndk的解压后存放的路径必须不能包括空格或中文,比 阅读全文
posted @ 2012-12-10 10:35 little_star 阅读(263) 评论(0) 推荐(0) 编辑