android - Tarsos WriterProcessor不产生输出内容

标签 android audio tarsosdsp

使用Tarsos提供的WriterProcessor时,我无法写入文件。该文件存在,并且没有显示错误。但是文件是空的,当我播放它时,没有声音。

    final Float srf = 44100.0F;

    dispatcher = AudioDispatcherFactory.fromPipe(mRecordFile.getPath(), srf.intValue(), bufferSize, 0);

    mOutputLowFile = new File(v.getContext().getFilesDir(), mOutputLowFileName);
    RandomAccessFile outputFile = null;
    try {
        outputFile = new RandomAccessFile( mOutputLowFile, "rw");
    } catch (FileNotFoundException e) {
        Log.i(TAG, "onFFT: FileNotFoundException: " + e);
        e.printStackTrace();
    }
    TarsosDSPAudioFormat outputFormat = new TarsosDSPAudioFormat(44100, 16, 1, true, false);
    WriterProcessor writer = new WriterProcessor(outputFormat, outputFile);

    dispatcher.addAudioProcessor(writer);

    final AudioDispatcher finalDispatcher1 = dispatcher;
    Thread recordingThread = new Thread(new Runnable() {
        @Override
        public void run() {
            finalDispatcher1.run();
        }
    }, "recordingThread Thread");

    recordingThread.start();

outputFile大1Ko,而原始文件是3Ko。

最佳答案

这是我正在使用的代码,并且可以正常工作-在管道中,我还放置了一个PitchProcessor(此代码主要来自https://stackoverflow.com/a/45867328/4872992):

dispatcher = AudioDispatcherFactory.fromDefaultMicrophone(SAMPLE_RATE, 1024, 0);
    AudioProcessor p = new PitchProcessor(PitchProcessor.PitchEstimationAlgorithm.FFT_YIN, 22050, 1024, pdh);
    dispatcher.addAudioProcessor(p);
    filePath = "/sdcard/recording_test.pcm";
    RandomAccessFile outputFile = new RandomAccessFile(filePath, "rw");
    TarsosDSPAudioFormat outputFormat = new TarsosDSPAudioFormat(SAMPLE_RATE, 16, 1, true, false);
    WriterProcessor writer = new WriterProcessor(outputFormat, outputFile);
    dispatcher.addAudioProcessor(writer);
    recordingThread = new Thread(dispatcher, "Audio Dispatcher)");
    recordingThread.start();

关于android - Tarsos WriterProcessor不产生输出内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56808874/

相关文章:

java - Activity 没有音调检测 TarsosDSP 没有重新启动

android - 如何从其实现类中获取接口(interface)?

java - ToneGenerator 会严重降低应用程序的速度

android - NDK Clang 错误 : undefined reference to 'localeconv'

c# - NAudio MediaFoundationRecorder EncodeToAAC字节数组而不是文件

java - 如果文件存在于目录中,我如何覆盖它

ios - 尝试在Xcode Objective-C中创建按钮

ios - 获取XCODE以将运行脚本转换后的文件复制到iOS资源包中?

android - TarsosDSP 和 SurfaceView 多线程问题