2014-04-17 4 views
2

iOS 장비의 Everyplay Video Recording 구현과 관련하여 질문이 하나 있습니다.Everyplay my microphone UNITY3D iOS

녹음을 마치면 문제가 발생합니다. Everyplay 비디오 미리보기로 이동하여 비디오를 편집하고 공유 할 수 있습니다. 그런 다음 비디오를 클릭하거나 뒤로 클릭 할 때 게임으로 돌아갈 때 Unity에서 마이크를 사용할 수 없습니다.

Everyplay는 여전히 내 마이크를 보유하고 있다고 생각하지만 출시 방법을 모르겠습니다. Android에서 동일한 구현이 있으며 완벽하게 작동합니다. iOS에서는 마이크 또는 카메라를 사용하여 비디오를 편집 할 수있는 옵션이 있기 때문에 문제가 있다고 생각합니다.

의견이 있으십니까?

+0

플레이어 설정에서 "녹음을 위해 IOS 준비"를 활성화 한 경우에도 이런 현상이 발생합니까? 비디오 편집기에 들어가기 전에 이전 마이크 인스턴스를 중지하고 편집기에서 돌아와 다시 필요할 때 새 마이크 인스턴스를 초기화해야합니다. –

+0

빠른 답장을 보내 주셔서 감사합니다. "녹음 할 iOS 준비"가 사용됩니다. 비디오 녹화가 끝나기 전에 마이크를 멈추고 있습니다. 마이크를 다시 시작하기 전에 게임을 다시 시작할 때까지 2 초 정도 기다렸지 만 문제는 여전히 있습니다. – Dookeybre

답변

0

iOS7에서 문제를 재현 할 수 없습니다. 그러나 문제는 iOS6에 존재했습니다. 내 장치에서 문제를 해결하는 작은 해킹을 만들었습니다.

EveryplayMicHack.cs (플러그인/Everyplay/스크립트 폴더에이 복사) : (플러그인/iOS의 폴더에이 복사)

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

#import <AVFoundation/AVFoundation.h> 

void SetPreferredSampleRate(int sampleRate); 

EveryplayMicHack.m (플러그인/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", ... 

나는 너에게도 효과가 있기를 바랍니다. :)

+0

이 문제를 해결할 수 있도록 도와 주셔서 감사합니다. 이 수정 프로그램은 저에게 효과적이었습니다. – Dookeybre