标签: audio-recording

如何捕获正在播放的音频?

有没有人知道如何以编程方式捕获正在播放的声音(即,来自声卡的所有内容,而不是麦克风等输入设备).

directx audio winapi audio-recording

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

获取音频文件的持续时间

我制作了一个录音机应用程序,我想在列表视图中显示录音的持续时间.我保存这样的录音:

MediaRecorder recorder = new MediaRecorder();
recorder.setOutputFormat(MediaRecorder.OutputFormat.DEFAULT);
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT);
folder = new File(Environment.getExternalStorageDirectory()
            + File.separator + "Audio recordings");
String[] files = folder.list();
    int number = files.length + 1;
    String filename = "AudioSample" + number + ".mp3";
    File output = new File(Environment.getExternalStorageDirectory()
            + File.separator + "Audio recordings" + File.separator
            + filename);
    FileOutputStream writer = new FileOutputStream(output);
    FileDescriptor fd = writer.getFD();
    recorder.setOutputFile(fd);
    try {
        recorder.prepare();
        recorder.start();
    } catch (IllegalStateException e) {
        e.printStackTrace();
    } catch (IOException e) {
        Log.e(LOG_TAG, "prepare() failed");
        e.printStackTrace();
    }
Run Code Online (Sandbox Code Playgroud)

如何获得此文件的持续时间(以秒为单位)? …

audio android duration audio-recording

25
推荐指数
6
解决办法
5万
查看次数

如何在网页(iOS,Android,PC/Mac)上录制音频 - 没有闪光灯

我要求允许用户使用他们的麦克风录制音频文件,但它必须在没有闪存的情况下工作,因为它需要在iOS(移动版Safari),Android浏览器或Chrome以及PC/Mac上的现代浏览器上运行.

是否有一个干净,简单的HTML5方法来录制音频和发布到服务器?我找不到任何东西.

html5 android microphone audio-recording ios

24
推荐指数
1
解决办法
3万
查看次数

提高Android音频录制质量?

有没有办法录制高质量的音频?

我如何阅读用户说的信息?在音频录制应用程序中,您可以看到这样的指示器(我不知道它的正确名称).

android audio-recording

23
推荐指数
2
解决办法
3万
查看次数

计算分贝

我正在使用XNA库录制麦克风输入(我认为这不是特定技术,但它永远不会伤害).每次我得到一个样本,我想计算分贝.我在互联网上做了很多搜索,没有发现坚如磐石的例子......

这是我尝试从样本计算分贝:

        double peak = 0;

        for (var i = 0; i < _buffer.Length; i = i + 2)
        {
            var sample = BitConverter.ToInt16(_buffer, i);
            if (sample > peak)
                peak = sample;
            else if (sample < -peak)
                peak = -sample;
        }

        var decibel = (20 * Math.Log10(peak/32768));
Run Code Online (Sandbox Code Playgroud)

如果我将分贝值输出到屏幕,我可以看到值越高越大,因为我说话更柔和.然而,当我绝对安静时,它总是在-40左右徘徊......我认为它会是-90.我必须在上面的块中计算错误?从我在某些网站上看到的内容-40相当于"软谈话"...然而,它完全是安静的.

此外,如果我将麦克风静音,它会直接转到-90.

我做错了吗?

c# audio audio-recording

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

试图录制音频但收到消息"mediarecorder因未处理事件而消失"和"致命信号11(SIGSEGV)......"

我试图在Android中录制音频,但我遇到了问题.

我有启动和停止按钮,"开始"开始录音,"停止"停止录音.

问题是,当我按下停止按钮时,我的应用程序会记录一条消息"W/MediaRecorder(635):mediarecorder因未处理的事件而消失".(启动功能正确保存音频文件.)

然后,如果我再次按下开始或停止按钮,那么我得到错误消息"A/libc(743):致命信号11(SIGSEGV)在0x00000010(代码= 1),线程743(xample.recorder)"

