小编J.N*_*Ney的帖子

Android应用程序需要访问"/ Data"文件夹

我想将AAC编码的音频数据从我的Raspberry流式传输到我的Android手机.接收数据的部分运行良好,但解码时存在一些问题.

我使用Media Extractor和Media Codec来解码音频数据.这是代码的重要部分:

MediaExtractor extractor = new MediaExtractor();
Uri path = Uri.fromFile(file);

extractor.setDataSource(path.toString());

format = extractor.getTrackFormat(0); 
    String mime = format.getString(MediaFormat.KEY_MIME); 
    decoder = MediaCodec.createDecoderByType(mime); 
    decoder.configure(format, null, null, 0); 


    while (!stopTrack) { 


        multicastSocket.receive(packet); 

        decoder.start(); 
        data = packet.getData(); 

        inputBuffers = decoder.getInputBuffers(); 
        outputBuffers = decoder.getOutputBuffers(); 
        inputBufferIndex = decoder.dequeueInputBuffer(-1); 

        if (inputBufferIndex >= 0) 
        { 
            inputBuffer = inputBuffers[inputBufferIndex]; 
            inputBuffer.clear(); 

            inputBuffer.put(data); 

            decoder.queueInputBuffer(inputBufferIndex, 0, data.length, 0, 0); 
        } 

        bufferInfo = new MediaCodec.BufferInfo(); 
        outputBufferIndex = decoder.dequeueOutputBuffer(bufferInfo, 0); 

        while (outputBufferIndex >= 0) 
        { 
            outputBuffer = outputBuffers[outputBufferIndex]; 

            outputBuffer.position(bufferInfo.offset); 
            outputBuffer.limit(bufferInfo.offset + …
Run Code Online (Sandbox Code Playgroud)

android decoder android-permissions android-debug mediacodec

7
推荐指数
0
解决办法
1495
查看次数

如何配置媒体编解码器 AAC 解码器(使用 Gstreamer 发送的音频)

我想构建一个应用程序来播放由我的Raspberry PiGstreamer发送的 AAC 音频流。这是我在 Gstreamer 中设置的管道:

gst-launch-1.0 audiotestsrc ! faac "bitrate=64000" ! "audio/mpeg, mpegversion=4, rate = 44100, channels = 1" ! mux. mpegtsmux name=mux! udpsink host=224.0.0.1 port=8001
Run Code Online (Sandbox Code Playgroud)

它将 AAC LC 中的音频数据编码为 mp4,比特率为 64000,采样率为 44100,在 mpeg ts 容器中为 1 个通道。

我使用以下代码设置了我的解码器:

format.setString(MediaFormat.KEY_MIME, "audio/mp4a-latm");
format.setInteger(MediaFormat.KEY_CHANNEL_COUNT, 1);
format.setInteger(MediaFormat.KEY_SAMPLE_RATE, 44100);
format.setInteger(MediaFormat.KEY_BIT_RATE, 64 * 1024);
format.setInteger(MediaFormat.KEY_AAC_PROFILE, MediaCodecInfo.CodecProfileLevel.AACObjectLC);
format.setInteger(MediaFormat.KEY_IS_ADTS, 1);

byte[] bytes = new byte[]{(byte) 0x11, (byte)0x90};
ByteBuffer bb = ByteBuffer.wrap(bytes);
format.setByteBuffer("csd-0", bb);
Run Code Online (Sandbox Code Playgroud)

我也试过没有MediaFormat.KEY_IS_ADTS线。(同样的错误)

这是我的解码器的样子:

while (!stopTrack) {


    multicastSocket.receive(packet);

    decoder.start(); …
Run Code Online (Sandbox Code Playgroud)

android aac audio-streaming gstreamer android-mediacodec

5
推荐指数
0
解决办法
1507
查看次数