有没有HarmonyOS鸿蒙Next中AudioWaver的demo?

有没有HarmonyOS鸿蒙Next中AudioWaver的demo? 有没有AudioWaver的demo?

7 回复

楼主你好,目前没有完整的demo,你可以参考以下代码:

public void testAudioWaver003() {
    AudioRenderer renderer = getAudioRenderer();
    int sessionId = renderer.getRendererSessionId();
    AudioWaver audioWaver = new AudioWaver(sessionId, "AudioWaverTest");
    int minDataSize = AudioWaver.getMinDataSize();
    assertEquals(minDataSize, MIN_DATA_SIZE_NATIVE);
    int maxDatasize = AudioWaver.getMaxDataSize();
    assertEquals(maxDatasize, MAX_DATA_SIZE_NATIVE);
    int dataSize = minDataSize * 2;
    assertTrue(audioWaver.setDataSize(dataSize));
    int minInterval = AudioWaver.getMinInterval();
    assertEquals(minInterval, MIN_SAMPLING_INTERVAL_NATIVE);
    int samplingInterval = 2 * minInterval;
    WaveDataObserverTest observer = new WaveDataObserverTest();
    assertTrue(audioWaver.setWaveDataObserver(observer, samplingInterval));
    startAudioRenderer(renderer, "testAudioWaver003");
}

private static class WaveDataObserverTest implements AudioWaver.WaveDataObserver {
    @Override
    public void onWaveData(byte[] data, int sampleRate) {
        ...
    }
}

更多关于有没有HarmonyOS鸿蒙Next中AudioWaver的demo?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


getAudioRenderer 和 startAudioRenderer 这些方法是干吗的,

  1. getAudioRenderer用于获取AudioRenderer对象,实现如下:

    private AudioRenderer getAudioRenderer() {
        AudioStreamInfo info = new AudioStreamInfo.Builder()
            .encodingFormat(AudioStreamInfo.EncodingFormat.ENCODING_PCM_16BIT)
            .channelMask(AudioStreamInfo.ChannelMask.CHANNEL_OUT_STEREO)
            .sampleRate(SAMPLE_RATE)
            .audioStreamFlag(AudioStreamInfo.AudioStreamFlag.AUDIO_STREAM_FLAG_NONE)
            .streamUsage(AudioStreamInfo.StreamUsage.STREAM_USAGE_MEDIA)
            .build();
        AudioRendererInfo ari = new AudioRendererInfo.Builder()
            .audioStreamInfo(info)
            .audioStreamOutputFlag(AudioRendererInfo.AudioStreamOutputFlag.AUDIO_STREAM_OUTPUT_FLAG_DIRECT_PCM)
            .bufferSizeInBytes(0)
            .build();
        AudioRenderer renderer = new AudioRenderer(ari, AudioRenderer.PlayMode.MODE_STREAM);
        return renderer;
    }
  2. startAudioRenderer用于播放音频,实现如下

    private void startAudioRenderer(AudioRenderer audioRenderer, String testAudioWaver001) {
        Thread writeThread = new Thread(new Runnable() {
            @Override
            public void run() {
                assertTrue(audioRenderer.write(directBuffer, 0, directBuffer.length));
            }
        });
        writeThread.setName(testAudioWaver001);
        writeThread.setUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() {
            @Override
            public void uncaughtException(Thread t, Throwable e) {
                LOGGER.error("Direct write thread catch exception");
            }
        });
        assertTrue(audioRenderer.start());
        writeThread.start();
    }
  3. assertEquals是测试断言方法,符合预期才会往下继续执行

一直闪退怎么回事也没日志

欢迎开发小伙伴们进来帮帮楼主

在HarmonyOS鸿蒙Next中,AudioWaver的demo可以通过华为开发者官网或HarmonyOS的官方文档获取。AudioWaver是用于处理音频波形数据的工具,开发者可以通过它实现音频的录制、播放、波形分析等功能。在HarmonyOS Next中,AudioWaver的API已经进行了优化,支持更高效的音频处理。开发者可以通过下载官方提供的SDK和示例代码,快速集成和测试AudioWaver功能。具体的demo代码和文档可以在HarmonyOS开发者资源中心找到,确保使用最新版本的开发工具和SDK以获得最佳兼容性和性能。

目前HarmonyOS鸿蒙Next中并没有官方提供的AudioWaver的demo。不过,你可以参考HarmonyOS的音频开发文档,使用AudioCapturerAudioRenderer等API来实现音频的录制和播放功能。建议查看官方开发者文档和示例代码,结合社区资源进行开发。

回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!