簡體   English   中英

Android Java:解碼mp3文件並將數據傳遞到short []數組以進行分析

[英]Android Java: decoding a mp3 file and passing data into a short[] array for analysis

我正在做一個項目,我將直接從mp3文件中解碼數據並將獲得的pcm數據存儲到sdcard中的臨時文件夾temp.pcm中,以供以后分析。 我在解碼數據時遇到問題。

        //a short array to store raw pcm data
        short[] buffer = new short[bufferSize];

        ByteArrayOutputStream outStream = new ByteArrayOutputStream(1024);
        File filep = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + "/onenineoone.mp3");

        InputStream inputStream = new BufferedInputStream(new FileInputStream(filep), 8 * 1024);
        short[] pcm=null;

        try
        {
            Bitstream bitstream = new Bitstream(inputStream);
            boolean done = false;

            while (!done)
            {

                javazoom.jl.decoder.Header frameHeader = bitstream.readFrame();
                javazoom.jl.decoder.Decoder decoder = new javazoom.jl.decoder.Decoder;

                SampleBuffer output = (SampleBuffer) decoder.decodeFrame(frameHeader, bitstream);
                ****Log.i("decoder", "error in the samplebuffer??");****
                if (output.getSampleFrequency() != 44100 || output.getChannelCount() != 1) throw new DecoderException("Stereo or non-44100 sampling rate .mp3 not supported", null);
                    pcm = output.getBuffer();

                for (short s:pcm) {
                   outStream.write(s);
                 }
                buffer=pcm;
            }    
            done = true;
            bitstream.closeFrame();

        }   catch (BitstreamException e) {
            throw new IOException("Bitstream error: " + e);
        }   catch (DecoderException e) {
               Log.w("error is:", "Decoder error", e);
        }

**解決了
我將私有javazoom.jl.decoder.Decoder解碼器聲明為全局密鑰,但似乎無法進入SampleBuffer的錯誤是我不得不將其聲明為javazoom.jl.decoder.Decoder解碼器= new javazoom.jl .decoder.Decoder。

對我來說,在File filep上打開兩次InputStream沒有意義。 在打開第二個流之前,您甚至沒有關閉第一個流。 請先修改該代碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM