iOS Vid, e o: Mais de 4 AVAssetReaders simultâneos possíveis?

Gostaria de renderizar vários vídeos H264 mp4 em várias visualizações ao mesmo tempo. O objetivo é ler cerca de 8 vídeos curtos, cada um com tamanho de 100x100 pixels e permitir que eles exibam seu conteúdo em várias posições na tela simultaneamente.

Imagine 24 quadrados na tela, cada um mostrando um vídeo de um conjunto de 8 vídeo

@MoviePlayer não funciona, pois mostra apenas um vídeo em tela cheia. Um AVPlayer com vários AVPlayerLayers é limitado, porque apenasA camada criada mais recentemente mostrará seu conteúdo na tela (de acordo com a documentação e meus testes

ntão, eu escrevi uma curta aula de vídeo e criei uma instância para cada arquivo .mp4 no meu pacote, usando AVAssetReader para ler o conteúdo. Na atualização, todos os vídeos são recuperados, convertidos em uma UIImage e exibidos, de acordo com a taxa de quadros do vídeo. Além disso, essas imagens são armazenadas em cache para um acesso rápido ao loo

- (id) initWithAsset:(AVURLAsset*)asset withTrack:(AVAssetTrack*)track
{
    self = [super init];
    if (self)
    {
        NSDictionary* settings = [NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithInt:kCVPixelFormatType_32BGRA], (NSString*)kCVPixelBufferPixelFormatTypeKey, nil];

        mOutput = [[AVAssetReaderTrackOutput alloc] initWithTrack:track outputSettings:settings];
        mReader = [[AVAssetReader alloc] initWithAsset:asset error:nil];

        [mReader addOutput:mOutput];

        BOOL status = [mReader startReading];
    }

    return self;
}


- (void) update:(double)elapsed
{
  CMSampleBufferRef buffer = [mOutput copyNextSampleBuffer];

  if (buffer) 
  {
    UIImage* image = [self imageFromSampleBuffer:sampleBuffer];
  }

  [...]
}

Na verdade, isso funciona muito bem, mas apenas para 4 vídeos. O quinto nunca aparece. Primeiro pensei em problemas de memória, mas testei nos seguintes dispositivos:

iPhone 3GSiPhone 4 iPadIpad

Eu tive o mesmo comportamento em cada dispositivo: 4 vídeos sendo reproduzidos em um loop suave, sem diferença

Se tivesse sido um problema de memória, esperaria que pelo menos o iPad 2 mostrasse 5 ou 6 vídeos (devido ao seu melhor hardware) ou o 3GS mostrasse apenas 1 ou uma falha em algum lugar.

O simulador mostra todos os vídeo

A depuração no dispositivo mostra que

BOOL status = [mReader startReading]; 

retorna falso para o vídeo 5,6,7 e 8.

Então, existe algum tipo de configuração (ou restrição) de hardware que não permite mais do que 4 AVAssetReaders simultâneos? Porque, eu realmente não posso explicar esse comportamento. Não acho que todos os dispositivos tenham exatamente a mesma quantidade de memória de víde

questionAnswers(3)

yourAnswerToTheQuestion