Kakao i Connect Live 커뮤니티

Record 기능 관련 질문 입니다

RemoteMonster 2.7.2
Xcode 11.4.1

startDump를 하고 stopDump를 했을 때 aecdump 파일이 저장되는 경로가 어디인가요?
그리고 unpackAecDump를 한 후에 언팩된 파일은 또 어느 경로에 저장되는지 궁금합니다.

document에 있는대로 unpackAecDump 함수를 사용해보고 있는데,

State : 0
start unpack -  1589790418.092314
(lldb) 

0은 REMON_AECUNPACK_STATE에서 start 였습니다.

이렇게 로그가 찍히고 앱이 죽어버리네요. 실제 사용한 코드는 아래 입니다.

self.remonCall.unpackAecDump(dumpName: "test.aecdump", resultFileName: "resultFile.m4a") { (error, state) in
                    if let error = error
                    {
                        print("Fail to unpack. Error : \(error.localizedDescription)")
                    }
                    else
                    {
                        print("State : \(state.rawValue)")
                        if state == .COMPLTE
                        {
                            if let fileUrl = Bundle.main.url(forResource: "resultFile", withExtension: "m4a")
                            {
                                let fileData: Data?
                                do {
                                    fileData = try Data.init(contentsOf: fileUrl)
                                } catch {
                                    fileData = nil
                                }
                                print("FileData is nil? \(fileData == nil)")
                            }
                        }
                    }
                }

안녕하세요.

aec 파일이 생성되는 위치는 앱의 Documents 폴더입니다.
aec 파일은 정상 생성되나 해당 파일을 unpack 하는 경우 정상적으로 변환되지 않아
resultFile이 생성되지 않는 이슈가 확인되었습니다.

해당 이슈는 수정후 다시 답변 드리도록 하겠습니다.

AEC 파일 변환 관련 루틴이 수정된 iOS SDK v2.7.5 버전이 배포되었습니다.
해당 버전의 sdk 를 사용해 변환 여부를 확인해 보시기 바랍니다.

참고로 self.remonCall.unpackAecDump() 메쏘드가 static 형식으로 변환되었으니
RemonClient.unpackAecDump() 로 이용하실 수 있습니다.

감사합니다.

빠른 피드백 감사합니다. 2.7.5 버전 사용해보았습니다.

RemonClient.unpackAecDump(dumpName: "test.aecdump", resultFileName: "recording.m4a") { (error, state) in
            
            if let error = error
            {
                print("Unpack Error : \(error.localizedDescription)")
            }
            else
            {
                print("State : \(state.rawValue)")
                if state == .COMPLTE
                {
                    self.sendRecordingFile()
                }
            }
        }

이렇게 코드를 수정해보았는데,

[RemonClientController.onClose] type=0
State : 0
[aecunpack] start unpack -  1590134607161
[aecunpack] event type is CONFIG
[aecunpack] event type is INIT
[aecunpack] event type is INIT
[aecunpack] 작업을 완료할 수 없습니다.(SwiftProtobuf.BinaryDecodingError 오류 1.)
[aecunpack] 작업을 완료할 수 없습니다.(SwiftProtobuf.BinaryDecodingError 오류 3.)
[aecunpack] 작업을 완료할 수 없습니다.(SwiftProtobuf.BinaryDecodingError 오류 3.)
[aecunpack] 작업을 완료할 수 없습니다.(SwiftProtobuf.BinaryDecodingError 오류 4.)
DEBUG - NOOP
Error Domain=AVFoundationErrorDomain Code=-11800 "작업을 완료할 수 없음" UserInfo={NSLocalizedFailureReason=알 수 없는 오류 발생(-12780), NSLocalizedDescription=작업을 완료할 수 없음, NSUnderlyingError=0x283683630 {Error Domain=NSOSStatusErrorDomain Code=-12780 "(null)"}}
Unpack Error : 작업을 완료할 수 없음
end unpack -  35
[RemonViewManager.dettachRTCView]
[RemonStatistics.deinit]
[RemonViewManager.deinit]
[Remon.deinit]
[PeerConnectionManager.deinit]

이런식으로 에러가 발생하고 있습니다. 제가 잘 못 구현한건지… 확인 부탁드립니다!

[RemonClientController.onClose] type=0
State : 0
[aecunpack] start unpack -  1590134943111
[aecunpack] event type is CONFIG
[aecunpack] event type is INIT
[aecunpack] event type is INIT
[aecunpack] 작업을 완료할 수 없습니다.(SwiftProtobuf.BinaryDecodingError 오류 1.)
[aecunpack] 작업을 완료할 수 없습니다.(SwiftProtobuf.BinaryDecodingError 오류 4.)
DEBUG - NOOP
Error Domain=AVFoundationErrorDomain Code=-11800 "작업을 완료할 수 없음" UserInfo={NSLocalizedFailureReason=알 수 없는 오류 발생(-12780), NSLocalizedDescription=작업을 완료할 수 없음, NSUnderlyingError=0x2834507e0 {Error Domain=NSOSStatusErrorDomain Code=-12780 "(null)"}}
Unpack Error : 작업을 완료할 수 없음
end unpack -  37
[RemonViewManager.dettachRTCView]
[RemonStatistics.deinit]
[RemonViewManager.deinit]
[Remon.deinit]
[PeerConnectionManager.deinit]

앱 삭제 후에 다시 시도해보니 이런 로그도 찍혔습니다.

저희쪽 로그상 디버그 모드의 경우 아래와 같이 path를 출력하도록 했는데,
해당 로그가 안보이는게 이상하네요.

[aecunpack] start unpack - 1590137136528
[aecunpack] path - /var/mobile/Containers/Data/Application/id/Documents/aecdump
[aecunpack] event type is CONFIG
[aecunpack] event type is INIT
[RemonRestManager.sendLog] response=status: 200, error: nil
ExportPreset : AVAssetExportPreset1920x1080
ExportPreset : AVAssetExportPresetLowQuality
ExportPreset : AVAssetExportPresetHEVC1920x1080WithAlpha
ExportPreset : AVAssetExportPresetAppleM4A
ExportPreset : AVAssetExportPresetHEVCHighestQuality
ExportPreset : AVAssetExportPreset640x480
ExportPreset : AVAssetExportPreset3840x2160
.
.

startDump, stopDump 및 dump 파일명을 동일하게 맞추신게 맞다면 구현이 잘못된것
같진 않습니다.

혹시 모르니 sdk 캐시 자체를 삭제하고 다시 받아 실행해 보셨으면 합니다.

아래 폴더 제거 (코코아팟 캐쉬삭제)
~/Library/Caches/CocoaPods/Pods/Release/RemoteMonster

다시 프로젝트로 돌아와서
*.xcworkspace, Podfile.lock ,Pods 폴더 삭제

pod install

감사합니다.

1 Like

말씀하신대로 다시 pod install 진행하니 unpack 잘 되고 있습니다. 감사합니다!

1 Like