2017-12-14 7 views
1

기본적으로 AVAsset 개의 파일을 연결하려고합니다. 내가해야 할 일에 대한 대략적인 아이디어가 있지만 오디오 파일을로드하는 데 어려움을 겪고 있습니다.AVAsset 트랙이 비어 있습니다.

AVAudioPlayer으로 파일을 재생할 수 있습니다. 터미널에서 파일을 볼 수 있지만 AVAssetURL으로로드하려고하면 항상 트랙에 대해 빈 배열이 반환됩니다.

내가 사용 URL :

NSURL *firstAudioFileLocation = [NSURL fileURLWithPath:[NSString stringWithFormat:@"%@%@", workingDirectory , @"/temp.pcm"]]; 

결과 : 자산이로드

file:///Users/evolve/Library/Developer/CoreSimulator/Devices/8BF465E8-321C-47E6-BF2E-049C5E900F3C/data/Containers/Data/Application/4A2D29B2-E5B4-4D07-AE6B-1DD15F5E59A3/Documents/temp.pcm 



:

AVAsset *test = [AVURLAsset URLAssetWithURL:firstAudioFileLocation options:nil]; 

을하지만이를 호출 할 때 :

NSLog(@" total tracks %@", test.tracks); 

출력 내용은 항상 total tracks()입니다.

AVMutableCompositionTrack에 추가하려는 이후에 AVAsset이 올바르게로드되지 않은 것처럼 보이기 때문에 앱을 종료하게됩니다.

NSURL *alternativeLocation = [[NSBundle mainBundle] URLForResource:@"temp" withExtension:@"pcm"]; 

을뿐만 아니라 문서에서 옵션을 AVAsset를로드하려고 :

NSDictionary *assetOptions = @{AVURLAssetPreferPreciseDurationAndTimingKey: @YES}; 





I는 다음과 같은 자산을로드하기 위해 다른 변화와 함께 연주했다 로컬 리소스에서 트랙을로드하려면 어떻게해야합니까? AVAudioRecorder에 의해 ated?

편집

나는 주위에 포크를했고 내가 기록하고 .CAF 파일 확장자를로드 할 수 있습니다 발견했다.

.PCM은 AVAsset에는 지원되지 않지만이 페이지 또한 큰 도움이되었습니다. https://developer.apple.com/documentation/avfoundation/avfiletype

답변

2

AVAsset로드는 즉각적인 것이 아닙니다. 데이터가 사용 가능할 때까지 기다려야합니다. 예 :

AVAsset *test = [AVURLAsset URLAssetWithURL:firstAudioFileLocation options:nil]; 
[test loadValuesAsynchronouslyForKeys:@[@"playable",@"tracks"] completionHandler:^{ 

    // Now tracks is available 
    NSLog(@" total tracks %@", test.tracks); 
}]; 

자세한 예제는 in the documentation입니다.

+0

이것은 방대한 도움이되었지만 여전히 빈 배열을 반환합니다. AVKeyValueStatus를 사용하여 그것을 조사한 후 선형 PCM이 AVAsset에 대해 지원되지 않습니다. 내가 오해하고 구성을 위해 지원되는 유형 목록이 있습니까? – Smallbro

+0

.pcm 파일이 원시 파일입니까? 지원되는 형식이 아닙니다 (이상하게도), wav 헤더를 붙이면 작동 할 것입니다. –

관련 문제