После добавления звуковой дорожки (записанной с помощью AVAudioRecorder) к композиции AVPlayer не будет воспроизводить ее.AVPlayer.status = 1 и AVPlayer.error = null.
Я посмотрел демонстрационный код WWDC10 AVEdit, и он во многом похож.Может ли это быть несовместимостью аудиоформатов?
исходная композиция уже содержит видео и аудиодорожку из видеоустройства.
после удаления вновь добавленной звуковой дорожки проигрыватель по-прежнему не воспроизводится после удаленияоригинальная звуковая дорожка, которую проигрыватель будет воспроизводить.
Мне также трудно получить отладочную информацию, которая укажет мне на проблему.Если у кого-нибудь есть предложение, оно будет с благодарностью.
Вот мой код для добавления звуковой дорожки
любая помощь приветствуется
Жан-Пьер
-(void)editAudioViewController:(EditAudioViewController *)editAudioViewController didEditAudio:(NSURL *)url
{
[self dismissModalViewControllerAnimated:TRUE];
BOOL result;
NSError * error = nil;
if (url)
{
AVURLAsset * asset = [AVURLAsset URLAssetWithURL:url options:nil] ;
CMTimeRange audioTimeRange = CMTimeRangeMake(kCMTimeZero , asset.duration);
if (CMTIME_COMPARE_INLINE(CMTimeRangeGetEnd(audioTimeRange), >, [composition duration]))
audioTimeRange.duration = CMTimeSubtract([composition duration], audioTimeRange.start);
AVMutableCompositionTrack *compositionAudioTrack = [composition addMutableTrackWithMediaType:AVMediaTypeAudio
preferredTrackID:kCMPersistentTrackID_Invalid];
AVAssetTrack *audioTrack = [asset compatibleTrackForCompositionTrack:compositionAudioTrack];
result = [compositionAudioTrack insertTimeRange:CMTimeRangeMake(kCMTimeZero, audioTimeRange.duration) ofTrack:audioTrack atTime:audioTimeRange.start error:&error];
if (!result)
{
NSLog(@"%@", [error description]);
}
[mp replaceCurrentItemWithPlayerItem:[AVPlayerItem playerItemWithAsset:composition]];
[mp seekToTime:kCMTimeZero];
}
}