允许在录制视频时播放音乐,就像 Snapchat iOS 应用程序一样。

9

首先,我想讨论一下snapchat中发生的情况。

在snapchat中,当您开始录制视频并且背景音乐正在播放时,它允许在录制视频时继续播放该歌曲,并且在录制完视频后,您也可以在背景中听到该歌曲。

我正在使用SCRecorder来记录视频并使用自定义布局捕获图像。现在,我想做与上述情况类似的事情,但问题是每当我在后台开始录制视频时,歌曲就停止播放了。

SCRecorder使用AVCaptureSession来记录视频。

那么我该如何解决这两个问题:

  1. 允许在使用SCRecorder录制视频时播放背景音乐。
  2. 在视频中记录正在播放的背景音乐。

你解决了SCRecorder的问题吗?我也在做同样的事情,并且能够在后台播放音乐。但我的问题是当我打开/关闭应用程序时,音乐会停止一秒钟,然后自动重新启动。虽然我不想让音乐停止哪怕一秒钟。 - Surjeet Singh
没有@Surjeet。我还在寻找答案。如果你找到了什么,请告诉我。 - KDeogharkar
是的,我已经完成了这个任务,并允许同时录制和播放背景音乐。但是它会给我1秒钟的暂停并自动重新启动。如果你也需要同样的功能,我可以帮助你。 - Surjeet Singh
是的,请将其作为答案添加在这里。这对其他人有帮助,也许有人可以解决1秒钟的保持问题。@Surjeet - KDeogharkar
1个回答

17

这里是我使用SCRecorder库允许播放背景音乐的代码。希望这对你也有所帮助。

将以下代码写入您的AppDelegate类中的didFinishLaunchingWithOptions方法中 -

AVAudioSession *session = [AVAudioSession sharedInstance];
    [session setCategory:AVAudioSessionCategoryPlayAndRecord  withOptions:AVAudioSessionCategoryOptionMixWithOthers|AVAudioSessionCategoryOptionDefaultToSpeaker|AVAudioSessionCategoryOptionAllowBluetooth error:nil];

    [session setActive:YES error:nil];

    [[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
prepare 方法中,在初始化 AVCaptureSession 之后,在 SCRecorder 库的 'SCRecorder.m' 文件中编写以下行。
session.automaticallyConfiguresApplicationAudioSession = NO;
如果您不是 SCRecorder 库用户,那么请在您的类中初始化 AVCaptureSession 后写入上述代码。

最佳答案在这里!在iOS10上运行良好。想要了解为什么"[ [UIApplication sharedApplication] beginReceivingRemoteControlEvents];"以及远程控制事件的重要性。 - philouuuu
我使用了上面提供的相同方法。它允许背景音乐播放,但现在我的相机卡住了。现在是完全的黑屏。 - Aman Gupta
@AmanGupta 请确保您没有再次使用其他配置覆盖了AudioSession。 - Surjeet Singh
当打开/关闭应用程序时,这会导致音乐短暂卡顿。是否有一种方法可以延迟音频会话的激活(和短暂的卡顿),仅在启动录制时“按需”运行?我已经在SO上创建了一个问题:https://dev59.com/S8Dqa4cB1Zd3GeqPoOzb - mrousavy
要在需要时使用这个功能,只需调用以上行中的函数,而不是didFinishLaunchingWithOptions。 - Surjeet Singh
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接