标签: audio-recording

使用 naudio 录制后,无效的 wav 文件未找到 fmt 块

我的动机是使用 NAudio 录制音频,保存为 wav 文件,然后混合多个音频并播放。为此我尝试过

  private void buttonRecord_Click(object sender, EventArgs e)
    {
        //if (sourceList.SelectedItems.Count == 0) return;

        //int deviceNumber = sourceList.SelectedItems[0].Index;

        sourceStream = new NAudio.Wave.WaveIn();
        sourceStream.DeviceNumber = 0;
        sourceStream.WaveFormat = new NAudio.Wave.WaveFormat(44100, NAudio.Wave.WaveIn.GetCapabilities(0).Channels);

        sourceStream1 = new NAudio.Wave.WaveIn();
        sourceStream1.DeviceNumber = 1;
        sourceStream1.WaveFormat = new NAudio.Wave.WaveFormat(44100, NAudio.Wave.WaveIn.GetCapabilities(1).Channels);

        //NAudio.Wave.WaveInProvider waveIn = new NAudio.Wave.WaveInProvider(sourceStream);



        //sourceStream.StartRecording();
        //waveOut.Play();


        sourceStream1.DataAvailable += new EventHandler<NAudio.Wave.WaveInEventArgs>(waveIn_DataAvailable1);
        writer1 = new NAudio.Wave.WaveFileWriter("D:\test.wav", sourceStream1.WaveFormat);
        sourceStream1.StartRecording();  

        sourceStream.DataAvailable += new EventHandler<NAudio.Wave.WaveInEventArgs>( waveIn_DataAvailable);
        writer = new NAudio.Wave.WaveFileWriter("D:\test1.wav", sourceStream.WaveFormat);
        sourceStream.StartRecording();  
    }
    void waveIn_DataAvailable(object sender, NAudio.Wave.WaveInEventArgs e)
    { …
Run Code Online (Sandbox Code Playgroud)

.net c# audio audio-recording naudio

1
推荐指数
1
解决办法
2018
查看次数

应用程序在后台运行时如何开始录音?

我正在从事录音工作。当应用程序在前台运行时,我必须开始录音并转到后台,当时录音工作正常。

但我的问题是,当我已经在后台时如何开始录音,我的录音功能是这样触发的:

我有一个带有按钮和 iOS 应用程序的蓝牙 LE 设备。这两个设备已配对(蓝牙 LE 设备和运行 iOS 应用程序的 iPhone),iOS 应用程序正在侦听蓝牙 LE 设备上的事件,例如按下按钮等事件。

现在,当用户按下蓝牙 LE 设备上的按钮时,iOS 应用程序会捕获该事件,即使该应用程序位于后台,我也可以运行代码,但无法开始录音。

我已经启用Background Modes

在此输入图像描述

这是我的录音代码:

func startRecording() {
        
        DispatchQueue.global(qos: .background).asyncAfter(deadline: DispatchTime.now(), qos: .background) {
            let audioFilename = self.getDocumentsDirectory().appendingPathComponent("recording.m4a")
            print("record Audio \(audioFilename)")
            let settings = [
                AVFormatIDKey: Int(kAudioFormatMPEG4AAC),
                AVSampleRateKey: 12000,
                AVNumberOfChannelsKey: 1,
                AVEncoderAudioQualityKey: AVAudioQuality.high.rawValue
            ]

            do {
                self.audioRecorder = try AVAudioRecorder(url: audioFilename, settings: settings)
                self.audioRecorder.delegate = self
                self.audioRecorder.record()
            } catch {
                self.finishRecording(success: false)
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

我找不到正确的解决方案来做到这一点,请建议我正确的方法来做到这一点,提前致谢。

audio xcode objective-c audio-recording swift

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

录音的许可问题

我在设备上录制声音时遇到了一些问题.我从android开发站点(站点链接)使用的代码如下:

    public void onClickStart(View v) throws IllegalStateException, IOException{
        startRecord();
    }

    public void onClickStop(View v) throws IllegalStateException, IOException{
        stopRecord();
    }

    private void startRecord() throws IllegalStateException, IOException{
        recorder = new MediaRecorder(); 
        recorder.setAudioSource(MediaRecorder.AudioSource.MIC);  //ok so I say audio source is the microphone, is it windows/linux microphone on the emulator? 
        recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP); 
        recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); 
        recorder.setOutputFile("/sdcard/test.3gpp"); 
        recorder.prepare(); 
        recorder.start();  
    }

    private void stopRecord(){
        recorder.stop();
//      recorder.release();
    }
Run Code Online (Sandbox Code Playgroud)

在主布局中有2个按钮,它们都会停止并开始录制(理论上是这样).

但是当我在我的设备上尝试这个时,从LogCat(真的不能在模拟器上尝试),我得到以下错误:

Error 1:
ERROR/MediaRecorder(14541): start called in an invalid state: 4
java.lang.IllegalStateException: Could not execute method of the …
Run Code Online (Sandbox Code Playgroud)

java media android audio-recording

0
推荐指数
1
解决办法
2万
查看次数

IOS录音,如何在麦克风前检查麦克风/播放是否忙碌

如果正在播放,录制,我们如何检查MIC是否可用(空闲)进行录制?目前使用

AVCaptureDevice *audioCaptureDevice      = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeAudio];
AVCaptureSession *captureSession         = [[AVCaptureSession alloc] init];
VCaptureDeviceInput *audioInput          = [AVCaptureDeviceInput deviceInputWithDevice : audioCaptureDevice error:&error];
AVCaptureAudioDataOutput    *audioOutput = [[AVCaptureAudioDataOutput alloc] init];
[captureSession addInput  : audioInput];
[captureSession addOutput : audioOutput];
[captureSession startRunning];
Run Code Online (Sandbox Code Playgroud)

需要先检查从已有的MIC/Playback中获取MIC/Playback.

audio-recording ios

0
推荐指数
1
解决办法
2247
查看次数

如何覆盖字节数组中的特定块

给定一个字节组和一个新的字节组,其中我需要覆盖其上的原始内容bytearray,但开始从特定位置/偏移(A)如下面的图像中(我们可以说B是长度新数组).如果覆盖超过原始数组的实际长度,也处理新长度.

(这是.WAV文件覆盖在不同位置所需的).

在此输入图像描述 在此输入图像描述

这是我到目前为止尝试但没有运气.

 public byte[] ByteArrayAppender(byte[] firstData, byte[] newData, byte[] remainData, int Position) {

    byte[] editedByteArray = new byte[firstData.length + newData.length + remainData.length];


    System.arraycopy(firstData, 0, editedByteArray, 0, Position);

    System.arraycopy(newData, 0, editedByteArray, firstData.length, newData.length);

    System.arraycopy(remainData, 0, editedByteArray, newData.length, remainData.length);

    return editedByteArray;

}
Run Code Online (Sandbox Code Playgroud)

java arrays bytearray overwrite audio-recording

0
推荐指数
1
解决办法
1935
查看次数

如何在QT中实现简单的音频环回

我需要使用QT(从Windows上的qt 5.7)将从麦克风录制的音频直接回送至扬声器(假设在Windows上为qt 5.7)-假设我无法使用窗口的内部mic->扬声器回送(在麦克风面板上启用“收听此设备” )。

任何方向该怎么做?

qt audio-recording qtmultimedia

0
推荐指数
1
解决办法
1010
查看次数

iOS Safari javascript 录音

从 iOS 12 开始,MediaRecorder尚未实现。然而,MediaDevices 可以工作,允许请求访问用户的麦克风。

我想弄清楚是否至少有一种方法可以直接从浏览器录制音频。我想必须至少有一个,否则授予对麦克风的访问权限有什么意义?

但是我似乎找不到单一的工作解决方案。我错过了什么吗?

javascript safari audio-recording ios

0
推荐指数
1
解决办法
4620
查看次数

不同的 AVAudioQuality 选项对录制结果有什么影响?

我正在构建的应用程序的一部分涉及录音。这是相关代码:

let settings = [
            AVFormatIDKey: Int(kAudioFormatMPEG4AAC),
            AVSampleRateKey: 12000,
            AVNumberOfChannelsKey: 1,
            AVEncoderAudioQualityKey: AVAudioQuality.high.rawValue]

audioRecorder = try AVAudioRecorder(url: self.audioFilename, settings: settings)
Run Code Online (Sandbox Code Playgroud)

我希望质量尽可能好,但我希望允许用户在设置中更改质量(如果可以节省空间)。

AVAudioQuality 的不同值实际上有何作用?随着质量的下降,他们会让文件变小吗?采样率也是如此吗?我见过的很多教程都使用 12000 左右的采样率,尽管我知道专业录音通常是 44100,有什么理由不使用 44100 吗?

audio-recording avfoundation ios swift

0
推荐指数
1
解决办法
594
查看次数

可可:简单的录音

我正在尝试在我的应用程序中实现一些简单的录音功能,我无法理解这样做.我一直指向这个例子,但我不能让它在XCode中运行,它似乎是用C++编写的.

我需要做的是将音频录制到文件,然后能够在录制时获得录制的当前时间戳.我很感激任何帮助.谢谢!

macos cocoa objective-c core-audio audio-recording

-1
推荐指数
1
解决办法
1990
查看次数