小编Tho*_*mas的帖子

使用 AVCaptureAudioDataOutputSampleBufferDelegate 快速捕获音量级别

我正在尝试使用 AVCaptureDevice 等它编译和运行的音量级别,但这些值似乎只是随机的,而且我也不断收到溢出错误。

编辑:

RMS 范围在 0 到 20000 左右是否正常?

        if let audioCaptureDevice : AVCaptureDevice = AVCaptureDevice.defaultDeviceWithMediaType(AVMediaTypeAudio){



            try audioCaptureDevice.lockForConfiguration()

            let audioInput = try AVCaptureDeviceInput(device: audioCaptureDevice)
            audioCaptureDevice.unlockForConfiguration()

            if(captureSession.canAddInput(audioInput)){
                captureSession.addInput(audioInput)
                print("added input")
            }


            let audioOutput = AVCaptureAudioDataOutput()

            audioOutput.setSampleBufferDelegate(self, queue: GlobalUserInitiatedQueue)

            if(captureSession.canAddOutput(audioOutput)){
                captureSession.addOutput(audioOutput)
                print("added output")
            }


            //supposed to start session not on UI queue coz it takes a while
            dispatch_async(GlobalUserInitiatedQueue) {
                print("starting captureSession")
                self.captureSession.startRunning()
            }
        }
Run Code Online (Sandbox Code Playgroud)

...

func captureOutput(captureOutput: AVCaptureOutput!, let didOutputSampleBuffer sampleBuffer: CMSampleBuffer!, fromConnection connection: AVCaptureConnection!) {

    // Needs to be initialized …
Run Code Online (Sandbox Code Playgroud)

ios avcapturesession audiobuffer swift

7
推荐指数
3
解决办法
2726
查看次数

为什么文档说使用 vDSP_DFT 而不是 FFT

在苹果文档上,它说

我们建议您使用 DFT 例程而不是这些例程。

或者

尽可能使用 DFT 例程而不是这些例程。(例如,而不是调用vDSP_fft_zip与vDSP_create_fftsetup创造了一个建立,呼叫vDSP_DFT_Execute( : :_ :)与vDSP_DFT_zop_CreateSetup(创建的设置:_ :))。

苹果 vDSP 文档

使用 DFT 例程有什么好处?

signal-processing fft ios vdsp swift

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

layoutParams不变

我正在尝试设置水平列表项的动画,以消除alpha动画的工作,并且layoutparam值也会随着时间的推移而减少但由于某种原因不会更改列表项的实际高度.

@Override
protected void applyTransformation(float interpolatedTime, Transformation t) {
    final int initialHeight = view.getMeasuredHeight();


    if(interpolatedTime == 1){

        imageAdapter.remove(view, position);


    }else{

        view.getLayoutParams().height = initialHeight - (int)(initialHeight * interpolatedTime);
        view.setAlpha(1 - interpolatedTime);
        System.out.println("  v height = " + view.getHeight());
        System.out.println("  v layoutparams = " + view.getLayoutParams().height);
        view.forceLayout();
        view.invalidate();
        view.requestLayout();

    }
}
Run Code Online (Sandbox Code Playgroud)

这是在imadeAdapter的getView方法中,binBtn是您触摸以删除listitem的按钮

      binBtn.setOnTouchListener(new OnTouchListener() {


        @Override
        public boolean onTouch(View v, MotionEvent event) {
            // TODO Auto-generated method stub


                  if (event.getAction() == MotionEvent.ACTION_UP)
                      {

                      View vp = (View) v.getParent();

                SqueezeAnimation ani = new …
Run Code Online (Sandbox Code Playgroud)

android android-animation android-layout

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