Pergunta

Preciso construir algo que comece a servir um vídeo codificado H.264 para um flash player no meio do arquivo (para suportar o salto para um ponto do vídeo que ainda não foi armazenado em buffer).

Atualmente, os vídeos estão no formato contêiner FLV, mas a transcodificação é uma opção.Consegui reescrever o cabeçalho do arquivo e as informações de metadados para um determinado deslocamento de bytes.Isso funciona para vídeos mais antigos, mas não para arquivos codificados em H.264.Suspeito que isso ocorra porque as tags de vídeo dentro do arquivo também precisam ser alteradas, o que não é viável (seria necessário muito poder de processamento).

Qual é a maneira "correta" de fazer isso?

Foi útil?

Solução

O flash player só pode começar a reproduzir vídeo H.264 depois de baixar o átomo MOOV.Os provedores de pseudo-streaming existentes apenas fornecem um cabeçalho FLV - os primeiros 13 bytes do arquivo ou um cabeçalho codificado - e depois veiculam o arquivo a partir do deslocamento fornecido.Se você quiser criar um pseudo-streamer H.264, precisará fazer com que ele produza o cabeçalho FLV, depois um átomo MOOV e, em seguida, sirva o restante do arquivo a partir do deslocamento fornecido.Se você não usar um contêiner FLV, não precisará do cabeçalho FLV, mas ainda precisará do átomo MOOV.

Infelizmente, não acho que você conseguirá usar o átomo MOOV do arquivo no disco;as informações que ele contém não serão adequadas para o fragmento de arquivo que você veicula.Portanto, você teria que analisar o átomo existente e gerar um próprio que fosse apropriado para a parte servida do arquivo.

Se houver estruturas complicadas no arquivo H.264, poderá ser ainda mais complicado fazer o pseudo-stream.Se a análise do arquivo não for viável, infelizmente você não conseguirá pseudo-transmitir sua mídia.

Outras dicas

@yoavf - Acho que o OP está interessado nos aspectos do servidor de streaming h.264 sob demanda dentro de arquivos FLV.Reutilizar jogadores existentes seria bom para ele, eu acho.Ou talvez sejam minhas próprias necessidades aparecendo?<:S

Do segundo link do yoavf, há outro link para o do Tinic Uro O que aconteceu com o vídeo na web? .Uma citação relevante:

Será possível colocar fluxos H.264 na estrutura tradicional de arquivos FLV?Sim, mas encorajamos fortemente todos a adotarem o novo formato de arquivo padrão.Existem limites funcionais com a estrutura FLV ao transmitir H.264 que não poderíamos superar sem uma reformulação do formato de arquivo.Esse é um dos motivos pelos quais estamos nos afastando da estrutura tradicional de arquivos FLV.Lidar especificamente com cabeçalhos e finalizadores de sequência é complicado com fluxos FLV.

Então, parece que é possível mexer na codificação ffmpeg (se é assim que você está obtendo seus FLVs, como eu) ou pode entrar no novo formato.Hummm....

duas coisas que você pode fazer:

1) use lighttpd e seu plug-in de streaming mp4 que gerará o contêiner de streaming necessário instantaneamente

2) crie um FLV com quadro-chave e use um script psuedo-streaming (como XMOOV) para transmitir seu arquivo.

se você precisar de mp4/aac, basta colocá-los dentro do contêiner FLV, para desgosto da Adobe, mas funciona.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top