Pergunta

Então ...

Eu tenho dados de vídeo H.264 RAW capturados via RTSP em um arquivo local e estou tentando reproduzir o vídeo em um aplicativo Java FX. Para fazer isso, preciso usar streaming ao vivo HTTP.

Eu prototipei com sucesso uma arquitetura Java FX que pode reproduzir um vídeo via HLS com um servidor local usando uma pasta local contendo um arquivo .m3u8 (hls index) e coleção de arquivos .TS (MPEG-TS). A última peça para mim é substituir os arquivos .ts com arquivos .264 / .h264 e no servidor local, execute a conversão / embalagem dos dados do anexo H.264 em MPEG-TS.

Estou com dificuldade em descobrir o que é necessário para obter H.264 Anexo B em MPEG-TS. Eu encontrei as seguintes informações ...

.

"O anexo B é comumente usado em formatos ao vivo e de streaming, como Transporte ... "

szatmary.org/blog/25

"Anexo B do documento especifica um desses formatos, que envolve Nal unidades em um formato que se assemelham a um elementar tradicional de vídeo MPEG fluxo, tornando-o adequado para uso com recipientes como MPEG PS / Ts incapazes de fornecer o enquadramento necessário ... "

wiki.multimedia.cx/?title=h.264

"Java FX suporta vários tipos de mídia diferentes. Um tipo de mídia é considerada a combinação de um formato de contêiner e um ou mais codificações. Em alguns casos, o formato de contêiner pode ser simplesmente um fluxo elementar contendo os dados codificados. "

docs.oracle.com/javafx/2/api/javafx/scene/media/package-summary.html

"Use o atributo CODECS da etiqueta EXT-X-Stream-Inf. Quando este Atributo está presente, deve incluir todos os codecs e perfis necessários para reproduzir o fluxo ... "

developer.apple.com/library/ios/documentation/networkinginternet/conceptive/streamingmediaguide/frequlykedQuestions/frequlyaskedQuestions.html

Parece que estou perdendo algo simples em meio de fluxos elementares e de transporte. Eu usei o FFMPEG para converter meu arquivo H.264 em um arquivo TS e tentar entender as diferenças. Eu tenho uma ideia das diferenças de formato aproximado, mas ainda estou faltando nos detalhes para fazer isso. Alguém tem um link mostrando isso ou sabe algo simples sobre como servir os dados de H.264 Anexo B sobre MPEG-TS?

Eu não estou procurando usar uma ferramenta, preciso ter um formato de arquivo personalizado localmente, onde eu parse os dados do H.264 Anexo B e execute a alteração do formato na memória, na mosca. Eu conheço uma maneira de usar ffmpeg com tubos para realizar isso, mas eu não quero ter nenhuma dependência e desempenho é importante.

Foi útil?

Solução

Não é uma mudança de formato.É um recipiente.Não há necessidade de analisar o Anexo B para gravá-lo em um arquivo TS.O TS envolve um PES que envolve um fluxo de anexo B.O formato MPEGTS é bastante complexo, especialmente sem uma biblioteca de terceiros.O código TS eu escrevi e uso no trabalho é de cerca de 1000 linhas de C ++.

Escreva o código TS, comece tentando ler um arquivo TS usando um editor HEX e referenciando a documentação da Wikipedia.O livro vídeo desmiystified também tem uma boa documentação.

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