日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

使用JNI調(diào)用FFmpeg解碼音頻并輸出到AudioTrack求助

 mediatv 2016-07-23
2
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
package codes.orion.swplayer;
 
import java.io.IOException;
 
import android.media.AudioTrack;
import android.media.AudioFormat;
import android.os.Handler;
import android.util.Log;
 
 
public class MediaObj {
    private AudioTrack audioTrack;
    private Handler handler = new Handler();
    private Runnable updateThread = new Runnable(){
        public void run() {
                byte[] bytes=stream(minbufsize);
                int dsize=data_size();
                if(audioTrack.write(bytes, 0, dsize)<dsize) {
                    Log.w(null,"Data not written completely");
                }
            handler.postDelayed(updateThread,50);
        }
    };
     
    private int samplerate,channeltype,minbufsize;
     
    public void setDataSource(String sourceFile) throws IOException {
        openFile(sourceFile);
        samplerate=getSampleRate();
        if (getChannel()==1)
            channeltype=AudioFormat.CHANNEL_OUT_MONO;
        else
            channeltype=AudioFormat.CHANNEL_OUT_STEREO;
        minbufsize=AudioTrack.getMinBufferSize (samplerate, channeltype, AudioFormat.ENCODING_PCM_16BIT);
        audioTrack = new AudioTrack(android.media.AudioManager.STREAM_MUSIC,samplerate,channeltype,
                AudioFormat.ENCODING_PCM_16BIT,
                minbufsize*2,
                AudioTrack.MODE_STREAM);
    }
     
    public void prepare() {
    }
     
    public void play() {
        handler.post(updateThread);
        audioTrack.play();
    }
     
    public MediaObj() {
        JNIinit();
    }
     
    @Override
    protected void finalize() throws Throwable {
        JNIexit();
        handler.removeCallbacks(updateThread);
        super.finalize();
    }
     
    public native byte[] stream(int minbufsize);
    public native int data_size();
    public native void openFile(String sourceFile) throws IOException;
    public native int getSampleRate();
    public native int getChannel();
    public native void JNIinit();
    public native void JNIexit();
    static {
        System.loadLibrary("mediaobj-jni");
    }
     
}

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多