Ответ 1
У меня тоже была эта проблема, а затем поняла, что я не вызываю endSessionAtSourceTime: после запуска. Это разрешило мою проблему.
Кажется, что finishWriting нарушается на симуляторе iOS 6 - он висит навсегда. Теперь он устарел и заменен новым finalWritingWithCompletionHandler: - который также никогда не вызывает обработчик.
На реальных устройствах под управлением iOS 6 это работает отлично, как всегда. Также в предыдущих симуляторах iOS он работает отлично. Похоже на ошибку в симуляторе iOS 6.
Кто-нибудь еще испытывает это или может доказать, что я не прав?
У меня тоже была эта проблема, а затем поняла, что я не вызываю endSessionAtSourceTime: после запуска. Это разрешило мою проблему.
Хорошо нашел работу на Симуляторе.
Похоже, что стоп блокирует поток обработки видео, поэтому обходным путем является вызов stop в основном потоке:
// in iOS6 Simulator this blocks the video processing thread call back in UI thread.
// BOOL stop = [assetWriter finishWriting];
[self performSelectorOnMainThread:@selector(stopInOtherThread) withObject:nil];
-(void)stopInOtherThread{
//Stop doesn't block in MainThread
BOOL stop = [assetWriter finishWriting];
NSLog(@" assetWriter finishWriting :%d",stop);
}
Это обходное решение, похоже, не работает для finishWritingWithCompletionHandler
Я попытаюсь посмотреть, могу ли я поднять ошибку на Apple.