zoukankan      html  css  js  c++  java
  • 音频播放(二)

    按(一)中所述,内存拷贝等很浪费空间,而且传递时容易出错。换种思路:在JNI层播放,将AudioTrack拿到底层来。

    尝试:先不管效率问题,解一帧播一帧,OK。效果:播放有些文件很卡,有些不是那么卡。

    思考卡的原因:解码慢?都是用这个解码,暂时排除;

                       解一帧播一帧中的间隙?修改,在JNI层开两个线程,一个解码,一个播放。

    实践:开播放线程时候遇到问题,JNIenv不能直接传递,子线程中不能直接使用,要新建JAVAVM再取,此处一直报错E:\myspace\videoActivity/jni/

    native.c:515: undefined reference to `JNI_CreateJavaVM'    ,查询JNI的英文手册,找不到解决办法 ,故放弃 。

          换种思路:在JAVA层开线程,并进行线程的一系列控制维护操作等,但线程里的事还是有JNI层做,以此避开上个线程报错问题。

    一、对JAVA多线程的学习java.lang.Thread

        Java多线程程序中经常用到的方法有以下几个:run(),start(),wait(),sleep(),notify(),notifyAll(),yield()线程的让步,join(),还有一个重要的关键字 synchronized。

        1、run()和start()  

        这两个方法应该都比较熟悉,把需要并行处理的代码放在run()方法中,start()方法启动线程将自动调用 run()方法,这是由Java的内存机制规定的。并且run()方法必须是

    public访问权限,返回值类型为void。

        1、 关键字Synchronized

        这个关键字用于保护共享数据,当然前提是要分清哪些数据是共享数据。每个对象都有一个锁标志,当一个线程访问该对象时,被Synchronized修饰的数据将被“上锁”,

    阻止其他线程访问。当前线程访问完这部分数据后释放锁标志,其他线程就可以访问了。

  • 相关阅读:
    [书目20071127]图书 时间陷阱 目录
    [文摘20071113]十四项心理定律
    Win2003下:JDK1.5 + Eclipse3.2 + Tomcat6.0 + tomcatPluginV32
    [转]初试eclipse mysql
    [转]测试工具
    [转]如何进行软件需求分析
    OA流程设计尝试:Div步骤拖动
    [转]需求分析的20条法则
    Eclipse 3.2 + Tomcat 5.5 + Lomboz 3.2 简单配置
    [转]软件项目管理中的风险管理研究
  • 原文地址:https://www.cnblogs.com/wyqfighting/p/2827652.html
Copyright © 2011-2022 走看看