录音类代码如下:

  /**
   * Creates a new audio recording at the given path (relative to root of SD card).
   */
  public AudioRecorder(String path) {
    this.path = sanitizePath(path);
  }
  private String sanitizePath(String path) {
        if (!path.startsWith("/")) {
          path = "/" + path;
        }
        if (!path.contains(".")) {
          path += ".3gp";
        }
        return Environment.getExternalStorageDirectory().getAbsolutePath() + path;
      }

  public void start() throws IOException {
    String state = android.os.Environment.getExternalStorageState();
    if(!state.equals(android.os.Environment.MEDIA_MOUNTED))  {
        throw new IOException("SD Card is not mounted.  It is " …
Run Code Online (Sandbox Code Playgroud)

android audio-recording

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

消费者关闭输入通道或发生错误

我正在开发一个Android应用程序,它打开MIC源并记录麦克风的音频.我有另一个单独的线程在后台运行,它清除ArrayList,定期保存麦克风的音频输入(每1秒)

它工作正常约5至7分钟,我得到一个这样的错误信息

Consumer closed input channel or an error occur...
Run Code Online (Sandbox Code Playgroud)

并且应用程序被终止.在收到错误消息之前,它会显示此消息并终止应用程序.如何解决此问题以及可能导致此错误的原因?提前致谢.

05-26 18:51:08.137: INFO/DEBUG(2894): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
05-26 18:51:08.137: INFO/DEBUG(2894): Build fingerprint: 'google/passion_kt/passion:2.3.3/GRI40/49208:user/release-keys'
05-26 18:51:08.137: INFO/DEBUG(2894): pid: 2956, tid: 2956  >>> com.company.app.p2p <<<
05-26 18:51:08.137: INFO/DEBUG(2894): signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 45088dbc
05-26 18:51:08.137: INFO/DEBUG(2894):  r0 42089000  r1 ffffffff  r2 00000000  r3 ffffffff
05-26 18:51:08.137: INFO/DEBUG(2894):  r4 20000000  r5 e8001200  r6 40009228  r7 00000001 …
Run Code Online (Sandbox Code Playgroud)

audio android multimedia audio-recording

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

AVCaptureSession录制带有音频的视频

我的应用程序设置为使用AVCaptureSession从摄像机录制视频,但是没有音频.如何录制音频然后将其添加到文件的videoOutput中我需要做什么?这是录制视频的代码:

AVCaptureSession *session = [[AVCaptureSession alloc] init];
[session beginConfiguration];
session.sessionPreset = AVCaptureSessionPresetMedium;

CALayer *viewLayer = self.vImagePreview.layer;
NSLog(@"viewLayer = %@", viewLayer);

AVCaptureVideoPreviewLayer *captureVideoPreviewLayer = [[AVCaptureVideoPreviewLayer alloc] initWithSession:session];
captureVideoPreviewLayer.videoGravity = AVLayerVideoGravityResizeAspectFill;
captureVideoPreviewLayer.frame = self.vImagePreview.bounds;

[self.vImagePreview.layer addSublayer:captureVideoPreviewLayer];

AVCaptureDevice *device = [self frontFacingCameraIfAvailable];

NSError *error = nil;
AVCaptureDeviceInput *input = [AVCaptureDeviceInput deviceInputWithDevice:device error:&error];
if (!input) {
    // Handle the error appropriately.
    NSLog(@"ERROR: trying to open camera: %@", error);
}

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectoryPath = [paths objectAtIndex:0];

AVCaptureMovieFileOutput *movieFileOutput = [[AVCaptureMovieFileOutput …
Run Code Online (Sandbox Code Playgroud)

objective-c audio-recording ios avcapturesession avcapturedevice

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

从iOS设备连续录制和发送/串流声音

我正在开发一个iOS应用程序,其上有一个带麦克风的按钮(以及其他功能).当用户按下麦克风时,它会突出显示,应用程序现在应该开始从设备的麦克风录制声音并发送到服务器(专用于应用程序的服务器,由我知道的人开发,因此我可以影响其设计).

我正在寻找最简单但最坚固的方法,即我不需要开发复杂的流媒体解决方案或VoIP功能,除非它像其他任何东西一样简单.

主要问题是我们不知道用户录制声音的时间长短,但我们希望确保声音连续发送到服务器,我们不希望等到用户完成录制.如果数据以块的形式到达服务器是可以的,但是我们不希望错过用户可能正在记录的任何信息,因此一个块必须在前一个块结束的地方继续,依此类推.

我们的第一个想法是创建例如10秒的声音片段"块"并将它们连续发送到服务器.是否有任何流媒体解决方案更好/更简单,我错过了?

我的问题是,在iOS上解决此任务的最简单但仍然可靠的方法是什么?

是否有办法从AVAudioRecorder的正在运行的录音中提取声音块,而不实际停止录音?

iphone cocoa-touch audio-recording ipad ios

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

appendSampleBuffer与音频AVAssetWriterInput"泄漏"内存,直到endSessionAtSourceTime

我有一个奇怪的记忆"泄漏" AVAssetWriterInput appendSampleBuffer.我正在同时写视频和音频,所以我有一个AVAssetWriter有两个输入,一个用于视频,一个用于音频:

self.videoWriter = [[[AVAssetWriter alloc] initWithURL:[self.currentVideo currentVideoClipLocalURL]
                                              fileType:AVFileTypeMPEG4
                                                 error:&error] autorelease];
...
self.videoWriterInput = [AVAssetWriterInput assetWriterInputWithMediaType:AVMediaTypeVideo
                                                           outputSettings:videoSettings];
self.videoWriterInput.expectsMediaDataInRealTime = YES;
[self.videoWriter addInput:self.videoWriterInput];
...
self.audioWriterInput = [AVAssetWriterInput assetWriterInputWithMediaType:AVMediaTypeAudio
                                                           outputSettings:audioSettings];
self.audioWriterInput.expectsMediaDataInRealTime = YES;
[self.videoWriter addInput:self.audioWriterInput];
Run Code Online (Sandbox Code Playgroud)

我开始写作,表面上的一切都很好.视频和音频被写入并对齐等等.但是,我将我的代码放入分配工具并注意到以下内容:

CoreMedia分配

音频字节将保留在内存中,我将在一秒钟内证明.这是内存中的增长.音频字节仅在我调用后才会释放[self.videoWriter endSessionAtSourceTime:...],您会看到内存使用量急剧下降.这是我的音频编写代码,它作为一个块被分派到一个串行队列:

@autoreleasepool
{
    // The objects that will hold the audio data
    CMSampleBufferRef sampleBuffer;
    CMBlockBufferRef  blockBuffer1;
    CMBlockBufferRef  blockBuffer2;

    size_t nbytes = numSamples * asbd_.mBytesPerPacket;

    OSStatus status = noErr;
    status = CMBlockBufferCreateWithMemoryBlock(kCFAllocatorDefault,
                                                data,
                                                nbytes,
                                                kCFAllocatorNull,
                                                NULL,
                                                0,
                                                nbytes,
                                                kCMBlockBufferAssureMemoryNowFlag,
                                                &blockBuffer1); …
Run Code Online (Sandbox Code Playgroud)

memory-leaks objective-c audio-recording ios avassetwriter

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