在不停止设备声音/音乐的情况下录制视频

杰森·塔马约(Jayson Tamayo)

我正在使用Swift的AVFoundation来捕获iOS中的视频。但是,当我使用Apple Music / Spotify播放歌曲,然后单击我的应用程序的“录制”按钮时,它将暂停/停止音乐,然后录制视频。如何防止这种情况发生?

这是我的代码:

@IBAction func record_video(sender: AnyObject) {
        var initialOutputURL = NSURL(fileURLWithPath: "")

        do
        {
            initialOutputURL = try NSFileManager.defaultManager().URLForDirectory(.DocumentDirectory, inDomain: .UserDomainMask, appropriateForURL: nil, create: true).URLByAppendingPathComponent("output").URLByAppendingPathExtension("mov")
        }catch
        {
            print(error)
        }
        if !isRecording
        {

            isRecording = true
            if let outputs = captureSession.outputs as? [AVCaptureOutput] {
                for output in outputs {
                    captureSession.removeOutput(output)
                }
            }

            do
            {
                try audioSession.setCategory(AVAudioSessionCategoryAmbient)
            }
            catch
            {
                print("Can't Set Audio Session Category: \(error)")
            }
            AVAudioSessionCategoryOptions.MixWithOthers

            do
            {
                try audioSession.setMode(AVAudioSessionModeVideoRecording)
            }
            catch
            {
                print("Can't Set Audio Session Mode: \(error)")
            }
            // Start Session
            do
            {
                try audioSession.setActive(true)
            }
            catch
            {
                print("Can't Start Audio Session: \(error)")
            }


            UIView.animateWithDuration(0.5, delay: 0.0, options: [.Repeat, .Autoreverse, .AllowUserInteraction], animations: { () -> Void in
                self.record.transform = CGAffineTransformMakeScale(0.75, 0.75)
                }, completion: nil)

            let audioInputDevice = AVCaptureDevice.defaultDeviceWithMediaType(AVMediaTypeAudio)
            do
            {
                let audioInput = try AVCaptureDeviceInput(device: audioInputDevice)

                // Add Audio Input
                if captureSession.canAddInput(audioInput)
                {
                    //captureSession.addInput(audioInput)
                }
                else
                {
                    NSLog("Can't Add Audio Input")
                }

            let videoInput: AVCaptureDeviceInput
            do
            {
                videoInput = try AVCaptureDeviceInput(device: captureDevice)

                // Add Video Input
                if captureSession.canAddInput(videoInput)
                {
                    captureSession.addInput(videoInput)
                }
                else
                {
                    NSLog("ERROR: Can't add video input")
                }
            }
            catch let error
            {
                NSLog("ERROR: Getting input device: \(error)")
            }
            videoFileOutput = AVCaptureMovieFileOutput()
            captureSession.addOutput(videoFileOutput)
            captureSession.sessionPreset = AVCaptureSessionPresetHigh
            captureSession.automaticallyConfiguresApplicationAudioSession = false

            videoFileOutput?.startRecordingToOutputFileURL(initialOutputURL, recordingDelegate: self)


            }
            catch let error
            {
                NSLog("Error Getting Input Device: \(error)")
            }

        }
        else
        {
            isRecording = false

            UIView.animateWithDuration(0.5, delay: 0, options: [], animations: { () -> Void in
                self.record.transform = CGAffineTransformMakeScale(1.0, 1.0)
                }, completion: nil)
            record.layer.removeAllAnimations()
            videoFileOutput?.stopRecording()
        }



    }

请注意,我已将其注释掉captureSession.addInput(audioInput)如果删除该代码,则该应用程序可以录制视频,它不会暂停/停止音乐,但视频输出没有声音。有没有解决方法?

杰森·塔马约(Jayson Tamayo)

我设法自己解决了这个问题。该行:AVAudioSessionCategoryOptions.MixWithOthers什么都不做。我将其移至选项:try audioSession.setCategory(AVAudioSessionCategoryPlayAndRecord, withOptions: [AVAudioSessionCategoryOptions.MixWithOthers])

有效!

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在不停止程序的情况下更改参数

来自分类Dev

在不停止错误的情况下运行SQL存储过程

来自分类Dev

在不停止程序的情况下从按键检查字符

来自分类Dev

在不停止ping的情况下ping统计

来自分类Dev

在不停止代码的情况下使用 read() C 函数

来自分类Dev

ScheduledExecutorService,如何在不停止执行程序的情况下停止操作?

来自分类Dev

如何在不停止脚本的情况下从python cmd shell中获取ping输出

来自分类Dev

我如何在不停止将stderr写入终端的情况下复制它?

