【问题标题】:Everyplay holds my microphone UNITY3D iOSEveryplay 拿着我的麦克风 UNITY3D iOS
【发布时间】:2014-04-17 12:33:32
【问题描述】:

我有一个关于在 iOS 设备上实现 Everyplay Video Recording 的问题。

当我完成录制时出现问题。我去 Everyplay 视频预览,您可以在其中编辑和分享视频。然后,当我点击返回或分享视频后返回我的游戏时,我无法在 Unity 中使用麦克风。

我认为 Everyplay 仍然握着我的麦克风,但我不知道如何释放它。我在 Android 上有相同的实现,它运行良好。我认为问题的存在是因为在 iOS 上,您可以选择使用麦克风或摄像头编辑视频。

有什么想法吗?

【问题讨论】:

  • 如果您在播放器设置中启用“准备 IOS 进行录制”,是否也会发生这种情况?您应该在进入视频编辑器之前停止之前的麦克风实例,并在从编辑器返回并再次需要它时初始化一个新实例。
  • 感谢您的快速回复。 “准备 iOS 进行录制”已启用。我在完成视频录制之前停止了麦克风,并等待 2 秒后回到我的游戏,然后再次启动麦克风,但问题仍然存在。

标签: ios unity3d everyplay


【解决方案1】:

我无法在 iOS7 上复制您的问题。但是,iOS6 上确实存在该问题。我做了一个小技巧,似乎可以在我的设备上修复它。

EveryplayMicHack.cs(将其复制到 Plugins/Everyplay/Scripts 文件夹):

using UnityEngine;
using System.Runtime.InteropServices;

public class EveryplayMicHack {
    public static void EnableRecording() {
#if UNITY_IPHONE && !UNITY_EDITOR
        SetPreferredSampleRate(AudioSettings.outputSampleRate);
#endif
    }

#if UNITY_IPHONE && !UNITY_EDITOR
    [DllImport ("__Internal")]
    private static extern void SetPreferredSampleRate(int sampleRate);
#endif
}

EveryplayMicHack.h(复制到 Plugins/iOS 文件夹)

#import <AVFoundation/AVFoundation.h>

void SetPreferredSampleRate(int sampleRate);

EveryplayMicHack.m(复制到 Plugins/iOS 文件夹)

#import "EveryplayMicHack.h"

void SetPreferredSampleRate(int sampleRate) {
    AVAudioSession *audioSession = [AVAudioSession sharedInstance];
    [audioSession setPreferredHardwareSampleRate:sampleRate error:nil];
}

在初始化麦克风之前,调用:EveryplayMicHack.EnableRecording();

// Something like this
EveryplayMicHack.EnableRecording();

myMicAudioSource.clip = null;
myMicAudioSource.clip = Microphone.Start("Built-in Microphone", ...

我希望它也对你有用! :)

【讨论】:

  • 感谢您帮助我解决此问题。这个修复对我有用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-05
  • 1970-01-01
  • 1970-01-01
  • 2014-05-01
  • 1970-01-01
  • 2019-12-26
相关资源
最近更新 更多