来自分类Dev

如何在不停止整个代码的情况下使actor跳转?

来自分类Dev

在不停止应用程序的情况下拦截400错误请求

来自分类Dev

如何在不停止流播的情况下保存VoD录像?

来自分类Dev

如何在不停止/退出程序的情况下捕获并打印完整的异常回溯?

来自分类Dev

如何在不停止服务的情况下删除提供服务的软件包?

来自分类Dev

如何在不停止执行的情况下检查键盘输入?

来自分类Dev

Pentaho Kettle-在不停止作业的情况下运行检查数据库连接

来自分类Dev

在kryonet中,如何在不停止程序的情况下与服务器断开连接?

来自分类Dev

是否可以在不停止 cassandra 服务的情况下禁用对 cassandra 的客户端请求(cqlsh)?

来自分类Dev

如何在不停止程序的情况下退出命令行输入使用者?

来自分类Dev

如何在不停止脚本的情况下终止 shell 脚本中的日志记录过程?

来自分类Dev

当开始/停止使用设备的相机应用程序中听到的AVCaptureMovieFileOutput录制视频时播放相同的声音吗?

来自分类Dev

当开始/停止使用设备的相机应用程序中听到的AVCaptureMovieFileOutput录制视频时播放相同的声音吗?

来自分类Dev

iOS:您可以在不显示视频的情况下进行录制吗?

来自分类Dev

asyncio-如何在不停止事件循环的情况下停止(并重新启动)服务器?

来自分类Dev

在使用Swift的情况下,如何让背景音乐继续播放而我的应用仍在播放声音

来自分类Dev

停止录制声音-Java

来自分类Dev

如何在不停止/启动本地LXC容器的情况下重新启动juju守护程序?

来自分类Dev

是否有一些方法/函数可以在不停止当前执行的情况下暂停python?

来自分类Dev

我如何在不停止服务器的情况下使用django应用程序背后的加密功能?

来自分类Dev

是否可以在不停止运行应用程序的情况下重新加载单个更改的Erlang模块?

Related 相关文章

  1. 1

    如何在不停止程序的情况下更改参数

  2. 2

    在不停止错误的情况下运行SQL存储过程

  3. 3

    在不停止程序的情况下从按键检查字符

  4. 4

    在不停止ping的情况下ping统计

  5. 5

    在不停止代码的情况下使用 read() C 函数

  6. 6

    ScheduledExecutorService,如何在不停止执行程序的情况下停止操作?

  7. 7

    如何在不停止脚本的情况下从python cmd shell中获取ping输出

  8. 8

    我如何在不停止将stderr写入终端的情况下复制它?

  9. 9

    如何在不停止整个代码的情况下使actor跳转?

  10. 10

    在不停止应用程序的情况下拦截400错误请求

  11. 11

    如何在不停止流播的情况下保存VoD录像?

  12. 12

    如何在不停止/退出程序的情况下捕获并打印完整的异常回溯?

  13. 13

    如何在不停止服务的情况下删除提供服务的软件包?

  14. 14

    如何在不停止执行的情况下检查键盘输入?

  15. 15

    Pentaho Kettle-在不停止作业的情况下运行检查数据库连接

  16. 16

    在kryonet中,如何在不停止程序的情况下与服务器断开连接?

  17. 17

    是否可以在不停止 cassandra 服务的情况下禁用对 cassandra 的客户端请求(cqlsh)?

  18. 18

    如何在不停止程序的情况下退出命令行输入使用者?

  19. 19

    如何在不停止脚本的情况下终止 shell 脚本中的日志记录过程?

  20. 20

    当开始/停止使用设备的相机应用程序中听到的AVCaptureMovieFileOutput录制视频时播放相同的声音吗?

  21. 21

    当开始/停止使用设备的相机应用程序中听到的AVCaptureMovieFileOutput录制视频时播放相同的声音吗?

  22. 22

    iOS:您可以在不显示视频的情况下进行录制吗?

  23. 23

    asyncio-如何在不停止事件循环的情况下停止(并重新启动)服务器?

  24. 24

    在使用Swift的情况下,如何让背景音乐继续播放而我的应用仍在播放声音

  25. 25

    停止录制声音-Java

  26. 26

    如何在不停止/启动本地LXC容器的情况下重新启动juju守护程序?

  27. 27

    是否有一些方法/函数可以在不停止当前执行的情况下暂停python?

  28. 28

    我如何在不停止服务器的情况下使用django应用程序背后的加密功能?

  29. 29

    是否可以在不停止运行应用程序的情况下重新加载单个更改的Erlang模块?

热门标签

归档